Guest User

Untitled

a guest
Jun 21st, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.00 KB | None | 0 0
  1. import java.awt.*;
  2. import java.util.*;
  3. import java.awt.event.*;
  4.  
  5. import javax.swing.*;
  6.  
  7. public class TicTacToe implements ActionListener {
  8.  
  9. private int[][] winCombinations = new int[][] { { 1, 2, 3 }, { 4, 5, 6 },
  10. { 7, 8, 9 }, { 1, 4, 7 }, { 2, 5, 8 }, { 3, 6, 9 }, { 1, 5, 9 },
  11. { 3, 5, 7 } };
  12. private JFrame window = new JFrame("TicTacToe (Naughts && Crosses)");
  13. private JButton buttons[] = new JButton[10];
  14. private int count = 0;
  15. private boolean win = false;
  16. private String letter = "";
  17.  
  18. public TicTacToe() {
  19. window.setPreferredSize(new Dimension(300, 300));
  20. window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  21. window.setLayout(new GridLayout(3, 3));
  22. for (int i = 1; i <= 9; i++) {
  23. buttons[i] = new JButton();
  24. window.add(buttons[i]);
  25. buttons[i].addActionListener(this);
  26. }
  27. window.setVisible(true);
  28. window.pack();
  29. }
  30.  
  31. public void actionPerformed(ActionEvent a) {
  32. for (int i = 1; i <= 9; i++) {
  33. if (a.getSource() == buttons[i]) {
  34. buttons[i].setText("X");
  35. buttons[i].setEnabled(false);
  36. }
  37. }
  38. count++;
  39. AI();
  40. }
  41.  
  42. public void AI() {
  43. count++;
  44. if (buttons[1].getText().equals("O")
  45. && buttons[2].getText().equals("O")
  46. && buttons[3].getText().equals("")) {
  47. buttons[3].setText("O");
  48. buttons[3].setEnabled(false);
  49. } else if (buttons[4].getText().equals("O")
  50. && buttons[5].getText().equals("O")
  51. && buttons[6].getText().equals("")) {
  52. buttons[6].setText("O");
  53. buttons[6].setEnabled(false);
  54. } else if (buttons[7].getText().equals("O")
  55. && buttons[8].getText().equals("O")
  56. && buttons[9].getText().equals("")) {
  57. buttons[9].setText("O");
  58. buttons[9].setEnabled(false);
  59. }
  60.  
  61. else if (buttons[2].getText().equals("O")
  62. && buttons[3].getText().equals("O")
  63. && buttons[1].getText().equals("")) {
  64. buttons[1].setText("O");
  65. buttons[1].setEnabled(false);
  66. } else if (buttons[5].getText().equals("O")
  67. && buttons[6].getText().equals("O")
  68. && buttons[4].getText().equals("")) {
  69. buttons[4].setText("O");
  70. buttons[4].setEnabled(false);
  71. } else if (buttons[8].getText().equals("O")
  72. && buttons[9].getText().equals("O")
  73. && buttons[7].getText().equals("")) {
  74. buttons[7].setText("O");
  75. buttons[7].setEnabled(false);
  76. }
  77.  
  78. else if (buttons[1].getText().equals("O")
  79. && buttons[3].getText().equals("O")
  80. && buttons[2].getText().equals("")) {
  81. buttons[2].setText("O");
  82. buttons[2].setEnabled(false);
  83. } else if (buttons[4].getText().equals("O")
  84. && buttons[6].getText().equals("O")
  85. && buttons[5].getText().equals("")) {
  86. buttons[5].setText("O");
  87. buttons[5].setEnabled(false);
  88. } else if (buttons[7].getText().equals("O")
  89. && buttons[9].getText().equals("O")
  90. && buttons[8].getText().equals("")) {
  91. buttons[8].setText("O");
  92. buttons[8].setEnabled(false);
  93. }
  94.  
  95. else if (buttons[1].getText().equals("O")
  96. && buttons[4].getText().equals("O")
  97. && buttons[7].getText().equals("")) {
  98. buttons[7].setText("O");
  99. buttons[7].setEnabled(false);
  100. } else if (buttons[2].getText().equals("O")
  101. && buttons[5].getText().equals("O")
  102. && buttons[8].getText().equals("")) {
  103. buttons[4].setText("O");
  104. buttons[4].setEnabled(false);
  105. } else if (buttons[3].getText().equals("O")
  106. && buttons[6].getText().equals("O")
  107. && buttons[9].getText().equals("")) {
  108. buttons[9].setText("O");
  109. buttons[9].setEnabled(false);
  110. }
  111.  
  112. else if (buttons[4].getText().equals("O")
  113. && buttons[7].getText().equals("O")
  114. && buttons[1].getText().equals("")) {
  115. buttons[1].setText("O");
  116. buttons[1].setEnabled(false);
  117. } else if (buttons[5].getText().equals("O")
  118. && buttons[8].getText().equals("O")
  119. && buttons[2].getText().equals("")) {
  120. buttons[2].setText("O");
  121. buttons[2].setEnabled(false);
  122. } else if (buttons[6].getText().equals("O")
  123. && buttons[9].getText().equals("O")
  124. && buttons[3].getText().equals("")) {
  125. buttons[3].setText("O");
  126. buttons[3].setEnabled(false);
  127. }
  128.  
  129. else if (buttons[1].getText().equals("O")
  130. && buttons[7].getText().equals("O")
  131. && buttons[4].getText().equals("")) {
  132. buttons[4].setText("O");
  133. buttons[4].setEnabled(false);
  134. } else if (buttons[2].getText().equals("O")
  135. && buttons[8].getText().equals("O")
  136. && buttons[5].getText().equals("")) {
  137. buttons[5].setText("O");
  138. buttons[5].setEnabled(false);
  139. } else if (buttons[3].getText().equals("O")
  140. && buttons[9].getText().equals("O")
  141. && buttons[6].getText().equals("")) {
  142. buttons[6].setText("O");
  143. buttons[6].setEnabled(false);
  144. }
  145.  
  146. else if (buttons[1].getText().equals("O")
  147. && buttons[5].getText().equals("O")
  148. && buttons[9].getText().equals("")) {
  149. buttons[9].setText("O");
  150. buttons[9].setEnabled(false);
  151. } else if (buttons[5].getText().equals("O")
  152. && buttons[9].getText().equals("O")
  153. && buttons[1].getText().equals("")) {
  154. buttons[1].setText("O");
  155. buttons[1].setEnabled(false);
  156. } else if (buttons[1].getText().equals("O")
  157. && buttons[9].getText().equals("O")
  158. && buttons[5].getText().equals("")) {
  159. buttons[5].setText("O");
  160. buttons[5].setEnabled(false);
  161. }
  162.  
  163. else if (buttons[3].getText().equals("O")
  164. && buttons[5].getText().equals("O")
  165. && buttons[7].getText().equals("")) {
  166. buttons[7].setText("O");
  167. buttons[7].setEnabled(false);
  168. } else if (buttons[7].getText().equals("O")
  169. && buttons[5].getText().equals("O")
  170. && buttons[3].getText().equals("")) {
  171. buttons[3].setText("O");
  172. buttons[3].setEnabled(false);
  173. } else if (buttons[7].getText().equals("O")
  174. && buttons[3].getText().equals("O")
  175. && buttons[5].getText().equals("")) {
  176. buttons[5].setText("O");
  177. buttons[5].setEnabled(false);
  178. }
  179.  
  180. else if (buttons[1].getText().equals("X")
  181. && buttons[2].getText().equals("X")
  182. && buttons[3].getText().equals("")) {
  183. buttons[3].setText("O");
  184. buttons[3].setEnabled(false);
  185. } else if (buttons[4].getText().equals("X")
  186. && buttons[5].getText().equals("X")
  187. && buttons[6].getText().equals("")) {
  188. buttons[6].setText("O");
  189. buttons[6].setEnabled(false);
  190. } else if (buttons[7].getText().equals("X")
  191. && buttons[8].getText().equals("X")
  192. && buttons[9].getText().equals("")) {
  193. buttons[9].setText("O");
  194. buttons[9].setEnabled(false);
  195. }
  196.  
  197. else if (buttons[2].getText().equals("X")
  198. && buttons[3].getText().equals("X")
  199. && buttons[1].getText().equals("")) {
  200. buttons[1].setText("O");
  201. buttons[1].setEnabled(false);
  202. } else if (buttons[5].getText().equals("X")
  203. && buttons[6].getText().equals("X")
  204. && buttons[4].getText().equals("")) {
  205. buttons[4].setText("O");
  206. buttons[4].setEnabled(false);
  207. } else if (buttons[8].getText().equals("X")
  208. && buttons[9].getText().equals("X")
  209. && buttons[7].getText().equals("")) {
  210. buttons[7].setText("O");
  211. buttons[7].setEnabled(false);
  212. }
  213.  
  214. else if (buttons[1].getText().equals("X")
  215. && buttons[3].getText().equals("X")
  216. && buttons[2].getText().equals("")) {
  217. buttons[2].setText("O");
  218. buttons[2].setEnabled(false);
  219. } else if (buttons[4].getText().equals("X")
  220. && buttons[6].getText().equals("X")
  221. && buttons[5].getText().equals("")) {
  222. buttons[5].setText("O");
  223. buttons[5].setEnabled(false);
  224. } else if (buttons[7].getText().equals("X")
  225. && buttons[9].getText().equals("X")
  226. && buttons[8].getText().equals("")) {
  227. buttons[8].setText("O");
  228. buttons[8].setEnabled(false);
  229. }
  230.  
  231. else if (buttons[1].getText().equals("X")
  232. && buttons[4].getText().equals("X")
  233. && buttons[7].getText().equals("")) {
  234. buttons[7].setText("O");
  235. buttons[7].setEnabled(false);
  236. } else if (buttons[2].getText().equals("X")
  237. && buttons[5].getText().equals("X")
  238. && buttons[8].getText().equals("")) {
  239. buttons[8].setText("O");
  240. buttons[8].setEnabled(false);
  241. } else if (buttons[3].getText().equals("X")
  242. && buttons[6].getText().equals("X")
  243. && buttons[9].getText().equals("")) {
  244. buttons[9].setText("O");
  245. buttons[9].setEnabled(false);
  246. }
  247.  
  248. else if (buttons[4].getText().equals("X")
  249. && buttons[7].getText().equals("X")
  250. && buttons[1].getText().equals("")) {
  251. buttons[1].setText("O");
  252. buttons[1].setEnabled(false);
  253. } else if (buttons[5].getText().equals("X")
  254. && buttons[8].getText().equals("X")
  255. && buttons[2].getText().equals("")) {
  256. buttons[2].setText("O");
  257. buttons[2].setEnabled(false);
  258. } else if (buttons[6].getText().equals("X")
  259. && buttons[9].getText().equals("X")
  260. && buttons[3].getText().equals("")) {
  261. buttons[3].setText("O");
  262. buttons[3].setEnabled(false);
  263. }
  264.  
  265. else if (buttons[1].getText().equals("X")
  266. && buttons[7].getText().equals("X")
  267. && buttons[4].getText().equals("")) {
  268. buttons[4].setText("O");
  269. buttons[4].setEnabled(false);
  270. } else if (buttons[2].getText().equals("X")
  271. && buttons[8].getText().equals("X")
  272. && buttons[5].getText().equals("")) {
  273. buttons[5].setText("O");
  274. buttons[5].setEnabled(false);
  275. } else if (buttons[3].getText().equals("X")
  276. && buttons[9].getText().equals("X")
  277. && buttons[6].getText().equals("")) {
  278. buttons[6].setText("O");
  279. buttons[6].setEnabled(false);
  280. }
  281.  
  282. else if (buttons[1].getText().equals("X")
  283. && buttons[5].getText().equals("X")
  284. && buttons[9].getText().equals("")) {
  285. buttons[9].setText("O");
  286. buttons[9].setEnabled(false);
  287. } else if (buttons[5].getText().equals("X")
  288. && buttons[9].getText().equals("X")
  289. && buttons[1].getText().equals("")) {
  290. buttons[1].setText("O");
  291. buttons[1].setEnabled(false);
  292. } else if (buttons[1].getText().equals("X")
  293. && buttons[9].getText().equals("X")
  294. && buttons[5].getText().equals("")) {
  295. buttons[5].setText("O");
  296. buttons[5].setEnabled(false);
  297. }
  298.  
  299. else if (buttons[3].getText().equals("X")
  300. && buttons[5].getText().equals("X")
  301. && buttons[7].getText().equals("")) {
  302. buttons[7].setText("O");
  303. buttons[7].setEnabled(false);
  304. } else if (buttons[7].getText().equals("X")
  305. && buttons[5].getText().equals("X")
  306. && buttons[3].getText().equals("")) {
  307. buttons[3].setText("O");
  308. buttons[3].setEnabled(false);
  309. } else if (buttons[7].getText().equals("X")
  310. && buttons[3].getText().equals("X")
  311. && buttons[5].getText().equals("")) {
  312. buttons[5].setText("O");
  313. buttons[5].setEnabled(false);
  314. }
  315.  
  316. else if (buttons[1].getText().equals("X")
  317. && buttons[5].getText().equals("O")
  318. && buttons[9].getText().equals("X")) {
  319. buttons[6].setText("O");
  320. buttons[6].setEnabled(false);
  321. }
  322.  
  323. else if (buttons[3].getText().equals("X")
  324. && buttons[5].getText().equals("O")
  325. && buttons[7].getText().equals("X")) {
  326. buttons[4].setText("O");
  327. buttons[4].setEnabled(false);
  328. }
  329.  
  330. else if (buttons[5].getText().equals("")) {
  331. buttons[5].setText("O");
  332. buttons[5].setEnabled(false);
  333. }
  334.  
  335. else if (buttons[1].getText().equals("")) {
  336. buttons[1].setText("O");
  337. buttons[1].setEnabled(false);
  338. } else {
  339. if (count >= 9)
  340. checkWin();
  341. else
  342. RandomMove();
  343. }
  344.  
  345. checkWin();
  346.  
  347. }
  348.  
  349. public void RandomMove() {
  350. Random x = new Random();
  351. int y = 1 + x.nextInt(9);
  352. if (buttons[y].getText().equals("O")
  353. || buttons[y].getText().equals("X")) {
  354. RandomMove();
  355. } else {
  356. buttons[y].setText("O");
  357. buttons[y].setEnabled(false);
  358. }
  359. }
  360.  
  361. public void checkWin() {
  362.  
  363. for (int i = 0; i <= 7; i++) {
  364. if (buttons[winCombinations[i][0]].getText().equals(
  365. buttons[winCombinations[i][1]].getText())
  366. && buttons[winCombinations[i][1]].getText().equals(
  367. buttons[winCombinations[i][2]].getText())
  368. && !buttons[winCombinations[i][0]].getText().equals("")) {
  369. win = true;
  370. }
  371. }
  372. if (count % 2 == 0)
  373. letter = "The Computer";
  374. else
  375. letter = "The Human";
  376. if (win == true) {
  377. JOptionPane.showMessageDialog(null, letter + " Wins!");
  378. System.exit(0);
  379. } else if (count >= 9 && win == false) {
  380. JOptionPane.showMessageDialog(null, "Tie!");
  381. System.exit(0);
  382. }
  383. }
  384.  
  385. public static void main(String[] args) {
  386. new TicTacToe();
  387. }
  388.  
  389. }
Add Comment
Please, Sign In to add comment