使用Java GUI的Tic Tac Toe

时间:2014-01-27 12:43:10

标签: java user-interface tic-tac-toe

我正在尝试使用GUI元素在Java中编写Tic Tac Toe。我已经为控制台完成了程序,我已经有了一个带有GUI的3x3网格。

我的问题是:如何连接这些程序?我可以通过jButton上的计算机“创建”一次点击吗?

Java网格代码:

    import javax.swing.JFrame;
import javax.swing.JPanel;

public class GridLayoutDemo extends javax.swing.JFrame {
    boolean kreuz1 = true;
    private javax.swing.JPanel jPanel1 = new javax.swing.JPanel();
    private javax.swing.JButton[] jButton = new javax.swing.JButton[9];
    private int Kreuz[] = new int[9];

    public GridLayoutDemo() {
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jPanel1.setSize(getWidth(), getHeight());
        jPanel1.setLayout(new java.awt.GridLayout(3, 3));

        ButtonListener bl = new ButtonListener();

        for (int i = 0; i < 9; i++) {
            jButton[i] = new javax.swing.JButton("");
            jButton[i].addActionListener(bl);
            jPanel1.add(jButton[i]);
        }
        this.getContentPane().add(jPanel1);
        pack();
    }

    class ButtonListener implements java.awt.event.ActionListener {
        public void actionPerformed(java.awt.event.ActionEvent e) {
            for (int i = 0; i < 9; i++) {
                if (e.getSource() == jButton[i]) {
                    if(Kreuz[i]==0){
                    if (kreuz1 == true) {
                        Kreuz[i]=1;
                        jButton[i].setText("X");
                        kreuz1 = false;
                    } else {
                        Kreuz[i]=2;
                        jButton[i].setText("O");

                        kreuz1 = true;
                    }}
                }
            }
        }
    }

    public static void main(String args[]) {
        new GridLayoutDemo().setVisible(true);


    }}    

我的Tic Tac Toe代码(包含德语):

import java.util.Random;    
import java.util.Scanner;

public class TicTactooooo {
    int counter = 0;
    int x = 0;
    int y = 0;
    // Kreuz = 1
    // Kreis = 2
    // leer = 0
    int[][] feld1 = new int[3][3];
    boolean kreuz1 = true;
    boolean Spieler1G = false;
    boolean gesetzt = false;

    public static void main(String[] args) {
        TicTactooooo A = new TicTactooooo();
        A.Tic();
    }

    public void Tic() {
        int feld = 0;
        System.out.println("Willkommen bei TicTacToe!");
        System.out
                .println("Drücken sie '1' um zu starten oder '2' um zu verlassen.");
        System.out.println("Drücken sie '0' um gegen den Computer zu spielen");
        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();
        if (num > 2) {
            System.out.println("Bitte wiederholen sie die Eingabe");
            System.out.println("Drücken sie '1' um zu starten oder '2' um zu verlassen.");
            System.out.println("Drücken sie '0' um gegen den Computer zu spielen");
            num = scan.nextInt();
            if (num > 2) {
                System.out.println("Sie sind leider zu dumm um TicTacToe zu spielen!");
                System.exit(0);

            }
        }
        if (num == 2) {
            System.exit(0);
        }
        if (num == 0) {
            while (true) {
                gesetzt = false;
                System.out.println("1|2|3");
                System.out.println("4|5|6");
                System.out.println("7|8|9");
                System.out
                        .println("Drücken sie, wenn sie aufgefordert werden, die jeweilige Zahl für das jeweilige Feld");
                if (kreuz1 == true) {
                    feld = scan.nextInt();
                } else {
                    feld = TesteSiegCom(feld);
                    feld = TesteSiegGegner(feld);
                    if (counter == 1) {
                        if ((feld1[0][0] | feld1[0][2] | feld1[2][0]
                                | feld1[2][2] | feld1[2][1] | feld1[1][0]
                                | feld1[1][2] | feld1[0][1]) == 1) {
                            feld = 5;
                            gesetzt = true;
                        } else {
                            if (feld1[2][0] == 0) {
                                feld = 7;
                                gesetzt = true;
                            } else {
                                feld = 1;
                                gesetzt = true;
                            }
                        }

                    }
                    if (counter == 3) {
                        if (gesetzt == false) {
                            if ((feld1[0][1] & feld1[2][2]) == 1) {
                                feld = 3;
                                gesetzt = true;
                            }
                        }
                        if (gesetzt == false) {
                            if ((feld1[0][1] & feld1[2][0]) == 1) {
                                feld = 1;
                                gesetzt = true;
                            }
                        }
                        if (gesetzt == false) {
                            if ((feld1[1][2] & feld1[2][0]) == 1) {
                                feld = 9;
                                gesetzt = true;
                            }
                        }
                        if (gesetzt == false) {
                            if ((feld1[1][2] & feld1[0][0]) == 1) {
                                feld = 3;
                                gesetzt = true;
                            }
                        }
                        if (gesetzt == false) {
                            if ((feld1[2][1] & feld1[0][2]) == 1) {
                                feld = 9;
                                gesetzt = true;
                            }
                        }
                        if (gesetzt == false) {
                            if ((feld1[2][1] & feld1[0][0]) == 1) {
                                feld = 7;
                                gesetzt = true;
                            }
                        }
                        if (gesetzt == false) {
                            if ((feld1[1][0] & feld1[0][2]) == 1) {
                                feld = 1;
                                gesetzt = true;
                            }
                        }
                        if (gesetzt == false) {
                            if ((feld1[1][0] & feld1[2][2]) == 1) {
                                feld = 7;
                                gesetzt = true;
                            }
                        }
                        if (gesetzt == false) {
                            if ((feld1[0][0] | feld1[2][2] | feld1[0][2] | feld1[2][0]) == 1) {
                                if (feld1[2][1] == 0) {
                                    feld = 8;
                                    gesetzt = true;
                                }
                            }
                        }
                        if (gesetzt == false) {
                            if (feld1[0][0] == 0) {
                                feld = 1;
                                gesetzt = true;
                            } else {
                                if (feld1[2][2] == 0) {
                                    feld = 9;
                                    gesetzt = true;
                                } else {
                                    feld = 5;
                                    gesetzt = true;
                                }
                            }
                        }
                    }

                    if (gesetzt == false) {
                        Random R = new Random();
                        feld = R.nextInt(9) + 1;
                        gesetzt = true;
                    }
                }
                Feld9Kreuz(feld);
                Ausgabe();

                Spieler1gewonnen();
                Spieler2gewonnen();
                if (counter == 9) {
                    System.out.println("Unentschieden!");
                    System.exit(0);
                }
            }

        }
        if (num == 1) {
            while (true) {
                System.out.println("1|2|3");
                System.out.println("4|5|6");
                System.out.println("7|8|9");
                System.out
                        .println("Drücken sie, wenn sie aufgefordert werden, die jeweilige Zahl für das jeweilige Feld");
                feld = scan.nextInt();
                Feld9Kreuz(feld);
                Ausgabe();

                Spieler1gewonnen();
                Spieler2gewonnen();
                if (counter == 9) {
                    System.out.println("Unentschieden!");
                    System.exit(0);
                }
            }
        }
    }

    private int TesteSiegCom(int feld) {
        for (int testsieg = 1; testsieg < 10; testsieg++) {
            int a = (testsieg - 1) / 3;
            int b = (testsieg - 1) % 3;
            if (gesetzt == false) {
                if (feld1[a][b] == 0) {
                    feld1[a][b] = 2;
                    if (Spieler2Test()) {
                        feld = testsieg;
                        gesetzt = true;
                    }
                    feld1[a][b] = 0;

                }
            }
        }
        return feld;
    }

    private int TesteSiegGegner(int feld) {
        for (int testsieg = 1; testsieg < 10; testsieg++) {
            int a = (testsieg - 1) / 3;
            int b = (testsieg - 1) % 3;
            if (gesetzt == false) {
                if (feld1[a][b] == 0) {
                    feld1[a][b] = 1;
                    if (Spieler1Test()) {
                        feld = testsieg;
                        gesetzt = true;
                    }
                    feld1[a][b] = 0;

                }
            }
        }
        return feld;
    }

    private void Spieler2gewonnen() {
        if ((feld1[0][0] & feld1[0][1] & feld1[0][2]) == 2
                | (feld1[1][0] & feld1[1][1] & feld1[1][2]) == 2
                | (feld1[2][0] & feld1[2][1] & feld1[2][2]) == 2
                | (feld1[0][0] & feld1[1][1] & feld1[2][2]) == 2
                | (feld1[0][2] & feld1[1][1] & feld1[2][0]) == 2
                | (feld1[0][0] & feld1[1][0] & feld1[2][0]) == 2
                | (feld1[0][1] & feld1[1][1] & feld1[2][1]) == 2
                | (feld1[0][2] & feld1[1][2] & feld1[2][2]) == 2) {
            System.out
                    .println("Spieler 2 hat gewonnen! Herzlichen Glückwunsch!");
            System.exit(0);
        }
    }

    private void Spieler1gewonnen() {
        if ((feld1[0][0] & feld1[0][1] & feld1[0][2]) == 1
                | (feld1[1][0] & feld1[1][1] & feld1[1][2]) == 1
                | (feld1[2][0] & feld1[2][1] & feld1[2][2]) == 1
                | (feld1[0][0] & feld1[1][1] & feld1[2][2]) == 1
                | (feld1[0][2] & feld1[1][1] & feld1[2][0]) == 1
                | (feld1[0][0] & feld1[1][0] & feld1[2][0]) == 1
                | (feld1[0][1] & feld1[1][1] & feld1[2][1]) == 1
                | (feld1[0][2] & feld1[1][2] & feld1[2][2]) == 1) {
            System.out
                    .println("Spieler 1 hat gewonnen! Herzlichen Glückwunsch!");
            System.exit(0);
        }
    }

    public boolean Spieler1Test() {
        return ((feld1[0][0] & feld1[0][1] & feld1[0][2]) == 1
                | (feld1[1][0] & feld1[1][1] & feld1[1][2]) == 1
                | (feld1[2][0] & feld1[2][1] & feld1[2][2]) == 1
                | (feld1[0][0] & feld1[1][1] & feld1[2][2]) == 1
                | (feld1[0][2] & feld1[1][1] & feld1[2][0]) == 1
                | (feld1[0][0] & feld1[1][0] & feld1[2][0]) == 1
                | (feld1[0][1] & feld1[1][1] & feld1[2][1]) == 1 | (feld1[0][2]
                & feld1[1][2] & feld1[2][2]) == 1);
    }

    public boolean Spieler2Test() {
        return ((feld1[0][0] & feld1[0][1] & feld1[0][2]) == 2
                | (feld1[1][0] & feld1[1][1] & feld1[1][2]) == 2
                | (feld1[2][0] & feld1[2][1] & feld1[2][2]) == 2
                | (feld1[0][0] & feld1[1][1] & feld1[2][2]) == 2
                | (feld1[0][2] & feld1[1][1] & feld1[2][0]) == 2
                | (feld1[0][0] & feld1[1][0] & feld1[2][0]) == 2
                | (feld1[0][1] & feld1[1][1] & feld1[2][1]) == 2 | (feld1[0][2]
                & feld1[1][2] & feld1[2][2]) == 2);
    }

    private void Ausgabe() {
        if (feld1[0][0] == 0) {
            System.out.print(" |");
        } else {
            if (feld1[0][0] == 1) {
                System.out.print("X|");
            } else {
                System.out.print("O|");
            }
        }

        if (feld1[0][1] == 0) {
            System.out.print(" |");
        } else {
            if (feld1[0][1] == 1) {
                System.out.print("X|");
            } else {
                System.out.print("O|");
            }
        }

        if ((feld1[0][2] == 0)) {
            System.out.println("  ");
        } else {
            if (feld1[0][2] == 1) {
                System.out.println("X ");
            } else {
                System.out.println("O ");
            }
        }

        if (feld1[1][0] == 0) {
            System.out.print(" |");
        } else {
            if (feld1[1][0] == 1) {
                System.out.print("X|");
            } else {
                System.out.print("O|");
            }
        }

        if (feld1[1][1] == 0) {
            System.out.print(" |");
        } else {
            if (feld1[1][1] == 1) {
                System.out.print("X|");
            } else {
                System.out.print("O|");
            }
        }

        if (feld1[1][2] == 0) {
            System.out.println("  ");
        } else {
            if (feld1[1][2] == 1) {
                System.out.println("X ");
            } else {
                System.out.println("O ");
            }
        }

        if (feld1[2][0] == 0) {
            System.out.print(" |");
        } else {
            if (feld1[2][0] == 1) {
                System.out.print("X|");
            } else {
                System.out.print("O|");
            }
        }

        if (feld1[2][1] == 0) {
            System.out.print(" |");
        } else {
            if (feld1[2][1] == 1) {
                System.out.print("X|");
            } else {
                System.out.print("O|");
            }
        }

        if (feld1[2][2] == 0) {
            System.out.println("  ");
        } else {
            if (feld1[2][2] == 1) {
                System.out.println("X ");
            } else {
                System.out.println("O ");
            }
        }
    }

    private void Feld9Kreuz(int feld) {
        x = (feld - 1) / 3;
        y = (feld - 1) % 3;
        if (feld1[x][y] != 0) {
            System.out.println("Das Feld ist leider schon belegt!");
        } else {
            if (kreuz1 == true) {
                feld1[x][y] = 1;
                kreuz1 = false;
            } else {
                feld1[x][y] = 2;
                kreuz1 = true;
            }

            counter++;
        }
    }
}

0 个答案:

没有答案