Skip to content

Commit

Permalink
Change move to match interface
Browse files Browse the repository at this point in the history
  • Loading branch information
sas12028 committed Apr 3, 2017
1 parent b1ce253 commit ba1067b
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 9 deletions.
67 changes: 67 additions & 0 deletions src/CheckersGameState3.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,65 @@ public CheckersGameState3(int player, int[] board){
this.board = board;
}

public CheckersGameState3(int player, String[] board){
this.player = player;
this.board = to_array(board);
}

public int convert(String s){
if(s.equals("-")){
return 0;
}
else if(s.equals("b")){
return 1;
}
else if(s.equals("w")){
return 2;
}
else if(s.equals("B")){
return 3;
}
else{
return 4;
}
}

public int[] to_array(String[] board){
int[] b = new int[35];
int i = 0;
int j = 0;
int added = 0;
boolean leading = false;
while(i < 35 ){
if(i % 9 == 8){
b[i] = 0;
}
else if(leading){
b[i] = convert(board[j]);
}
else{
b[i] =convert(board[j+1]);
}
if(i % 9 == 8){

i++;
continue;
}
j = j + 2;
i++;
added++;
if(added == 4){
added = 0;
leading = !leading;
}
if(j == 35){
added =0;
leading = false;
}
}
return b;
}

String player(){
if(this.player == 1){
return "black";
Expand Down Expand Up @@ -134,24 +193,32 @@ private void calculate_jumps(String path, int[] b, int orig, int delta1, int del
int jump = orig + 2 * delta1;
int[] b2 = b.clone();
b2[orig + delta1] = 0;
b2[orig + 2 * delta1] = b2 [orig];
b2[orig] = 0;
calculate_jumps(path + "," + jump, b2, jump, delta1, delta2, jumps, king);
}
if(can_jump(orig, delta2, b)){
int jump = orig + 2 * delta2;
int[] b3 = b.clone();
b3[orig + delta2] = 0;
b3[orig + 2 * delta2] = b3[orig];
b3[orig] = 0;
calculate_jumps(path + "," + jump, b3, jump, delta1, delta2, jumps, king);
}
if(king && can_jump(orig, -1 * delta1, b)){
int jump = orig + -2 * delta1;
int[] b4 = b.clone();
b4[orig + (-1 * delta1)] = 0;
b4[orig + (-2 * delta1)] = b4[orig];
b4[orig] = 0;
calculate_jumps(path + "," + jump, b4, jump, delta1, delta2, jumps, king);
}
if(king && can_jump(orig, -1 * delta2, b)){
int jump = orig + -2 * delta2;
int[] b5 = b.clone();
b5[orig + -1 * delta2] = 0;
b5[orig + (-2 * delta2)] = b5[orig];
b5[orig] = 0;
calculate_jumps(path + "," + jump, b5, jump, delta1, delta2, jumps, king);
}
}
Expand Down
1 change: 0 additions & 1 deletion src/Move.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@

public interface Move {
// Starting and ending Positions
public int src, dest;
// Returns a list of captured positions
public int[] captures();
// Returns the string representation of a move
Expand Down
16 changes: 8 additions & 8 deletions src/Move3.java
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
public class Move3{
public class Move3 implements Move{

int origin, destination;
int src, dest;
String[] steps;
int[] kills;
String check;

public Move3(String steps){
String[] s = steps.split(",");
this.steps = s;
this.origin = Integer.parseInt(s[0]);
this.destination = Integer.parseInt(s[s.length - 1]);
this.src = Integer.parseInt(s[0]);
this.dest = Integer.parseInt(s[s.length - 1]);
kills = calculate_kills(s);
}

public int[] calculate_kills(String[] steps){
int diff = this.origin - this.destination;
int diff = this.src - this.dest;
if(Math.abs(diff) == 4 || Math.abs(diff) == 5){
return null;
}
Expand All @@ -26,14 +26,14 @@ public int[] calculate_kills(String[] steps){
}

public int origin(){
return origin;
return src;
}

public int destination(){
return destination;
return dest;
}

public int[] kills(){
public int[] captures(){
return kills;
}

Expand Down

0 comments on commit ba1067b

Please sign in to comment.