Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package lecture4.task5;
- import java.io.*;
- /***********************************************************************************************************************
- Алгоритм проверки выигрыша:
- из матрицы формируется ОДНА строка, которая состоит из подстрок разделенных пробелом.
- Каждая строка состоит из трех символов: три строки из колонок матрицы, три строки из строк матрицы
- и две строки из диагоналей. Таким образом мы объединяем в одной строке все возможные варианты выигрышей.
- Дальше просто при помощи метода indexOf() проверяем совпадение с комбинациями "ххх" или "000".
- Все строки разделены пробелом для исключения случайных совпадений.
- **********************************************************************************************************************/
- public class Solution {
- public static void main(String[] args) throws IOException {
- char[][] arr = new char[][]{{' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '}};
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- char smbl = ' ';
- String s;
- int x = 0;
- int y = 0;
- while (true) {
- drawGrid(arr); //отрисовка результата
- //проверка победы Х
- if (checkWin(arr, 'x')){
- System.out.print("\"X\" WON!!!");
- break;
- }
- //проверка победы 0
- if (checkWin(arr, '0')){
- System.out.print("\"0\" WON!!!");
- break;
- }
- //ввод крестика или нолика
- System.out.print("\nYour move (enter \"exit\" to stop): ");
- if ((s = br.readLine()).equals("exit")) break;
- smbl = s.charAt(0);
- //ввод колонки 1..3
- System.out.print("Column: ");
- x = Integer.parseInt(br.readLine()) - 1;
- //ввод ряда 1..3
- System.out.print("Row: ");
- y = Integer.parseInt(br.readLine()) - 1;
- arr[x][y] = smbl;
- }
- }
- public static void drawGrid(char[][] arr){
- for (int j = 0; j < 3; j++)
- for (int i = 0; i < 3; i++) {
- if (i == 2) {
- System.out.println(arr[i][j]);
- if (j != 2)
- System.out.println("--+---+--");
- }
- else
- System.out.print(arr[i][j] + " | ");
- }
- }
- public static boolean checkWin(char[][] arr, char smbl){
- String s = "";
- String diag1 = "";
- String diag2 = "";
- //записываем в строку столбцы и одновременно обе диагонали
- for (int i = 0; i < 3; i++) {
- s += " ";
- for (int j = 0; j < 3; j++) {
- if (i == j) diag1 += arr[i][j]; //формируем диагональ 1
- if (2 - i == j) diag2 += arr[i][j]; //формируем диагональ 2
- s += arr[i][j];
- }
- }
- //записываем в строку строки
- for (int j = 0; j < 3; j++) {
- s += " ";
- for (int i = 0; i < 3; i++)
- s += arr[i][j];
- }
- s += " " + diag1 + " " + diag2; //формируем конечную строку для проверки выигрыша
- if (s.indexOf(Character.toString(smbl) + Character.toString(smbl) + Character.toString(smbl)) != -1) return true;
- else return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement