public class Chess
- extends java.lang.Object
I have thought up many variations of the game CHESS.
In the most interesting variations, pieces gain or lose moves depending on which other pieces they are pointing at.
For example, in a normal setup of pieces when a chess game starts,
all 4 rooks are pointing at ally knights and ally pawns, therefore the rooks could move like a knight or pawn..
Any rook could jump by using its knight moves and land in front of an ally pawn.
Because 2 pawns are pointed at the rook now, they can attack forward at the enemy pawns far in front,
however the rook that moved is stuck with only pawn moves because if you gain moves of any other piece,
you lose your own moves. If a piece does not point at any ally pieces, it can only move like it could in standard chess.
There are many variations of chess. They should be coded as many rules to be used in any combination.
Select a small number of rules and play a chess-like game by those rules.
A chess board is a CS whose countP() is 64. I dont know how rectangle or non-cartesian board shapes will be represented.
ONE POSSIBLE WAY THE GAME COULD BE CODED...
A chess board is a CS with exactly 64 child CSs.
Each child is a white piece, an empty square, or a black piece.
Each piece (or empty square) receives the chess board into P(0),
and creates copies of the board modified with possible moves from this piece, in P(1) P(2) P(3)...
For example, at game start: list#chessBoard(...8 good pieces...
pawn0 pawn1 pawn2(chessBoard chessBoardWithThisPawnForward1Square chessBoardWithThisPawnForward2Squares) pawn3...
many empty squares... 8 enemy pawns... 8 good enemy pieces)
You can only select 1 modification of the board per turn,
but each chess piece creates 0 or more possible actions for you to choose.
For example, to move a pawn forward 2 squares, you would replace the chessBoard object
with chessBoardWithThisPawnForward2Squares (from the code above).
Next move, you would look at the 64 CSs inside chessBoardWithThisPawnForward2Squares
to determine which moves you may do.
|Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait