chessai
college code for ai playing chess in java
git clone https://9o.is/git/chessai.git
commit 0832d5fad12dbf7bb80cf3d7dba5285e5df03ced parent f6e3c5283f8ce218a18f211fdfe3e97e22c238d1 Author: Jul <jul@9o.is> Date: Thu, 6 Dec 2012 14:19:38 -0500 Pawn can now capture diagonally and can start with 2 steps forward Diffstat:
| M | src/main/java/chess/ChessRules.java | | | 33 | +++++++++++++++++++++++++++------ |
1 file changed, 27 insertions(+), 6 deletions(-)
diff --git a/src/main/java/chess/ChessRules.java b/src/main/java/chess/ChessRules.java @@ -21,6 +21,8 @@ public enum ChessRules { private ChessPiece destPiece; private ChessType srcType; + private boolean pawnCanDoubleMove = true; + private boolean log = true; public void setState(ChessState state) { @@ -197,13 +199,26 @@ public enum ChessRules { return true; } + /* + * Pawns can also move 2 spaces on first turn + * Pawns can also capture en passant + * Still functional without these features though + */ private boolean validPawnMove(){ if(srcType==ChessType.PAWN){ //Pawn move up one if (srcPiece.getColor() == ChessColor.WHITE){ + if(src.getRank()+2 == dest.getRank() && + src.getFile() == dest.getFile() && + pawnCanDoubleMove) { + return true; + } + if(src.getRank()+1 == dest.getRank() && src.getFile() == dest.getFile()){ + + pawnCanDoubleMove = false; return true; } @@ -212,27 +227,33 @@ public enum ChessRules { Math.abs(src.getFile()-dest.getFile()) == 1 && srcPiece.getColor() != destPiece.getColor() && destPiece != ChessPiece.NA) { + pawnCanDoubleMove = false; return true; } } else { + if(src.getRank() == dest.getRank()+2 && + src.getFile() == dest.getFile() && + pawnCanDoubleMove) { + return true; + } + if(src.getRank() == dest.getRank()+1 && src.getFile() == dest.getFile()) { + + pawnCanDoubleMove = false; return true; } //Pawn capture - if(src.getRank()+1 == dest.getRank()+1 && + if(src.getRank() == dest.getRank()+1 && Math.abs(src.getFile()-dest.getFile()) == 1 && srcPiece.getColor() != destPiece.getColor() && destPiece != ChessPiece.NA){ + pawnCanDoubleMove = false; return true; } } - //System.out.println("Pawn Cannot Capture"); - /*Pawns can also move 2 spaces on first turn - *Pawns can also capture en passant - Still functional without these features though*/ logFailure("validPawnMove"); return false; } @@ -258,7 +279,7 @@ public enum ChessRules { } logFailure("validKingMove"); - //Moves that get the king captured are invalid + // TODO Moves that get the king captured are invalid return false; } return true;