Commit 5ae794c4 authored by nargessalehi98's avatar nargessalehi98

Add possible moves

parent c8e2482c
...@@ -6,12 +6,18 @@ public class Main { ...@@ -6,12 +6,18 @@ public class Main {
while (true) { while (true) {
String white = "| \u26AA |"; String white = "| \u26AA |";
String black = "| \u26AB |"; String black = "| \u26AB |";
System.out.println("Black's turn"); System.out.println("Black's turn :");
map.putDisk(black); boolean checkBlack = map.putDisk(black);
map.print(); map.print();
System.out.println("White's turn"); System.out.println("White's turn :");
map.putDisk(white); boolean checkWhite = map.putDisk(white);
if (checkBlack && checkWhite || map.fullMap()) {
System.out.println("game is over !");
map.findWinner();
break;
}
map.print(); map.print();
} }
} }
} }
...@@ -34,8 +34,15 @@ public class Map { ...@@ -34,8 +34,15 @@ public class Map {
} }
} }
public boolean getTurn() { public boolean fullMap() {
return turn; boolean check = true;
for (int row = 0; row < 8; row++) {
for (int col = 0; col < 8; col++) {
if (checkColor(row, col).equals(empty))
check = false;
}
}
return check;
} }
public int getColNum(String c) { public int getColNum(String c) {
...@@ -69,21 +76,34 @@ public class Map { ...@@ -69,21 +76,34 @@ public class Map {
return empty; return empty;
} }
public boolean checkPutDisk(int row, int col) { public boolean checkPossibleMove(String Color) {
int counter = 0;
for (int row = 0; row < 8; row++) {
for (int col = 0; col < 8; col++) {
if (checkColor(row, col).equals(empty)) {
if (checkPutDisk(row, col, Color)) {
counter++;
}
}
}
}
return counter != 0;
}
public boolean checkPutDisk(int row, int col, String Color) {
int counter = 0; int counter = 0;
for (int plusRow = -1; plusRow < 2; plusRow++) { for (int plusRow = -1; plusRow < 2; plusRow++) {
for (int plusCol = -1; plusCol < 2; plusCol++) { for (int plusCol = -1; plusCol < 2; plusCol++) {
String main = checkColor(row, col);
int Row = row + plusRow; int Row = row + plusRow;
int Col = col + plusCol; int Col = col + plusCol;
if (!(plusCol == 0 && plusRow == 0)) { if (!(plusCol == 0 && plusRow == 0)) {
if (Row >= 0 && Row < 8 && Col >= 0 && Col < 8) { if (Row >= 0 && Row < 8 && Col >= 0 && Col < 8) {
if (!checkColor(Row, Col).equals(main) && !checkColor(Row, Col).equals(empty)) { if (!checkColor(Row, Col).equals(Color) && !checkColor(Row, Col).equals(empty)) {
while (true) { while (true) {
Row += plusRow; Row += plusRow;
Col += plusCol; Col += plusCol;
if (Row >= 0 && Row < 8 && Col >= 0 && Col < 8) { if (Row >= 0 && Row < 8 && Col >= 0 && Col < 8) {
if (checkColor(Row, Col).equals(main)) { if (checkColor(Row, Col).equals(Color)) {
counter++; counter++;
break; break;
} }
...@@ -98,14 +118,35 @@ public class Map { ...@@ -98,14 +118,35 @@ public class Map {
return counter != 0; return counter != 0;
} }
public void putDisk(String Color) { public void findWinner() {
int counterBlack = 0;
int counterWhite = 0;
for (int row = 0; row < 8; row++) {
for (int col = 0; col < 8; col++) {
if (checkColor(row, col).equals(black))
counterBlack++;
if (checkColor(row, col).equals(white))
counterWhite++;
}
}
if (counterBlack > counterWhite)
System.out.println("Black won ! Number of disks: " + counterBlack);
if (counterWhite > counterBlack)
System.out.println("White won ! Number of disks: " + counterWhite);
if (counterBlack == counterWhite)
System.out.println("Equal !");
}
public boolean putDisk(String Color) {
if (checkPossibleMove(Color)) {
System.out.println("Enter Number of row and letter of column :"); System.out.println("Enter Number of row and letter of column :");
Scanner scan = new Scanner(System.in); Scanner scan = new Scanner(System.in);
int row = scan.nextInt(); int row = scan.nextInt();
row = row - 1; row = row - 1;
String colLetter = scan.next(); String colLetter = scan.next();
int col = getColNum(colLetter); int col = getColNum(colLetter);
if (checkPutDisk(row, col)) { if (col != 8) {
if (checkPutDisk(row, col, Color)) {
ArrayList<String> temp = map.get(row); ArrayList<String> temp = map.get(row);
if (temp.get(col).equals(empty)) { if (temp.get(col).equals(empty)) {
temp.remove(col); temp.remove(col);
...@@ -115,9 +156,18 @@ public class Map { ...@@ -115,9 +156,18 @@ public class Map {
} }
checkNeighbor(row, col); checkNeighbor(row, col);
} else { } else {
System.out.println("choose right position"); System.out.println("choose right position !");
putDisk(Color);
}
} else {
System.out.println("wrong input !");
putDisk(Color); putDisk(Color);
} }
return false;
} else {
System.out.println("pass !");
return true;
}
} }
public void checkNeighbor(int row, int col) { public void checkNeighbor(int row, int col) {
...@@ -130,14 +180,17 @@ public class Map { ...@@ -130,14 +180,17 @@ public class Map {
if (Row >= 0 && Row < 8 && Col >= 0 && Col < 8) { if (Row >= 0 && Row < 8 && Col >= 0 && Col < 8) {
if (!checkColor(Row, Col).equals(main) && !checkColor(Row, Col).equals(empty)) { if (!checkColor(Row, Col).equals(main) && !checkColor(Row, Col).equals(empty)) {
boolean check = true; boolean check = true;
while (true) { while (true) {
if (check) { if (check) {
Row += plusRow; Row += plusRow;
Col += plusCol; Col += plusCol;
if (Row >= 0 && Row < 8 && Col >= 0 && Col < 8) {
if (checkColor(Row, Col).equals(main)) { if (checkColor(Row, Col).equals(main)) {
while (true) { while (true) {
Row -= plusRow; Row -= plusRow;
Col -= plusCol; Col -= plusCol;
if (Row >= 0 && Row < 8 && Col >= 0 && Col < 8) {
if (checkColor(Row, Col).equals(main)) { if (checkColor(Row, Col).equals(main)) {
check = false; check = false;
break; break;
...@@ -150,20 +203,20 @@ public class Map { ...@@ -150,20 +203,20 @@ public class Map {
} }
} }
} }
}
if (checkColor(Row, Col).equals(empty)) { if (checkColor(Row, Col).equals(empty)) {
check = false; // check = false;
break; break;
} }
if (Row < 0 || Row > 7 || Col < 0 || Col > 7) { // if (Row < 0 || Row > 7 || Col < 0 || Col > 7) {
check = false; // check = false;
break; // break;
// }
} }
} else } else
break; break;
} }
} }
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment