Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.80 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace TicTacTow
  5. {
  6. class TicTacToe
  7. {
  8. List<string> CurrentBoardLayout = new List<string> { "1", "2", "3", "4", "5", "6", "7", "8", "9"};
  9. bool HasGameFinished = false;
  10.  
  11. public void Play()
  12. {
  13. UpdateBoard();
  14.  
  15. while (!HasGameFinished)
  16. {
  17. Console.WriteLine("\nPlayer1:");
  18. int player1Pos = RequestInput();
  19. CurrentBoardLayout[player1Pos - 1] = "X";
  20.  
  21. UpdateBoard();
  22. if (CheckWinner())
  23. {
  24. break;
  25. }
  26.  
  27. Console.WriteLine("\nPlayer2:");
  28. int player2Pos = RequestInput();
  29. CurrentBoardLayout[player2Pos - 1] = "O";
  30.  
  31. UpdateBoard();
  32.  
  33. CheckWinner();
  34. }
  35. }
  36.  
  37. void UpdateBoard()
  38. {
  39. Console.Clear();
  40. Console.WriteLine("Player1: X Player2: O");
  41. Console.WriteLine($"\n[{CurrentBoardLayout[0]}]\t[{CurrentBoardLayout[1]}]\t[{CurrentBoardLayout[2]}]");
  42. Console.WriteLine($"\n[{CurrentBoardLayout[3]}]\t[{CurrentBoardLayout[4]}]\t[{CurrentBoardLayout[5]}]");
  43. Console.WriteLine($"\n[{CurrentBoardLayout[6]}]\t[{CurrentBoardLayout[7]}]\t[{CurrentBoardLayout[8]}]");
  44. }
  45.  
  46. int RequestInput()
  47. {
  48. Console.WriteLine("\nWhere do you want to go? (Use numbers 1 - 9)");
  49.  
  50. int number = 0;
  51. bool isInputStringValid = false;
  52. while (!isInputStringValid)
  53. {
  54. string inputString = Console.ReadLine();
  55.  
  56. if (Int32.TryParse(inputString, out number))
  57. {
  58. if (number >= 1 && number <= 9)
  59. {
  60. if (CurrentBoardLayout[number - 1] != "X" && CurrentBoardLayout[number - 1] != "O")
  61. {
  62. isInputStringValid = true;
  63. }
  64. else
  65. {
  66. Console.WriteLine($"That tile is already marked with {CurrentBoardLayout[number]}");
  67. }
  68. }
  69. else
  70. {
  71. Console.WriteLine("Number wasn't a valid number. The number must be between 1 and 9");
  72. }
  73. }
  74. else
  75. {
  76. Console.WriteLine("Value inputted wasn't a number. Please enter a number between 1 and 9");
  77. }
  78. }
  79.  
  80. return number;
  81. }
  82.  
  83. bool CheckWinner()
  84. {
  85. bool isThereAWinner = false;
  86. string winningPlayer = "";
  87.  
  88. // Check horiozontal wins
  89. if (CurrentBoardLayout[0] == CurrentBoardLayout[1] && CurrentBoardLayout[1] == CurrentBoardLayout[2])
  90. {
  91. isThereAWinner = true;
  92. winningPlayer = CurrentBoardLayout[0];
  93. }
  94.  
  95. if (CurrentBoardLayout[3] == CurrentBoardLayout[4] && CurrentBoardLayout[4] == CurrentBoardLayout[5])
  96. {
  97. isThereAWinner = true;
  98. winningPlayer = CurrentBoardLayout[3];
  99. }
  100.  
  101. if (CurrentBoardLayout[6] == CurrentBoardLayout[7] && CurrentBoardLayout[7] == CurrentBoardLayout[8])
  102. {
  103. isThereAWinner = true;
  104. winningPlayer = CurrentBoardLayout[6];
  105. }
  106.  
  107. // Check vertical wins
  108. if (CurrentBoardLayout[0] == CurrentBoardLayout[3] && CurrentBoardLayout[3] == CurrentBoardLayout[6])
  109. {
  110. isThereAWinner = true;
  111. winningPlayer = CurrentBoardLayout[0];
  112. }
  113.  
  114. if (CurrentBoardLayout[1] == CurrentBoardLayout[4] && CurrentBoardLayout[4] == CurrentBoardLayout[7])
  115. {
  116. isThereAWinner = true;
  117. winningPlayer = CurrentBoardLayout[1];
  118. }
  119.  
  120. if (CurrentBoardLayout[2] == CurrentBoardLayout[5] && CurrentBoardLayout[5] == CurrentBoardLayout[8])
  121. {
  122. isThereAWinner = true;
  123. winningPlayer = CurrentBoardLayout[2];
  124. }
  125.  
  126. // Check diagonal wins
  127. if (CurrentBoardLayout[0] == CurrentBoardLayout[4] && CurrentBoardLayout[4] == CurrentBoardLayout[8])
  128. {
  129. isThereAWinner = true;
  130. winningPlayer = CurrentBoardLayout[0];
  131. }
  132.  
  133. if (CurrentBoardLayout[2] == CurrentBoardLayout[4] && CurrentBoardLayout[4] == CurrentBoardLayout[6])
  134. {
  135. isThereAWinner = true;
  136. winningPlayer = CurrentBoardLayout[2];
  137. }
  138.  
  139. // Check if game is a draw
  140. bool isThereEmptyTiles = false;
  141.  
  142. foreach (string position in CurrentBoardLayout)
  143. {
  144. if (position != "X" && position != "O")
  145. {
  146. isThereEmptyTiles = true;
  147. }
  148. }
  149.  
  150. if (!isThereEmptyTiles && !isThereAWinner)
  151. {
  152. isThereAWinner = true;
  153. winningPlayer = "both";
  154. }
  155.  
  156. if (isThereAWinner)
  157. {
  158. HasGameFinished = true;
  159.  
  160. if (winningPlayer == "both")
  161. {
  162. Console.WriteLine("Game is a draw");
  163. }
  164. else
  165. {
  166. Console.WriteLine($"Winner is: {(winningPlayer == "X" ? "Player1" : "Player2")}");
  167. }
  168. }
  169.  
  170. return isThereAWinner;
  171. }
  172. }
  173. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement