Nur die besten Spiele ;3
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

117 lines
3.1 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. package TicTacToe;
  2. import java.awt.Graphics;
  3. import java.awt.Graphics2D;
  4. import java.awt.geom.Line2D;
  5. import javax.swing.JFrame;
  6. import javax.swing.JOptionPane;
  7. import javax.swing.JPanel;
  8. public class TicTacToeGame extends JPanel {
  9. private static final long serialVersionUID = 1L;
  10. private static final int width = 600, height = 600;
  11. private static final int maxPlayers = 3;
  12. private static final int playFieldSize = 9;
  13. public cell[] field;
  14. public int playerID = 1;
  15. public int turns = 0;
  16. public TicTacToeGame() {
  17. this.setSize(width, height);
  18. setLayout(null);
  19. initField();
  20. }
  21. public static void main(String[] args) {
  22. JFrame f = new JFrame();
  23. TicTacToeGame ttt = new TicTacToeGame();
  24. f.add(ttt);
  25. f.setSize(width,height);
  26. f.setLayout(null);
  27. f.setVisible(true);
  28. }
  29. public void initField() {
  30. field = new cell[playFieldSize];
  31. for(int i = 0; i < field.length; i++) {
  32. field[i] = new cell(this);
  33. add(field[i]);
  34. }
  35. for(int i = 0; i < field.length; i++) {
  36. if(i < 3) {
  37. field[i].setBounds(150 + i*100, 150 , 100, 100);
  38. } else if (i < 6) {
  39. field[i].setBounds(150 + i%3*100, 250 , 100, 100);
  40. } else {
  41. field[i].setBounds(150 + i%3*100, 350 , 100, 100);
  42. }
  43. }
  44. }
  45. @Override
  46. protected void paintComponent(Graphics g) {
  47. super.paintComponent(g);
  48. Graphics2D g2 = (Graphics2D) g;
  49. Line2D lin = new Line2D.Float(250, 150, 250, 450);
  50. Line2D lin2 = new Line2D.Float(350, 150, 350, 450);
  51. Line2D lin3 = new Line2D.Float(150, 250, 450, 250);
  52. Line2D lin4 = new Line2D.Float(150, 350, 450, 350);
  53. g2.draw(lin);
  54. g2.draw(lin2);
  55. g2.draw(lin3);
  56. g2.draw(lin4);
  57. }
  58. public void endTurn() {
  59. if(checkPlayfield() != 0) {
  60. JOptionPane.showMessageDialog(getParent(),"Player: " + playerID + " Wins!");
  61. resetGame();
  62. }
  63. turns++;
  64. if(turns >= playFieldSize) {
  65. JOptionPane.showMessageDialog(getParent(),"Draw!");
  66. resetGame();
  67. }
  68. playerID++;
  69. if(playerID >= maxPlayers) {
  70. playerID = 1;
  71. }
  72. }
  73. public int checkPlayfield() {
  74. if ((field[0].playerID == playerID && field[1].playerID == playerID && field[2].playerID == playerID)
  75. || (field[0].playerID == playerID && field[3].playerID == playerID && field[6].playerID == playerID)
  76. || (field[8].playerID == playerID && field[5].playerID == playerID && field[2].playerID == playerID)
  77. || (field[8].playerID == playerID && field[7].playerID == playerID && field[6].playerID == playerID)
  78. || (field[0].playerID == playerID && field[4].playerID == playerID && field[8].playerID == playerID)
  79. || (field[0].playerID == playerID && field[4].playerID == playerID && field[8].playerID == playerID)
  80. || (field[2].playerID == playerID && field[4].playerID == playerID && field[6].playerID == playerID)
  81. || (field[3].playerID == playerID && field[4].playerID == playerID && field[5].playerID == playerID)
  82. || (field[1].playerID == playerID && field[4].playerID == playerID && field[7].playerID == playerID)) {
  83. return playerID;
  84. }
  85. return 0;
  86. }
  87. public void resetGame() {
  88. for (cell c : field) {
  89. c.reset();
  90. }
  91. playerID = 1;
  92. turns = 0;
  93. }
  94. }