import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class TicTac { // Igrovoe pole public static char[][] field = { { '+', '+', '+' }, { '+', '+', '+' }, { '+', '+', '+' } }; // hod kompjutera (random) public static void CompMove() { int x = (int) (Math.random() * 3), y = (int) (Math.random() * 3); while (field[x][y] == '0' || field[x][y] == 'X') { x = (int) (Math.random() * 3); y = (int) (Math.random() * 3); } field[x][y] = '0'; } // Hod cheloveka public static void HumanMove() throws IOException { int x = -1, y = -1; System.out.println("Enter y (1..3):"); BufferedReader br = new BufferedReader(new InputStreamReader( System.in)); x = Integer.parseInt(br.readLine())-1; System.out.println("Enter x (1..3):"); y = Integer.parseInt(br.readLine())-1; while (field[x][y] == '0' || field[x][y] == 'X' || x < 0 || x > 2 || y < 0 || y > 2) { System.out.println("Enter y:"); x = Integer.parseInt(br.readLine())-1; System.out.println("Enter x:"); y = Integer.parseInt(br.readLine())-1; } field[x][y] = 'X'; } // Vyvod igrovogo polja na ekran public static void PrintField() { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { System.out.print(field[i][j]); } System.out.println(); } } // Proverka sostojanija igry i estj li pobeditelj // Vozvrashaet simvol pobeditelja ili simvol probela esli poka nikto ne // vyigral public static char CheckGame() { char winner = ' '; // Proverka po gorizontali for (int i = 0; i < 3; i++) { if (field[i][0] == field[i][1] && field[i][1] == field[i][2] && field[i][0] != '+') { winner = field[i][0]; break; } } // Proverka po vertikali, esli pobeditelj poka ne naiden if (winner == ' ') { for (int i = 0; i < 3; i++) { if (field[0][i] == field[1][i] && field[1][i] == field[2][i] && field[0][i] != '+') { winner = field[0][i]; break; } } } // Proverka glavnoi diagonali esli pobeditelj poka ne naiden if (winner == ' ') { if (field[0][0] == field[1][1] && field[1][1] == field[2][2] && field[0][0] != '+') { winner = field[0][0]; } } // Proverka pobochnoi diagonali esli pobeditelj poka ne naiden if (winner == ' ') { if (field[0][2] == field[1][1] && field[1][1] == field[2][0] && field[0][2] != '+') { winner = field[0][2]; } } // Vozvrashaem pobeditelja ili probel, esli takogo poka net return winner; } // Ostalisj li eshjo na igrovom pole svobodnye kletki public static boolean CanMove() { boolean p = false; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (field[i][j] == '+') { p = true; break; } } if (p = true) { break; } } return p; } public static void main(String[] args) throws IOException { System.out.println("Game Started!!!"); PrintField(); while (CheckGame() == ' ' && CanMove()) { HumanMove(); CompMove(); PrintField(); } if (CheckGame() == 'X') { System.out.println("YOU WIN!"); } if (CheckGame() == '0') { System.out.println("YOU LOSE!"); } if (CheckGame() == ' ' && !CanMove()) { System.out.println("STANDOFF!"); } } }