Guest User

Untitled

a guest
Jul 15th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.32 KB | None | 0 0
  1. import java.awt.*;
  2. import java.awt.event.*;
  3.  
  4. public class KiK extends Canvas implements ActionListener, MouseListener
  5. {
  6. int[][] plansza;
  7. int wspR1, wspK1, wspR2, wspK2,gra;
  8. static final int pusto = 0,O = 1,X = 2;
  9. boolean tura;
  10. Label raport;
  11.  
  12. public KiK()
  13. {
  14. setBackground(Color.WHITE);
  15. addMouseListener(this);
  16. raport = new Label("",Label.CENTER);
  17. plansza = new int[15][15];
  18. newGame();
  19.  
  20. Frame frame = new Frame("K\u00f3\u0142ko i krzy\u017cyk");
  21. frame.addWindowListener(new WindowAdapter()
  22. {
  23. public void windowClosing(WindowEvent ev)
  24. {
  25. System.exit(0);
  26. }
  27. });
  28.  
  29. setSize(218,238);
  30. frame.add(this,"Center");
  31. frame.add(raport,"South");
  32. frame.pack();
  33. frame.setVisible(true);
  34. frame.setResizable(false);
  35. frame.setLocationRelativeTo(null);
  36.  
  37. MenuBar mb = new MenuBar();
  38. frame.setMenuBar(mb);
  39. Menu file = new Menu("Plik");
  40. mb.add(file);
  41. MenuItem newgame = new MenuItem("Nowa gra",new MenuShortcut(KeyEvent.VK_N));
  42. newgame.addActionListener(this);
  43. file.add(newgame);
  44. file.add(new MenuItem ("-"));
  45. MenuItem quit = new MenuItem("Zamknij", new MenuShortcut(KeyEvent.VK_Q));
  46. quit.addActionListener(this);
  47. file.add(quit);
  48. Menu help = new Menu("Pomoc");
  49. mb.setHelpMenu(help);
  50. MenuItem rules = new MenuItem ("Zasady gry");
  51. rules.addActionListener(this);
  52. help.add(rules);
  53. MenuItem about = new MenuItem ("O programie...");
  54. about.addActionListener(this);
  55. help.add(about);
  56. }
  57.  
  58. public void actionPerformed(ActionEvent event)
  59. {
  60. if(event.getActionCommand().startsWith("Nowa gra"))
  61. newGame();
  62. else if (event.getActionCommand().startsWith("Zamknij"))
  63. System.exit(0);
  64. else if(event.getActionCommand().startsWith("O programie..."))
  65. getAbout();
  66. else if(event.getActionCommand().startsWith("Zasady gry"))
  67. getRules();
  68. }
  69.  
  70. void getAbout()
  71. {
  72. Okna okna = new Okna();
  73. okna.new OProgramie();
  74. }
  75.  
  76. void getRules()
  77. {
  78. Okna okna = new Okna();
  79. okna.new ZasadyGry();
  80. }
  81.  
  82. void newGame()
  83. {
  84. for (int rzad = 0; rzad < 15; rzad++)
  85. for (int kolumna = 0; kolumna < 15; kolumna++)
  86. plansza[rzad][kolumna] = pusto;
  87. gra = X;
  88. raport.setText("Gr\u0119 rozpoczyna gracz 'X'");
  89. tura = true;
  90. wspR1 = -1;
  91. repaint();
  92. }
  93.  
  94. void getArea(int rzad, int kolumna)
  95. {
  96. if ( plansza[rzad][kolumna] != pusto )
  97. {
  98. if (gra == X)
  99. raport.setText("Gracz 'X' - wybierz puste pole.");
  100. else
  101. raport.setText("Gracz 'O' - wybierz puste pole.");
  102. return;
  103. }
  104.  
  105. plansza[rzad][kolumna] = gra;
  106. Graphics g = getGraphics();
  107. getElement(g, gra, rzad, kolumna);
  108. g.dispose();
  109.  
  110. if (zwyciezca(rzad,kolumna))
  111. {
  112. if (gra == O)
  113. {
  114. Okna okna = new Okna();
  115. okna.new KoniecGry("Zwyci\u0119\u017ca 'O' ! Gratulacje!!!");
  116. tura = false;
  117. }
  118. else
  119. {
  120. Okna okna = new Okna();
  121. okna.new KoniecGry("Zwyci\u0119\u017ca 'X' ! Gratulacje!!!");
  122. tura = false;
  123. }
  124. Graphics gl = getGraphics();
  125. getLine(gl);
  126. gl.dispose();
  127. return;
  128. }
  129.  
  130. boolean wolnePola = false;
  131. for (int i = 0; i < 15; i++)
  132. for (int j = 0; j < 15; j++)
  133. if (plansza[i][j] == pusto)
  134. wolnePola = true;
  135.  
  136. if (wolnePola == false)
  137. {
  138. tura = false;
  139. return;
  140. }
  141.  
  142. if (gra == X)
  143. {
  144. gra = O;
  145. raport.setText("Kolej na ruch gracza 'O'");
  146. }
  147. else
  148. {
  149. gra = X;
  150. raport.setText("Kolej na ruch gracza 'X'");
  151. }
  152. }
  153. private boolean zwyciezca(int rzad, int kolumna)
  154. {
  155. if (licznik( plansza[rzad][kolumna], rzad, kolumna, 1, 0 ) >= 5)
  156. return true;
  157. if (licznik( plansza[rzad][kolumna], rzad, kolumna, 0, 1 ) >= 5)
  158. return true;
  159. if (licznik( plansza[rzad][kolumna], rzad, kolumna, 1, -1 ) >= 5)
  160. return true;
  161. if (licznik( plansza[rzad][kolumna], rzad, kolumna, 1, 1 ) >= 5)
  162. return true;
  163.  
  164. wspR1 = -1;
  165. return false;
  166. }
  167. private int licznik(int gracz, int rzad, int kolumna, int wspX, int wspY)
  168. {
  169. int l = 1;
  170. int r, k;
  171.  
  172. r = rzad + wspX;
  173. k = kolumna + wspY;
  174. while ( r >= 0 && r < 15 && k >= 0 && k < 15 && plansza[r][k] == gracz )
  175. {
  176. l++;
  177. r += wspX;
  178. k += wspY;
  179. }
  180. wspR1 = r - wspX;
  181. wspK1 = k - wspY;
  182.  
  183. r = rzad - wspX;
  184. k = kolumna - wspY;
  185. while ( r >= 0 && r < 15 && k >= 0 && k < 15 && plansza[r][k] == gracz )
  186. {
  187.  
  188. l++;
  189. r -= wspX;
  190. k -= wspY;
  191. }
  192.  
  193. wspR2 = r + wspX;
  194. wspK2 = k + wspY;
  195. return l;
  196. }
  197.  
  198. public void paint(Graphics g)
  199. {
  200. g.setColor(Color.darkGray);
  201. for (int i = 1; i < 15; i++)
  202. {
  203. g.drawLine(1 + 15*i, 0, 1 + 15*i, getSize().height);
  204. g.drawLine(0, 1 + 15*i, getSize().width, 1 + 15*i);
  205. }
  206. g.setColor(Color.BLACK);
  207. g.drawRect(0,0,getSize().width-1,getSize().height-1);
  208. g.drawRect(1,1,getSize().width-3,getSize().height-3);
  209.  
  210. for (int rzad = 0; rzad < 15; rzad++)
  211. for (int kolumna = 0; kolumna < 15; kolumna++)
  212. if (plansza[rzad][kolumna] != pusto)
  213. getElement(g, plansza[rzad][kolumna], rzad, kolumna);
  214.  
  215. if (wspR1 >= 0)
  216. getLine(g);
  217. }
  218.  
  219. private void getElement(Graphics g, int piece, int rzad, int kolumna)
  220. {
  221. if (piece == O)
  222. {
  223. g.setColor(Color.BLUE);
  224. g.drawOval(3 + 15*kolumna, 3 + 15*rzad, 10, 10);
  225. }
  226. else
  227. {
  228. g.setColor(Color.BLACK);
  229. g.drawLine(2+15*kolumna,2+15*rzad,15*kolumna+15,15*rzad+15);
  230. g.drawLine(15*kolumna+15,15*rzad+2,2+15*kolumna,15+15*rzad);
  231. }
  232. }
  233.  
  234. private void getLine(Graphics g)
  235. {
  236. g.setColor(Color.red);
  237. g.drawLine( 8 + 15*wspK1, 8 + 15*wspR1, 8 + 15*wspK2, 8 + 15*wspR2 );
  238. if (wspR1 == wspR2)
  239. g.drawLine( 8 + 15*wspK1, 7 + 15*wspR1, 8 + 15*wspK2, 7 + 15*wspR2 );
  240. else
  241. g.drawLine( 7 + 15*wspK1, 8 + 15*wspR1, 7 + 15*wspK2, 8 + 15*wspR2 );
  242. }
  243.  
  244. public void mousePressed(MouseEvent evt)
  245. {
  246. if (tura == false)
  247. raport.setText("Wybierz 'Nowa gra' z menu 'Plik'");
  248. else
  249. {
  250. int kolumna = (evt.getX() - 2) / 15;
  251. int rzad = (evt.getY() - 2) / 15;
  252. if (kolumna >= 0 && kolumna < 15 && rzad >= 0 && rzad < 15)
  253. getArea(rzad,kolumna);
  254. }
  255. }
  256. public void mouseReleased(MouseEvent evt) { }
  257. public void mouseClicked(MouseEvent evt) { }
  258. public void mouseEntered(MouseEvent evt) { }
  259. public void mouseExited(MouseEvent evt) { }
  260. }
Add Comment
Please, Sign In to add comment