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