fork download
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. import java.util.Random;
  5. /**
  6.  * Tic-Tac-Toe against human or CPU.
  7.  *
  8.  *
  9.  */
  10. public class Organized {
  11. //....Random....\\
  12. static Random rd = new Random();
  13.  
  14. //....Buttons....\\
  15. static JButton butEasy = new JButton("Easy");
  16. static JButton butHard = new JButton("Hard");
  17. static JButton butHvH = new JButton("Vs. A Friend");
  18. static JButton butX = new JButton("X");
  19. static JButton butO = new JButton("O");
  20. static JButton butA = new JButton("");
  21. static JButton butB = new JButton("");
  22. static JButton butC = new JButton("");
  23. static JButton butD = new JButton("");
  24. static JButton butE = new JButton("");
  25. static JButton butF = new JButton("");
  26. static JButton butG = new JButton("");
  27. static JButton butH = new JButton("");
  28. static JButton butI = new JButton("");
  29. static JButton butA1 = new JButton("");
  30. static JButton butB1 = new JButton("");
  31. static JButton butC1 = new JButton("");
  32. static JButton butD1 = new JButton("");
  33. static JButton butE1 = new JButton("");
  34. static JButton butF1 = new JButton("");
  35. static JButton butG1 = new JButton("");
  36. static JButton butH1 = new JButton("");
  37. static JButton butI1 = new JButton("");
  38. static JButton butSame = new JButton("");
  39.  
  40. //....Labels....\\
  41. static JLabel mssg = new JLabel ("Please choose a difficulty.");
  42. static JLabel or = new JLabel ("-Or-");
  43.  
  44. //....Panels....\\
  45. static JPanel main = new JPanel();
  46. static JPanel message = new JPanel();
  47. public static void main(String[] args) {
  48. //....Font....\\
  49. Font t = new Font("Courier",Font.BOLD,48);
  50. Font d = new Font("Courier",Font.BOLD,24);
  51. Font o = new Font("Courier",Font.BOLD,48);
  52. butA.setFont(t);
  53. butB.setFont(t);
  54. butC.setFont(t);
  55. butD.setFont(t);
  56. butE.setFont(t);
  57. butF.setFont(t);
  58. butG.setFont(t);
  59. butH.setFont(t);
  60. butI.setFont(t);
  61. butX.setFont(t);
  62. or.setFont(o);
  63. butO.setFont(t);
  64. butEasy.setFont(d);
  65. butHard.setFont(d);
  66. butHvH.setFont(d);
  67.  
  68. //....Listener....\\
  69. HumanMove hMove = new HumanMove();
  70. butA.addActionListener(hMove);
  71. butB.addActionListener(hMove);
  72. butC.addActionListener(hMove);
  73. butD.addActionListener(hMove);
  74. butE.addActionListener(hMove);
  75. butF.addActionListener(hMove);
  76. butG.addActionListener(hMove);
  77. butH.addActionListener(hMove);
  78. butI.addActionListener(hMove);
  79. Menu options = new Menu();
  80. butX.addActionListener(options);
  81. butO.addActionListener(options);
  82. butEasy.addActionListener(options);
  83. butHvH.addActionListener(options);
  84. butHard.addActionListener(options);
  85. //....Layout....\\
  86. main.setLayout(new GridLayout(4,1));
  87.  
  88. //....message....\\
  89. message.add(mssg);
  90. mssg.setText("Please choose a character.");
  91.  
  92. //....main....\\
  93. main.add(butX);
  94. main.add(or);
  95. main.add(butO);
  96. main.add(message);
  97.  
  98. //....Window....\\
  99. JFrame window = new JFrame("Tic-Tac-Toe");
  100. window.setContentPane(main);
  101. window.setSize(375,500);
  102. window.setLocation(100,100);
  103. window.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
  104. window.setVisible(true);
  105. }
  106.  
  107. private static class Menu implements ActionListener {
  108. public void actionPerformed(ActionEvent evt) {
  109. HumanMove hMove = new HumanMove();
  110. Easy cMove = new Easy();
  111. //....Character Selection....\\
  112. if (evt.getSource() == butX || evt.getSource() == butO) {
  113. difficultySelection();
  114. }
  115.  
  116. //....Game Setup....\\
  117. if (evt.getSource() == butEasy || evt.getSource() == butHard || evt.getSource() == butHvH) {
  118. ticTacToeSetup();
  119. }
  120. //....Vs. A Friend....\\
  121. if (evt.getSource() == butHvH) {
  122. hMove.actionPerformed(evt);
  123. }
  124. //....Easy....\\
  125. if (evt.getSource() == butEasy) {
  126. cMove.actionPerformed(evt);
  127. }
  128. }
  129. }
  130.  
  131. private static class Easy implements ActionListener {
  132. public void actionPerformed(ActionEvent evt) {
  133.  
  134. }
  135. }
  136.  
  137. private static class HumanVHuman implements ActionListener {
  138. public void actionPerformed(ActionEvent evt) {
  139. if (evt.getSource() == butX) {
  140. String letter = "X";
  141. String turn = "It is O's turn.";
  142. } else if (evt.getSource() == butO) {
  143. String letter = "O";
  144. String turn = "It is X's turn.";
  145. }
  146. }
  147. }
  148.  
  149. private static class HumanMove implements ActionListener {
  150. public void actionPerformed(ActionEvent evt) {
  151. Winner isThere = new Winner();
  152.  
  153. if (evt.getSource() == butA) {
  154. butA.setText(letter);
  155. mssg.setText(turn);
  156. butA1 = butA;
  157. butA = butSame;
  158. } else if (evt.getSource() == butB) {
  159. butB.setText(letter);
  160. mssg.setText(turn);
  161. butB1 = butB;
  162. butB = butSame;
  163. } else if (evt.getSource() == butC) {
  164. butC.setText(letter);
  165. mssg.setText(turn);
  166. butC1 = butC;
  167. butC = butSame;
  168. } else if (evt.getSource() == butD) {
  169. butD.setText(letter);
  170. mssg.setText(turn);
  171. butD1 = butD;
  172. butD = butSame;
  173. } else if (evt.getSource() == butE) {
  174. butE.setText(letter);
  175. mssg.setText(turn);
  176. butE1 = butE;
  177. butE = butSame;
  178. } else if (evt.getSource() == butF) {
  179. butF.setText(letter);
  180. mssg.setText(turn);
  181. butF1 = butF;
  182. butF = butSame;
  183. } else if (evt.getSource() == butG) {
  184. butG.setText(letter);
  185. mssg.setText(turn);
  186. butG1 = butG;
  187. butG = butSame;
  188. } else if (evt.getSource() == butH) {
  189. butH.setText(letter);
  190. mssg.setText(turn);
  191. butH1 = butH;
  192. butH = butSame;
  193. } else if (evt.getSource() == butI) {
  194. butI.setText(letter);
  195. mssg.setText(turn);
  196. butI1 = butI;
  197. butI = butSame;
  198. }
  199. isThere.actionPerformed(evt);
  200. }
  201. }
  202.  
  203.  
  204. private static class Winner implements ActionListener {
  205. public void actionPerformed(ActionEvent evt) {
  206. String turn = "O";
  207. String letter = "X";
  208. if ((butA1.getText() == (turn) && butB1.getText() == (turn) && butC1.getText() == (turn)) ||
  209. (butA1.getText() == (turn) && butE1.getText() == (turn) && butI1.getText() == (turn)) ||
  210. (butA1.getText() == (turn) && butD1.getText() == (turn) && butG1.getText() == (turn)) ||
  211. (butB1.getText() == (turn) && butE1.getText() == (turn) && butH1.getText() == (turn)) ||
  212. (butC1.getText() == (turn) && butF1.getText() == (turn) && butI1.getText() == (turn)) ||
  213. (butC1.getText() == (turn) && butE1.getText() == (turn) && butG1.getText() == (turn)) ||
  214. (butD1.getText() == (turn) && butE1.getText() == (turn) && butF1.getText() == (turn)) ||
  215. (butG1.getText() == (turn) && butH1.getText() == (turn) && butI1.getText() == (turn))) {
  216. mssg.setText(turn + " Wins!");
  217. butA = butSame;
  218. butB = butSame;
  219. butC = butSame;
  220. butD = butSame;
  221. butE = butSame;
  222. butF = butSame;
  223. butG = butSame;
  224. butH = butSame;
  225. butI = butSame;
  226. } else if ((butA1.getText() == (letter) && butB1.getText() == (letter) && butC1.getText() == (letter)) ||
  227. (butA1.getText() == (letter) && butE1.getText() == (letter) && butI1.getText() == (letter)) ||
  228. (butA1.getText() == (letter) && butD1.getText() == (letter) && butG1.getText() == (letter)) ||
  229. (butB1.getText() == (letter) && butE1.getText() == (letter) && butH1.getText() == (letter)) ||
  230. (butC1.getText() == (letter) && butF1.getText() == (letter) && butI1.getText() == (letter)) ||
  231. (butC1.getText() == (letter) && butE1.getText() == (letter) && butG1.getText() == (letter)) ||
  232. (butD1.getText() == (letter) && butE1.getText() == (letter) && butF1.getText() == (letter)) ||
  233. (butG1.getText() == (letter) && butH1.getText() == (letter) && butI1.getText() == (letter))) {
  234. mssg.setText(letter + " Wins!");
  235. butA = butSame;
  236. butB = butSame;
  237. butC = butSame;
  238. butD = butSame;
  239. butE = butSame;
  240. butF = butSame;
  241. butG = butSame;
  242. butH = butSame;
  243. butI = butSame;
  244. } else if ((butA1.getText() == ("X") || butA1.getText() == ("O")) &&
  245. (butB1.getText() == ("X") || butB1.getText() == ("O")) &&
  246. (butC1.getText() == ("X") || butC1.getText() == ("O")) &&
  247. (butD1.getText() == ("X") || butD1.getText() == ("O")) &&
  248. (butE1.getText() == ("X") || butE1.getText() == ("O")) &&
  249. (butF1.getText() == ("X") || butF1.getText() == ("O")) &&
  250. (butG1.getText() == ("X") || butG1.getText() == ("O")) &&
  251. (butH1.getText() == ("X") || butH1.getText() == ("O")) &&
  252. (butI1.getText() == ("X") || butI1.getText() == ("O"))){
  253. mssg.setText("It's a tie!");
  254. }
  255. }
  256. }
  257.  
  258.  
  259. public static void difficultySelection() {
  260. //....Remove....\\
  261. main.remove(butX);
  262. main.remove(or);
  263. main.remove(butO);
  264. main.remove(message); //This must be removed, then added again so it will remain on the bottom
  265.  
  266. //....Add....\\
  267. main.add(butEasy);
  268. main.add(butHard);
  269. main.add(butHvH);
  270. main.add(message);
  271. mssg.setText("Please choose a difficulty.");
  272. }
  273.  
  274. public static void ticTacToeSetup() {
  275. //....Remove....\\
  276. main.remove(butEasy);
  277. main.remove(butHard);
  278. main.remove(butHvH);
  279. main.remove(message);
  280.  
  281. //....Layout....\\
  282. main.setLayout(new GridLayout(4,4));
  283.  
  284. //....Add....\\
  285. main.add(butA);
  286. main.add(butB);
  287. main.add(butC);
  288. main.add(butD);
  289. main.add(butE);
  290. main.add(butF);
  291. main.add(butG);
  292. main.add(butH);
  293. main.add(butI);
  294. main.add(message);
  295. }
  296.  
  297. public static int easyMove() {
  298. int move = rd.nextInt(8) + 1;
  299. return move;
  300. }
  301. }
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty