chessai
college code for ai playing chess in java
git clone https://9o.is/git/chessai.git
commit ec953ce2e13839fd253fa481fa7b4eee5d159ca9 parent 478a08a043d8eac03619be7e39621201cec35492 Author: Jul <jul@9o.is> Date: Fri, 7 Dec 2012 17:27:51 -0500 Evaluation boolean to fix pawn can double move bool. Diffstat:
| M | src/main/java/chess/ChessPlayer.java | | | 2 | ++ |
| M | src/main/java/chess/ChessRules.java | | | 35 | +++++++++++++++++++++++++---------- |
2 files changed, 27 insertions(+), 10 deletions(-)
diff --git a/src/main/java/chess/ChessPlayer.java b/src/main/java/chess/ChessPlayer.java @@ -43,6 +43,7 @@ public class ChessPlayer { public List<ChessMove> possibleMoves(List<ChessCoordinate> pieces, ChessState state) { + ChessRules.INSTANCE.setEvaluating(true); ChessRules.INSTANCE.setLog(false); List<ChessMove> moves = new ArrayList<ChessMove>(); for(ChessCoordinate src : pieces) { @@ -50,6 +51,7 @@ public class ChessPlayer { for(ChessMove move : possibleMoves) moves.add(move); } + ChessRules.INSTANCE.setEvaluating(false); return moves; } diff --git a/src/main/java/chess/ChessRules.java b/src/main/java/chess/ChessRules.java @@ -21,8 +21,9 @@ public enum ChessRules { private ChessPiece destPiece; private ChessType srcType; - // TODO evaluating? - private boolean pawnCanDoubleMove = true; + private boolean evaluating = false; + private boolean bPawnCanDoubleMove = true; + private boolean wPawnCanDoubleMove = true; private boolean log = true; @@ -47,8 +48,20 @@ public enum ChessRules { this.log = log; } - // must be called after testing invalid is false - // eg. if(validMove(...)) applyCaptureRule(); + public void setEvaluating(boolean evaluating) { + this.evaluating = evaluating; + } + + public void setbPawnCanDoubleMove(boolean bPawnCanDoubleMove) { + if(!evaluating) + this.bPawnCanDoubleMove = bPawnCanDoubleMove; + } + + public void setwPawnCanDoubleMove(boolean wPawnCanDoubleMove) { + if(!evaluating) + this.wPawnCanDoubleMove = wPawnCanDoubleMove; + } + // CHECK public void applyCaptureRule() { // are the source and destination pieces different colors? @@ -212,14 +225,14 @@ public enum ChessRules { if(src.getRank()+2 == dest.getRank() && src.getFile() == dest.getFile() && - pawnCanDoubleMove) { + wPawnCanDoubleMove) { return true; } if(src.getRank()+1 == dest.getRank() && src.getFile() == dest.getFile()){ - pawnCanDoubleMove = false; + setwPawnCanDoubleMove(false); return true; } @@ -228,21 +241,22 @@ public enum ChessRules { Math.abs(src.getFile()-dest.getFile()) == 1 && srcPiece.getColor() != destPiece.getColor() && destPiece != ChessPiece.NA) { - pawnCanDoubleMove = false; + + setwPawnCanDoubleMove(false); return true; } } else { if(src.getRank() == dest.getRank()+2 && src.getFile() == dest.getFile() && - pawnCanDoubleMove) { + bPawnCanDoubleMove) { return true; } if(src.getRank() == dest.getRank()+1 && src.getFile() == dest.getFile()) { - pawnCanDoubleMove = false; + setbPawnCanDoubleMove(false); return true; } @@ -251,7 +265,8 @@ public enum ChessRules { Math.abs(src.getFile()-dest.getFile()) == 1 && srcPiece.getColor() != destPiece.getColor() && destPiece != ChessPiece.NA){ - pawnCanDoubleMove = false; + + setbPawnCanDoubleMove(false); return true; } }