package alıştırmalar;
import java.util.*;
public class xox_Game {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String strMatrix[][] = new String[3][3];
//ilk değer yükleme
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
strMatrix[i][j]= " ";
}
}
for (int i = 0; i < 9; i++) { //9 tur
printTable(strMatrix);
String player ="";
player = setPlayer(i); //sıra hangi oyuncuda?
int row,column;
System.out.print("Enter a row (1,2 or 3) for player " + player + ": ");
row = scanner.nextInt();
System.out.print("Enter a column (1,2 or 3) for player " + player + ": ");
column = scanner.nextInt();
boolean isVictory = false;
if (row >= 1 && row <=3 && column >= 1 && column <=3) {
if (strMatrix[row-1][column-1].equals(" ")) {
strMatrix[row-1][column-1] = player;
isVictory = controlTable(strMatrix); //oyun bitti mi kontrolü
if (isVictory) {
printTable(strMatrix);
System.out.println("player " + player + " won!");
return;
}
} else{
System.out.println("Row-column is fill");
i--; //tur--
}
} else{
System.out.println("Row-column is wrong value");
i--;
}
}
System.out.println("draw");
}
private static String setPlayer(int i) {
String player;
if (i % 2 == 1) {
player = "O";
} else {
player = "X";
}
return player;
}
private static boolean controlTable(String[][] strMatrix) {
//sütun kontrolü
boolean ret = false;
ret = checkColumn(strMatrix);
if (ret) return true;
//satır kontrolü
ret = checkRow(strMatrix);
if(ret) return true;
//Köşegen kontrolü
ret = checkDiagonal(strMatrix);
if(ret) return true;
return false;
}
private static boolean checkDiagonal(String[][] strMatrix) {
//köşegendeki değerler eşitse oyunu kazanmıştır.
//1. ve 2. köşegenleri kontrol eder.
String val00 = strMatrix[0][0];
String val11 = strMatrix[1][1];
String val22 = strMatrix[2][2];
String val02 = strMatrix[0][2];
String val20 = strMatrix[2][0];
if ((!val00.equals(" ")) && val00.equals(val11) && val11.equals(val22)) {
return true;
}
if ((!val02.equals(" ")) && val02.equals(val11) && val11.equals(val20)) {
return true;
}
return false;
}
private static boolean checkRow(String[][] strMatrix) {
for (int j = 0; j < 3; j++) { //j. satırdaki değerler eşitse oyunu kazanmıştır.
String row0 = strMatrix[0][j];
String row1 = strMatrix[1][j];
String row2 = strMatrix[2][j];
if ((!row0.equals(" ")) && row0.equals(row1) && row1.equals(row2)) {
return true;
}
}
return false;
}
private static boolean checkColumn(String[][] strMatrix) {
for (int j = 0; j < 3; j++) { //j. sütundaki değerler eşitse oyunu kazanmıştır.
String column0 = strMatrix[j][0];
String column1 = strMatrix[j][1];
String column2 = strMatrix[j][2];
if ((!column0.equals(" ")) && column0.equals(column1) && column1.equals(column2)) {
return true;
}
}
return false;
}
private static void printTable(String[][] strMatrix) {
for (int i = 0; i < 3; i++) {
System.out.println("-------------");
System.out.print("|");
for (int j = 0; j < 3; j++) {
System.out.print(" ");
System.out.print(strMatrix[i][j]);
System.out.print(" ");
System.out.print("|");
}
System.out.println("");
}
System.out.println("-------------");
}
}