Project 2: Changes and Clarifications
For the Fanorona game, there are a few things that I’d like to have added in. (These should be part of the 3rd sprint). Some of these have been alluded to earlier, some are new:
1) First, I’d like you to handle a wider variety of board sizes. Here is how this will work:
a. The board size will be given as columns x rows. The “standard” Fanorona board is 9x5 (but 5x5 and 3x3 boards are also well-defined).
b. The numbers of columns and rows will be odd numbers no smaller than 1 or greater than 13.
c. Number the rows from 1 at the bottom to r at the top, and the columns from 1 at the left and c at the right.
d. The bottom rows will be all white, the top rows will be all black. Row will alternate white and black, with black being in column 1, white in column 2, etc. The middle space should be skipped. Note that the board will be symmetric for black and white.
e. Regarding connectivity:
i. All positions will be connected to those immediately above and below, and to the right and left.
ii. The middle position will be connected diagonally, and those positions will also be connected diagonally, etc.
iii. So, for any diagonally connected position, the ones above, below, left, and right will NOT be connected diagonally. For any position not connected diagonally, those positions above, below, left, and right WILL be connected diagonally.
2) Related to this, I’d like to change the tie game condition. A game can last for no more than 10*r moves, total, and if neither side has won at that point, a tie is declared. Thus 5x5, 9x5, 11x5, etc. boards would allow games of up to 50 moves, while a 13x3 board could have at most 30 moves. A 3x13 board, however, could have up to 130 moves!
3) We also want to implement a time limit. That is, you should allow people, if desired, to set a time limit for how soon a move must be made. If a player does not make the move in that time, then that player loses. Time can be specified as a number of milliseconds.
4) Finally, we will add one new game rule! In addition to the capture moves and paika (non-capture) move, we will allow a player to make a “Sacrifice” move. Here is how this works, assuming it is White’s move:
a. A sacrifice move can be made in place of a capture/paika move. That is, you can sacrifice instead of capturing (unlike with the paika move)
b. White designates one White piece to be sacrificed. This counts as White’s move for the turn (it cannot be done in combination with capture or paika moves).
c. The piece that White designated remains on the board for the next move by Black.
d. The sacrificed piece acts as a block. It cannot be captured, and it blocks any capture moves toward or away from it by Black. Several examples are given below.
e. Just before White’s next move, the sacrificed piece is removed from the board.
Examples (a 5x5 board is used for illustration):
Now, on Black’s move, moving from (3,2) to (2,2) would be a Paika (non-capturing) move, NOT a Withdrawal capture (see left example, below). Similarly, moving from (2,4) to (3,3) would be a Paika move, not an advance capture (see middle move, below). Neither of these moves would be allowed, since capture moves are still possible. An advance capture from (4,5) to (4,4) (see right side, below) would still be a capture, but the capture would stop at the sacrificed piece. Note that black could continue by withdrawing to (3,5) (capturing one more piece), or alternatively could have advanced from (2,3) to (3,3), capturing two white pieces.
Just before White’s turn, then, the sacrificed piece would be removed, leaving the following boards (corresponding to the example move by Black at right, above) with it now White’s turn to move: