From 8a170ef450373ca0db4ef0aabeebe743da231427 Mon Sep 17 00:00:00 2001 From: Joe Sweeney Date: Tue, 4 Apr 2017 20:35:18 -0400 Subject: [PATCH] Added new result function for State4 --- src/CheckersGameState4.java | 34 +++++++++++++++++++++++++++------- src/Move4.java | 4 ++++ src/Piece.java | 4 ++++ 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/CheckersGameState4.java b/src/CheckersGameState4.java index 23e5cec..4b69121 100644 --- a/src/CheckersGameState4.java +++ b/src/CheckersGameState4.java @@ -120,16 +120,36 @@ public class CheckersGameState4 implements CheckersGameState{ //return resulting state from taking move x public CheckersGameState result (Move x){ Move4 m = (Move4) x; + Piece[] captures = m.capturedPieces(); //Piece[] pieces; if(m._path.length == 4){ //only src and dest - m._piece._row = m._path[2]; //is this actually changing the piece that belongs to _pieces? - m._piece._col = m._path[3]; - if(m._path[2] == 7 && m._piece._token == 'w'){ - m._piece._token = 'W'; //king me - } - if(m._path[2] == 0 && m._piece._token == 'b'){ - m._piece._token = 'B'; //king me + ArrayList newPieces = new ArrayList(); + for(Piece p : _pieces){ + boolean addPiece = true; + if(p == m._piece) { + Piece clone = p.clone(); + clone._row = m._path[2]; //is this actually changing the piece that belongs to _pieces? + clone._col = m._path[3]; + if(m._path[2] == 7 && m._piece._token == 'w'){ + clone._token = 'W'; //king me + } + if(m._path[2] == 0 && m._piece._token == 'b'){ + clone._token = 'B'; //king me + } + newPieces.add(clone); + addPiece = false; + } + for(Piece c : captures) { + if(c==p){ + addPiece = false; + break; + } + } + if(addPiece){ + newPieces.add(p.clone()); + } } + return new CheckersGameState4((_player+1)%2, newPieces); } //else consider jumps. //remove from array list if captured. diff --git a/src/Move4.java b/src/Move4.java index 01c4389..fd59c4a 100644 --- a/src/Move4.java +++ b/src/Move4.java @@ -34,6 +34,10 @@ public class Move4 implements Move{ return new int[2]; } + public Piece[] capturedPieces(){ + return null; + } + // Returns the string representation of a move public String toString(){ String output = ""; diff --git a/src/Piece.java b/src/Piece.java index 8e4ff03..1e98c51 100644 --- a/src/Piece.java +++ b/src/Piece.java @@ -8,4 +8,8 @@ class Piece{ _row = r; _col = c; } + + public Piece clone() { + return new Piece(_token, _row, _col); + } }