Advertisement
Guest User

Untitled

a guest
Sep 3rd, 2015
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.93 KB | None | 0 0
  1. package lecture4.task5;
  2.  
  3. import java.io.*;
  4.  
  5. /***********************************************************************************************************************
  6. Алгоритм проверки выигрыша:
  7. из матрицы формируется ОДНА строка, которая состоит из подстрок разделенных пробелом.
  8. Каждая строка состоит из трех символов: три строки из колонок матрицы, три строки из строк матрицы
  9. и две строки из диагоналей. Таким образом мы объединяем в одной строке все возможные варианты выигрышей.
  10. Дальше просто при помощи метода indexOf() проверяем совпадение с комбинациями "ххх" или "000".
  11.  
  12. Все строки разделены пробелом для исключения случайных совпадений.
  13. **********************************************************************************************************************/
  14.  
  15. public class Solution {
  16. public static void main(String[] args) throws IOException {
  17. char[][] arr = new char[][]{{' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '}};
  18. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  19. char smbl = ' ';
  20. String s;
  21. int x = 0;
  22. int y = 0;
  23.  
  24. while (true) {
  25. drawGrid(arr); //отрисовка результата
  26.  
  27. //проверка победы Х
  28. if (checkWin(arr, 'x')){
  29. System.out.print("\"X\" WON!!!");
  30. break;
  31. }
  32.  
  33. //проверка победы 0
  34. if (checkWin(arr, '0')){
  35. System.out.print("\"0\" WON!!!");
  36. break;
  37. }
  38.  
  39. //ввод крестика или нолика
  40. System.out.print("\nYour move (enter \"exit\" to stop): ");
  41. if ((s = br.readLine()).equals("exit")) break;
  42. smbl = s.charAt(0);
  43.  
  44. //ввод колонки 1..3
  45. System.out.print("Column: ");
  46. x = Integer.parseInt(br.readLine()) - 1;
  47.  
  48. //ввод ряда 1..3
  49. System.out.print("Row: ");
  50. y = Integer.parseInt(br.readLine()) - 1;
  51.  
  52. arr[x][y] = smbl;
  53. }
  54. }
  55.  
  56. public static void drawGrid(char[][] arr){
  57. for (int j = 0; j < 3; j++)
  58. for (int i = 0; i < 3; i++) {
  59. if (i == 2) {
  60. System.out.println(arr[i][j]);
  61. if (j != 2)
  62. System.out.println("--+---+--");
  63. }
  64. else
  65. System.out.print(arr[i][j] + " | ");
  66. }
  67. }
  68.  
  69. public static boolean checkWin(char[][] arr, char smbl){
  70. String s = "";
  71. String diag1 = "";
  72. String diag2 = "";
  73.  
  74. //записываем в строку столбцы и одновременно обе диагонали
  75. for (int i = 0; i < 3; i++) {
  76. s += " ";
  77. for (int j = 0; j < 3; j++) {
  78. if (i == j) diag1 += arr[i][j]; //формируем диагональ 1
  79. if (2 - i == j) diag2 += arr[i][j]; //формируем диагональ 2
  80. s += arr[i][j];
  81. }
  82. }
  83.  
  84. //записываем в строку строки
  85. for (int j = 0; j < 3; j++) {
  86. s += " ";
  87. for (int i = 0; i < 3; i++)
  88. s += arr[i][j];
  89. }
  90. s += " " + diag1 + " " + diag2; //формируем конечную строку для проверки выигрыша
  91.  
  92. if (s.indexOf(Character.toString(smbl) + Character.toString(smbl) + Character.toString(smbl)) != -1) return true;
  93. else return false;
  94. }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement