4

つまり、これは大学の課題であり、AIが「勝利を収める」方法を知らず、開始時の動きがいつものようにランダムではないことを除いて、すべてがほぼ完了しています。そして彼らの道を下って行きます。割り当てには、AIが「勝利を収める」または「勝利をブロックする」ことができるという点で2つのルールのみが必要でした。

また、ボードがいっぱいになってもゲームは終了しないようです。それは私に私の動きを選ぶように頼みます。

どうすれば改善できるのか、どこが間違っているのかを指摘してくれる人がいるといいなと思っていました。

どんな助けでも大歓迎です。

これが遊びです

import java.util.Scanner;

public class play {



    public static void main(String[] args) {


        System.out.println("Welcome to Tickle Tackle Toe!!! :D");
        System.out.println();

        //creat markers
        String marker1 = "x";
        String marker2 = "o";
        boolean playAgain = true;

        Scanner s = new Scanner(System.in);



        //create player objects
        Human human = new Human();
        Computer computer = new Computer();

        while(playAgain){
        //run board setup
        set Setup = new set();

        Setup.createBoard();
        Setup.printBoard();

        System.out.println("please choose your marker");
        System.out.println("type 1 for 'x' or 2 for 'o'");

        //set markers
        if(s.nextInt() == 1){
         // create player objects
         human.setMarker("x");
         computer.setMarker("o");
        } 
        else
        {
        human.setMarker("o");
        computer.setMarker("x");

        }




    // determine who goes first
    int first = (int) (Math.random() * 2);





    boolean won = false;
    int turns = 0;

   if(first == 0){
   System.out.println("You go first!");
    System.out.println();
   while(!won){
    human.takeTurn(Setup.getBoard());
    turns++;
    Setup.printBoard();
    if(Setup.hasWon(Setup.getBoard())){
        won = true;
        System.out.println("Congrats you won!");
        }
        if(turns == 9){
        won = true;
        System.out.println("Its a draw!");
        break;
        }
    if(!won){
        computer.takeTurn(Setup.getBoard(), human);
        turns++;
        System.out.println();
        Setup.printBoard();
        System.out.println();
        if(Setup.hasWon(Setup.getBoard())){
            won = true;
            System.out.println("You lost!");
            }
            if(turns == 9){
        won = true;
        System.out.println("Its a draw!");
        break;
        }
        }

   }  // close while 1
  }
  else {

    System.out.println("Computer goes first!");
    System.out.println();
    while(!won){
    computer.takeTurn(Setup.getBoard(), human);
    turns++;
    Setup.printBoard();
    if(Setup.hasWon(Setup.getBoard())){
        won = true;
        System.out.println("You lost!");
        }
    if(!won){
        human.takeTurn(Setup.getBoard());
        turns++;
        System.out.println();
        Setup.printBoard();
        System.out.println();
        if(Setup.hasWon(Setup.getBoard())){
            won = true;
            System.out.println("Congrats you won!");
            }
        }



   }  // close while 2

  }

  System.out.println("Would you like to play again? Type 1 for yes or 2 to quit");
   System.out.println();
   if(s.nextInt() == 2){
   playAgain = false;
   }

  }

}
}

そしてここにコンピュータクラスがあります

class Computer extends player {

    public Computer(){

    }

    int boardsize = 3;


    public void takeTurn(String[][] board, Human human) {

    int vertical = 0;
    int horizontal = 0;
    int diagonal = 0;
    boolean mademove = false;

    // check if you can take a win horizontally
    for(int i = 0; i<3; i++){

        if(board[0][i].equals(board[1][i]) && board[0][i].equals(Marker)){

            if(board[2][i] != human.getMarker()){
            board[2][i] = Marker;
            mademove = true;
            return;
            }

        }

    }

    for(int i = 0; i<3; i++){

        if(board[2][i].equals(board[1][i]) && board[2][i].equals(Marker)){

            if(board[0][i] != human.getMarker()){
            board[0][i] = Marker;
            mademove = true;
            return;
            }

        }


    }


        // check if you can take a win vertically
    for(int i = 0; i<3; i++){

        if(board[i][0].equals(board[i][1]) && board[i][0].equals(Marker)){

            if(board[i][2] != human.getMarker()){
            board[i][2] = Marker;
            mademove = true;
            return;
            }

        }

    }

    for(int i = 0; i<3; i++){

        if(board[i][2].equals(board[i][1]) && board[i][2].equals(Marker)){

            if(board[i][0] != human.getMarker()){
            board[i][0] = Marker;
            mademove = true;
            return;
            }

        }

    }


    // check if you can take a win diagonally 


        if(board[0][0].equals(board[1][1]) && board[0][0].equals(Marker)){

            if(board[2][2] != human.getMarker()){
            board[2][2] = Marker;
            mademove = true;
            return;
            }
    }

        if(board[2][2].equals(board[1][1]) && board[2][2].equals(Marker)){

            if(board[0][0] != human.getMarker()){
            board[0][0] = Marker;
            mademove = true;
            return;
            }
    }

        if(board[0][0].equals(board[1][1]) && board[0][0].equals(Marker)){

            if(board[2][2] != human.getMarker()){
            board[2][2] = Marker;
            mademove = true;
            return;
            }
    }

        if(board[0][2].equals(board[1][1]) && board[0][2].equals(Marker)){

            if(board[2][0] != human.getMarker()){
            board[2][0] = Marker;
            mademove = true;
            return;
            }
    }

        if(board[2][0].equals(board[1][1]) && board[2][0].equals(Marker)){

            if(board[0][2] != human.getMarker()){
            board[0][2] = Marker;
            mademove = true;
            return;
            }
    }


    // BLOCKS!!!! //

    // check if you can block a win horizontally
    for(int i = 0; i<3; i++){

        if(board[0][i].equals(board[1][i]) && board[0][i].equals(human.getMarker())){
            if(board[2][i] != Marker){
            board[2][i] = Marker;
            mademove = true;
            return;
            }

        }

    }

    for(int i = 0; i<3; i++){

        if(board[2][i].equals(board[1][i]) && board[0][i].equals(human.getMarker())){

            if(board[0][i] != Marker){
            board[0][i] = Marker;
            mademove = true;
            return;
            }

        }


    }



    // check if you can block a win horizontally
    for(int i = 0; i<3; i++){

        if(board[i][0].equals(board[i][1]) && board[i][0].equals(human.getMarker())){

            if(board[i][2] != Marker){
            board[i][2] = Marker;
            mademove = true;
            return;
            }

        }

    }

    for(int i = 0; i<3; i++){

        if(board[i][2].equals(board[i][1]) && board[i][2].equals(human.getMarker())){

            if(board[i][0] != Marker){
            board[i][0] = Marker;
            mademove = true;
            return;
            }

        }

    }


    // check if you can block a win diagonally 


        if(board[0][0].equals(board[1][1]) && board[0][0].equals(human.getMarker())){

            if(board[2][2] != Marker){
            board[2][2] = Marker;
            mademove = true;
            return;
            }
    }

        if(board[2][2].equals(board[1][1]) && board[2][2].equals(human.getMarker())){

            if(board[0][0] != Marker){
            board[0][0] = Marker;
            mademove = true;
            return;
            }
    }

        if(board[0][0].equals(board[1][1]) && board[0][0].equals(human.getMarker())){
            board[2][2] = Marker;
            mademove = true;
            return;
    }

        if(board[0][2].equals(board[1][1]) && board[0][2].equals(human.getMarker())){

            if(board[2][0] != Marker){
            board[2][0] = Marker;
            mademove = true;
            return;
            }
    }

        if(board[2][0].equals(board[1][1]) && board[2][0].equals(human.getMarker())){

            if(board[0][2] != Marker){
            board[0][2] = Marker;
            mademove = true;
            return;
            }
    }




         // make random move if above rules dont apply
        for(int i = 0; i<3; i++){
        if(board[i][0] != "x" && board[i][0] != "o"){
            board[i][0] = Marker;
            return;
            }
        }
        for(int i = 0; i<3; i++){
        if(board[i][1] != "x" && board[i][0] != "o"){
            board[i][1] = Marker;
            return;
            }
        }
            for(int i = 0; i<3; i++){
        if(board[i][2] != "x" && board[i][0] != "o"){
            board[i][2] = Marker;
            return;
            }
        }


    }   
}
4

4 に答える 4

2

9枚目を入れて勝つと、「勝った」と「引き分けだ!」の両方がもらえます。メッセージ、私はそれが意図された振る舞いではないと思います。9ターン目に負けても同じです。一方、誰も勝てないとドローコードに到達しないため、ゲームは終了しません。これは簡単に修正できます。

if(!won){
    computer.takeTurn(Setup.getBoard(), human);
    turns++;
    System.out.println();
    Setup.printBoard();
    System.out.println();
    if(Setup.hasWon(Setup.getBoard())){
        won = true;
        System.out.println("You lost!");
    } else if (turns == 9){
        won = true;
        System.out.println("Its a draw!");
    }
}

ランダムな移動については、現在のコードが9つのタイルすべてをループし、最初に遭遇した空の場所にマーカーを配置してから戻ります。必要なのは、すべての空のスポットのリストを作成し、それらの1つをランダムに選択することです。または、0〜2のx座標とy座標を生成し続け、空かどうかを確認し、空の場合はマーカーを配置します。

于 2012-05-19T12:15:55.027 に答える
1

それで、私がこれのために行った古いコードを見つけて、私がそれをどのように行ったかに答えた後、私は戻ってくるだろうと思いました。

おそらくまだ完璧にはほど遠いですが、非常に近いです。

私は、マーカーを取得して設定する非常に単純なクラスのプレーヤーから始めました。

public class player {

    public String Marker;

    // set marker method

    public void setMarker(String marker){

        Marker = marker;

    }

    //get marker method 

    public String getMarker(){

        return Marker;

    }

}

次に、移動するたびにボードをセットアップして印刷するセットクラスを追加しました。

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



public class set {

    // setup variables default board size and board
    private int N = 3;
    public String[][] board = new String [N][N];

    public boolean hasWon (String [] [] board){
        //horizontal 
        for(int i = 0; i<3; i++){
            if(board[i][0].equals(board[i][1]) && board[i][1].equals(board[i][2])){
                return true;
            }
        }
        //vertical
        for(int i = 0; i<3; i++){
            if(board [0][i].equals(board[1][i]) && board[1][i].equals(board[2][i])){
                return true;
            }
        }
        //diagonal
        if(board[0][0].equals(board[1][1]) && board[1][1].equals(board[2][2]) || board[2][0].equals(board[1][1]) && board[1][1].equals(board[0][2]))
            return true;
        return false;
    }


    int x = 1;

    public void createBoard(){
        for(int i = 0; i < board.length; i++){
            for(int j = 0; j < board.length; j++){
                board[i][j] = "" + (x);
                x++;
            }
        }
    }

    public void printBoard(){

        for(int i = 0; i < board.length; i++){
            for(int j = 0; j < board.length; j++){
                System.out.print("[" + board[i][j] + "]" + " ");

            }
            System.out.println();
        }

    }

    public String[][] getBoard(){

        return board;

    }



}

AIを使ったコンピュータークラス。

class Computer extends player {

public Computer(){

}

int boardsize = 3;


public void takeTurn(String[][] board, Human human) {

    int vertical = 0;
    int horizontal = 0;
    int diagonal = 0;
    boolean mademove = false;

    // check if you can take a win horizontally
    for(int i = 0; i<3; i++){

        if(board[0][i].equals(board[1][i]) && board[0][i].equals(Marker)){

            if(board[2][i] != human.getMarker() && board[2][i] != Marker){
                board[2][i] = Marker;
                mademove = true;
                return;
            }

        }

    }

    for(int i = 0; i<3; i++){

        if(board[2][i].equals(board[1][i]) && board[2][i].equals(Marker)){

            if(board[0][i] != human.getMarker() && board[0][i] != Marker){
                board[0][i] = Marker;
                mademove = true;
                return;
            }

        }


    }



    // check if you can take a win horizontally
    for(int i = 0; i<3; i++){

        if(board[i][0].equals(board[i][1]) && board[i][0].equals(Marker)){

            if(board[i][2] != human.getMarker() && board[i][2] != Marker){
                board[i][2] = Marker;
                mademove = true;
                return;
            }

        }

    }

    for(int i = 0; i<3; i++){

        if(board[i][2].equals(board[i][1]) && board[i][2].equals(Marker)){

            if(board[i][0] != human.getMarker() && board[i][0] != Marker){
                board[i][0] = Marker;
                mademove = true;
                return;
            }

        }

    }


    // check if you can take a win diagonally bottom


    if(board[0][0].equals(board[1][1]) && board[0][0].equals(Marker)){

        if(board[2][2] != human.getMarker() && board[2][2] != Marker){
            board[2][2] = Marker;
            mademove = true;
            return;
        }
    }

    if(board[2][2].equals(board[1][1]) && board[2][2].equals(Marker)){

        if(board[0][0] != human.getMarker() && board[0][0] != Marker){
            board[0][0] = Marker;
            mademove = true;
            return;
        }
    }

    if(board[0][0].equals(board[1][1]) && board[0][0].equals(Marker)){

        if(board[2][2] != human.getMarker() && board[2][2] != Marker){
            board[2][2] = Marker;
            mademove = true;
            return;
        }
    }

    if(board[0][2].equals(board[1][1]) && board[0][2].equals(Marker)){

        if(board[2][0] != human.getMarker() && board[2][0] != Marker){
            board[2][0] = Marker;
            mademove = true;
            return;
        }
    }

    if(board[2][0].equals(board[1][1]) && board[2][0].equals(Marker)){

        if(board[0][2] != human.getMarker() && board[0][2] != Marker){
            board[0][2] = Marker;
            mademove = true;
            return;
        }
    }


    // BLOCKS!!!! //

    // check if you can block a win horizontally
    for(int i = 0; i<3; i++){

        if(board[0][i].equals(board[1][i]) && board[0][i].equals(human.getMarker())){
            if(board[2][i] != Marker && board[2][i] != human.getMarker()){
                board[2][i] = Marker;
                mademove = true;
                return;
            }

        }

    }

    for(int i = 0; i<3; i++){

        if(board[2][i].equals(board[1][i]) && board[0][i].equals(human.getMarker())){

            if(board[0][i] != Marker && board[0][i] != human.getMarker()){
                board[0][i] = Marker;
                mademove = true;
                return;
            }

        }


    }

    // check if you can block a win vertically


    for(int i = 0; i<3; i++){

        if(board[i][0].equals(board[i][1]) && board[i][0].equals(human.getMarker())){

            if(board[i][2] != Marker && board[i][2] != human.getMarker()){
                board[i][2] = Marker;
                mademove = true;
                return;
            }

        }

    }

    for(int i = 0; i<3; i++){

        if(board[i][2].equals(board[i][1]) && board[i][2].equals(human.getMarker())){

            if(board[i][0] != Marker && board[i][0] != human.getMarker()){
                board[i][0] = Marker;
                mademove = true;
                return;
            }

        }

    }

    for(int i = 0; i<3; i++){

        if(board[2][i].equals(board[1][i]) && board[2][i].equals(human.getMarker())){

            if(board[0][i] != Marker && board[0][i] != human.getMarker()){
                board[0][i] = Marker;
                mademove = true;
                return;
            }

        }

    }



    // check if you can block a win diagonally 


    if(board[0][0].equals(board[1][1]) && board[0][0].equals(human.getMarker())){

        if(board[2][2] != Marker && board[2][2] != human.getMarker()){
            board[2][2] = Marker;
            mademove = true;
            return;
        }
    }

    if(board[2][2].equals(board[1][1]) && board[2][2].equals(human.getMarker())){

        if(board[0][0] != Marker && board[0][0] != human.getMarker()){
            board[0][0] = Marker;
            mademove = true;
            return;
        }
    }

    if(board[0][0].equals(board[1][1]) && board[0][0].equals(human.getMarker())){
        if(board[2][2] != Marker && board[2][2] != human.getMarker()){
            board[2][2] = Marker;
            mademove = true;
            return;
        }
    }

    if(board[0][2].equals(board[1][1]) && board[0][2].equals(human.getMarker())){

        if(board[2][0] != Marker && board[2][0] != human.getMarker()){
            board[2][0] = Marker;
            mademove = true;
            return;
        }
    }

    if(board[2][0].equals(board[1][1]) && board[2][0].equals(human.getMarker())){

        if(board[0][2] != Marker && board[0][2] != human.getMarker()){
            board[0][2] = Marker;
            mademove = true;
            return;
        }
    }




    // make random move if above rules dont apply
    int rand1 = 0;
    int rand2 = 0;

    while(!mademove){

        rand1 = (int) (Math.random() * 3);
        rand2 = (int) (Math.random() * 3);

        if(board[rand1][rand2] != "x" && board[rand1][rand2] != "o"){
            board[rand1][rand2] = Marker;
            mademove = true;        

        }

    }


}   

}

人間のクラス

import java.util.Scanner;

クラスHumanextendsplayer {

public Human(){

}


public void takeTurn(String[][] board) {

    Scanner s = new Scanner(System.in);

    boolean turn = true;

    while(turn){
        System.out.println("please enter row");
        int row = s.nextInt();
        System.out.println("please enter col");
        int col = s.nextInt();
        System.out.print("you entered "+row+" "+col);
        System.out.println();
        if(board[row - 1][col - 1] != "x" && board[row - 1][col - 1] != "o"){
            board[row - 1][col - 1] = Marker;
            turn = false;
        } // closes if
        else {
            System.out.println("Already Marker here! please guess again!");
        }
    } // ends while
} // ends method

} // ends class

最後にゲームのプレイ。

    import java.util.Scanner;

public class play {



    public static void main(String[] args) {


        System.out.println("Welcome to Tickle Tackle Toe!!! :D");
        System.out.println();

        //creat markers
        String marker1 = "x";
        String marker2 = "o";
        boolean playAgain = true;

        Scanner s = new Scanner(System.in);



        //create player objects
        Human human = new Human();
        Computer computer = new Computer();

        while(playAgain){
            //run board setup
            set Setup = new set();

            Setup.createBoard();
            Setup.printBoard();

            System.out.println("please choose your marker");
            System.out.println("type 1 for 'x' or 2 for 'o'");

            //set markers
            if(s.nextInt() == 1){
                // create player objects
                human.setMarker("x");
                computer.setMarker("o");
            } 
            else
            {
                human.setMarker("o");
                computer.setMarker("x");

            }




            // determine who goes first
            int first = (int) (Math.random() * 2);





            boolean won = false;
            int turns = 0;

            if(first == 0){
                System.out.println("You gots the winz!");
                System.out.println();
                while(!won){
                    human.takeTurn(Setup.getBoard());
                    turns++;
                    Setup.printBoard();
                    if(Setup.hasWon(Setup.getBoard())){
                        won = true;
                        System.out.println("Congrats you won!");
                    }
                    if(turns == 9){
                        won = true;
                        System.out.println("Its a bore draw!");
                        break;
                    }
                    if(!won){
                        computer.takeTurn(Setup.getBoard(), human);
                        turns++;
                        System.out.println();
                        Setup.printBoard();
                        System.out.println();
                        if(Setup.hasWon(Setup.getBoard())){
                            won = true;
                            System.out.println("You just got pwned by an A.I with an incomplete rule set. FACEPALM.");
                        }
                        if(turns == 9){
                            won = true;
                            System.out.println("Its a bore draw!");
                            break;
                        }
                    }

                }  // close while 1
            }
            else {

                System.out.println("Computer goes first!");
                System.out.println();
                while(!won){
                    computer.takeTurn(Setup.getBoard(), human);
                    turns++;
                    Setup.printBoard();
                    if(Setup.hasWon(Setup.getBoard())){
                        won = true;
                        System.out.println("You just got pwned by an A.I with an incomplete rule set. FACEPALM.");
                    }
                    if(turns == 9){
                        won = true;
                        System.out.println("Its a draw!");
                        break;
                    }
                    if(!won){
                        human.takeTurn(Setup.getBoard());
                        turns++;
                        System.out.println();
                        Setup.printBoard();
                        System.out.println();
                        if(Setup.hasWon(Setup.getBoard())){
                            won = true;
                            System.out.println("You gots the winz!");
                        }
                        if(turns == 9){
                            won = true;
                            System.out.println("Its a draw!");
                            break;
                        }
                    }



                }  // close while 2

            }

            System.out.println("Would you like to play again? Type 1 for yes or 2 to quit");
            System.out.println();
            if(s.nextInt() == 2){
                playAgain = false;
            }

        }

    }
}
于 2013-04-17T11:02:30.450 に答える
0

tttcはTicTacToeComputerクラスのオブジェクトであり、
button []配列はTicTacToeComputerで定義され、
TicTacToePlayerは静的int変数'count'を持つ他のクラスであり、
TicTacToePlayerは3つのブール静的変数名winX、winYおよびwinを持ちます。

    static void move() // easiest way for move method for Artificial intelligence and study how its work and then you can use loops optimize for the code 
          {
            if ((tttc.button[0].getText().equals("O")) && (tttc.button[1].getText().equals("O")) && (tttc.button[2].getText().equals("")))
            {
              tttc.button[2].setText(TicTacToeComputer.letterO);
              tttc.button[2].setIcon(new ImageIcon("o.gif"));
              tttc.button[2].setEnabled(false);
            }
            else if ((tttc.button[3].getText().equals("O")) && (tttc.button[4].getText().equals("O")) && (tttc.button[5].getText().equals("")))
            {
              tttc.button[5].setText(TicTacToeComputer.letterO);
              tttc.button[5].setIcon(new ImageIcon("o.gif"));
              tttc.button[5].setEnabled(false);
            }
            else if ((tttc.button[6].getText().equals("O")) && (tttc.button[7].getText().equals("O")) && (tttc.button[8].getText().equals("")))
            {
              tttc.button[8].setText(TicTacToeComputer.letterO);
              tttc.button[8].setIcon(new ImageIcon("o.gif"));
              tttc.button[8].setEnabled(false);
            }
            else if ((tttc.button[1].getText().equals("O")) && (tttc.button[2].getText().equals("O")) && (tttc.button[0].getText().equals("")))
            {
              tttc.button[0].setText(TicTacToeComputer.letterO);
              tttc.button[0].setIcon(new ImageIcon("o.gif"));
              tttc.button[0].setEnabled(false);
            }
            else if ((tttc.button[4].getText().equals("O")) && (tttc.button[5].getText().equals("O")) && (tttc.button[3].getText().equals("")))
            {
              tttc.button[3].setText(TicTacToeComputer.letterO);
              tttc.button[3].setIcon(new ImageIcon("o.gif"));
              tttc.button[3].setEnabled(false);
            }
            else if ((tttc.button[7].getText().equals("O")) && (tttc.button[8].getText().equals("O")) && (tttc.button[6].getText().equals("")))
            {
              tttc.button[6].setText(TicTacToeComputer.letterO);
              tttc.button[6].setIcon(new ImageIcon("o.gif"));
              tttc.button[6].setEnabled(false);
            }
            else if ((tttc.button[0].getText().equals("O")) && (tttc.button[2].getText().equals("O")) && (tttc.button[1].getText().equals("")))
            {
              tttc.button[1].setText(TicTacToeComputer.letterO);
              tttc.button[1].setIcon(new ImageIcon("o.gif"));
              tttc.button[1].setEnabled(false);
            }
            else if ((tttc.button[3].getText().equals("O")) && (tttc.button[5].getText().equals("O")) && (tttc.button[4].getText().equals("")))
            {
              tttc.button[4].setText(TicTacToeComputer.letterO);
              tttc.button[4].setIcon(new ImageIcon("o.gif"));
              tttc.button[4].setEnabled(false);
            }
            else if ((tttc.button[6].getText().equals("O")) && (tttc.button[8].getText().equals("O")) && (tttc.button[7].getText().equals("")))
            {
              tttc.button[7].setText(TicTacToeComputer.letterO);
              tttc.button[7].setIcon(new ImageIcon("o.gif"));
              tttc.button[7].setEnabled(false);
            }
            else if ((tttc.button[0].getText().equals("O")) && (tttc.button[3].getText().equals("O")) && (tttc.button[6].getText().equals("")))
            {
              tttc.button[6].setText(TicTacToeComputer.letterO);
              tttc.button[6].setIcon(new ImageIcon("o.gif"));
              tttc.button[6].setEnabled(false);
            }
            else if ((tttc.button[1].getText().equals("O")) && (tttc.button[4].getText().equals("O")) && (tttc.button[7].getText().equals("")))
            {
              tttc.button[7].setText(TicTacToeComputer.letterO);
              tttc.button[7].setIcon(new ImageIcon("o.gif"));
              tttc.button[7].setEnabled(false);
            }
            else if ((tttc.button[2].getText().equals("O")) && (tttc.button[5].getText().equals("O")) && (tttc.button[8].getText().equals("")))
            {
              tttc.button[8].setText(TicTacToeComputer.letterO);
              tttc.button[8].setIcon(new ImageIcon("o.gif"));
              tttc.button[8].setEnabled(false);
            }
            else if ((tttc.button[3].getText().equals("O")) && (tttc.button[6].getText().equals("O")) && (tttc.button[0].getText().equals("")))
            {
              tttc.button[0].setText(TicTacToeComputer.letterO);
              tttc.button[0].setIcon(new ImageIcon("o.gif"));
              tttc.button[0].setEnabled(false);
            }
            else if ((tttc.button[4].getText().equals("O")) && (tttc.button[7].getText().equals("O")) && (tttc.button[1].getText().equals("")))
            {
              tttc.button[1].setText(TicTacToeComputer.letterO);
              tttc.button[1].setIcon(new ImageIcon("o.gif"));
              tttc.button[1].setEnabled(false);
            }
            else if ((tttc.button[5].getText().equals("O")) && (tttc.button[8].getText().equals("O")) && (tttc.button[2].getText().equals("")))
            {
              tttc.button[2].setText(TicTacToeComputer.letterO);
              tttc.button[2].setIcon(new ImageIcon("o.gif"));
              tttc.button[2].setEnabled(false);
            }
            else if ((tttc.button[0].getText().equals("O")) && (tttc.button[6].getText().equals("O")) && (tttc.button[3].getText().equals("")))
            {
              tttc.button[3].setText(TicTacToeComputer.letterO);
              tttc.button[3].setIcon(new ImageIcon("o.gif"));
              tttc.button[3].setEnabled(false);
            }
            else if ((tttc.button[1].getText().equals("O")) && (tttc.button[7].getText().equals("O")) && (tttc.button[4].getText().equals("")))
            {
              tttc.button[4].setText(TicTacToeComputer.letterO);
              tttc.button[4].setIcon(new ImageIcon("o.gif"));
              tttc.button[4].setEnabled(false);
            }
            else if ((tttc.button[2].getText().equals("O")) && (tttc.button[8].getText().equals("O")) && (tttc.button[5].getText().equals("")))
            {
              tttc.button[5].setText(TicTacToeComputer.letterO);

              tttc.button[5].setIcon(new ImageIcon("o.gif"));
              tttc.button[5].setEnabled(false);
            }
            else if ((tttc.button[0].getText().equals("O")) && (tttc.button[4].getText().equals("O")) && (tttc.button[8].getText().equals("")))
            {
              tttc.button[8].setText(TicTacToeComputer.letterO);
              tttc.button[8].setIcon(new ImageIcon("o.gif"));
              tttc.button[8].setEnabled(false);
            }
            else if ((tttc.button[4].getText().equals("O")) && (tttc.button[8].getText().equals("O")) && (tttc.button[0].getText().equals("")))
            {
              tttc.button[0].setText(TicTacToeComputer.letterO);
              tttc.button[0].setIcon(new ImageIcon("o.gif"));
              tttc.button[0].setEnabled(false);
            }
            else if ((tttc.button[0].getText().equals("O")) && (tttc.button[8].getText().equals("O")) && (tttc.button[4].getText().equals("")))
            {
              tttc.button[4].setText(TicTacToeComputer.letterO);
              tttc.button[4].setIcon(new ImageIcon("o.gif"));
              tttc.button[4].setEnabled(false);
            }
            else if ((tttc.button[2].getText().equals("O")) && (tttc.button[4].getText().equals("O")) && (tttc.button[6].getText().equals("")))
            {
              tttc.button[6].setText(TicTacToeComputer.letterO);
              tttc.button[6].setIcon(new ImageIcon("o.gif"));
              tttc.button[6].setEnabled(false);
            }
            else if ((tttc.button[6].getText().equals("O")) && (tttc.button[4].getText().equals("O")) && (tttc.button[2].getText().equals("")))
            {
              tttc.button[2].setText(TicTacToeComputer.letterO);
              tttc.button[2].setIcon(new ImageIcon("o.gif"));
              tttc.button[2].setEnabled(false);
            }
            else if ((tttc.button[6].getText().equals("O")) && (tttc.button[2].getText().equals("O")) && (tttc.button[4].getText().equals("")))
            {
              tttc.button[4].setText(TicTacToeComputer.letterO);
              tttc.button[4].setIcon(new ImageIcon("o.gif"));
              tttc.button[4].setEnabled(false);
            }
            if ((tttc.button[0].getText().equals("X")) && (tttc.button[1].getText().equals("X")) && (tttc.button[2].getText().equals("")))
            {
              tttc.button[2].setText(TicTacToeComputer.letterO);
              tttc.button[2].setIcon(new ImageIcon("o.gif"));
              tttc.button[2].setEnabled(false);
            }
            else if ((tttc.button[3].getText().equals("X")) && (tttc.button[4].getText().equals("X")) && (tttc.button[5].getText().equals("")))
            {
              tttc.button[5].setText(TicTacToeComputer.letterO);
              tttc.button[5].setIcon(new ImageIcon("o.gif"));
              tttc.button[5].setEnabled(false);
            }
            else if ((tttc.button[6].getText().equals("X")) && (tttc.button[7].getText().equals("X")) && (tttc.button[8].getText().equals("")))
            {
              tttc.button[8].setText(TicTacToeComputer.letterO);
              tttc.button[8].setIcon(new ImageIcon("o.gif"));
              tttc.button[8].setEnabled(false);
            }
            else if ((tttc.button[1].getText().equals("X")) && (tttc.button[2].getText().equals("X")) && (tttc.button[0].getText().equals("")))
            {
              tttc.button[0].setText(TicTacToeComputer.letterO);
              tttc.button[0].setIcon(new ImageIcon("o.gif"));
              tttc.button[0].setEnabled(false);
            }
            else if ((tttc.button[4].getText().equals("X")) && (tttc.button[5].getText().equals("X")) && (tttc.button[3].getText().equals("")))
            {
              tttc.button[3].setText(TicTacToeComputer.letterO);
              tttc.button[3].setIcon(new ImageIcon("o.gif"));
              tttc.button[3].setEnabled(false);
            }
            else if ((tttc.button[7].getText().equals("X")) && (tttc.button[8].getText().equals("X")) && (tttc.button[6].getText().equals("")))
            {
              tttc.button[6].setText(TicTacToeComputer.letterO);

              tttc.button[6].setIcon(new ImageIcon("o.gif"));
              tttc.button[6].setEnabled(false);
            }
            else if ((tttc.button[0].getText().equals("X")) && (tttc.button[2].getText().equals("X")) && (tttc.button[1].getText().equals("")))
            {
              tttc.button[1].setText(TicTacToeComputer.letterO);
              tttc.button[1].setIcon(new ImageIcon("o.gif"));
              tttc.button[1].setEnabled(false);
            }
            else if ((tttc.button[3].getText().equals("X")) && (tttc.button[5].getText().equals("X")) && (tttc.button[4].getText().equals("")))
            {
              tttc.button[4].setText(TicTacToeComputer.letterO);
              tttc.button[4].setIcon(new ImageIcon("o.gif"));
              tttc.button[4].setEnabled(false);
            }
            else if ((tttc.button[6].getText().equals("X")) && (tttc.button[8].getText().equals("X")) && (tttc.button[7].getText().equals("")))
            {
              tttc.button[7].setText(TicTacToeComputer.letterO);
              tttc.button[7].setIcon(new ImageIcon("o.gif"));
              tttc.button[7].setEnabled(false);
            }
            else if ((tttc.button[0].getText().equals("X")) && (tttc.button[3].getText().equals("X")) && (tttc.button[6].getText().equals("")))
            {
              tttc.button[6].setText(TicTacToeComputer.letterO);
              tttc.button[6].setIcon(new ImageIcon("o.gif"));
              tttc.button[6].setEnabled(false);
            }
            else if ((tttc.button[1].getText().equals("X")) && (tttc.button[4].getText().equals("X")) && (tttc.button[7].getText().equals("")))
            {
              tttc.button[7].setText(TicTacToeComputer.letterO);
              tttc.button[7].setIcon(new ImageIcon("o.gif"));
              tttc.button[7].setEnabled(false);
            }
            else if ((tttc.button[2].getText().equals("X")) && (tttc.button[5].getText().equals("X")) && (tttc.button[8].getText().equals("")))
            {
              tttc.button[8].setText(TicTacToeComputer.letterO);
              tttc.button[8].setIcon(new ImageIcon("o.gif"));
              tttc.button[8].setEnabled(false);
            }
            else if ((tttc.button[3].getText().equals("X")) && (tttc.button[6].getText().equals("X")) && (tttc.button[0].getText().equals("")))
            {
              tttc.button[0].setText(TicTacToeComputer.letterO);
              tttc.button[0].setIcon(new ImageIcon("o.gif"));
              tttc.button[0].setEnabled(false);
            }
            else if ((tttc.button[4].getText().equals("X")) && (tttc.button[7].getText().equals("X")) && (tttc.button[1].getText().equals("")))
            {
              tttc.button[1].setText(TicTacToeComputer.letterO);
              tttc.button[1].setIcon(new ImageIcon("o.gif"));
              tttc.button[1].setEnabled(false);
            }
            else if ((tttc.button[5].getText().equals("X")) && (tttc.button[8].getText().equals("X")) && (tttc.button[2].getText().equals("")))
            {
              tttc.button[2].setText(TicTacToeComputer.letterO);
              tttc.button[2].setIcon(new ImageIcon("o.gif"));
              tttc.button[2].setEnabled(false);
            }
            else if ((tttc.button[0].getText().equals("X")) && (tttc.button[6].getText().equals("X")) && (tttc.button[3].getText().equals("")))
            {
              tttc.button[3].setText(TicTacToeComputer.letterO);
              tttc.button[3].setIcon(new ImageIcon("o.gif"));
              tttc.button[3].setEnabled(false);
            }
            else if ((tttc.button[1].getText().equals("X")) && (tttc.button[7].getText().equals("X")) && (tttc.button[4].getText().equals("")))
            {
              tttc.button[4].setText(TicTacToeComputer.letterO);
              tttc.button[4].setIcon(new ImageIcon("o.gif"));
              tttc.button[4].setEnabled(false);
            }
            else if ((tttc.button[2].getText().equals("X")) && (tttc.button[8].getText().equals("X")) && (tttc.button[5].getText().equals("")))
            {
              tttc.button[5].setText(TicTacToeComputer.letterO);
              tttc.button[5].setIcon(new ImageIcon("o.gif"));
              tttc.button[5].setEnabled(false);
            }
            else if ((tttc.button[0].getText().equals("X")) && (tttc.button[4].getText().equals("X")) && (tttc.button[8].getText().equals("")))
            {
              tttc.button[8].setText(TicTacToeComputer.letterO);
              tttc.button[8].setIcon(new ImageIcon("o.gif"));
              tttc.button[8].setEnabled(false);
            }
            else if ((tttc.button[4].getText().equals("X")) && (tttc.button[8].getText().equals("X")) && (tttc.button[0].getText().equals("")))
            {
              tttc.button[0].setText(TicTacToeComputer.letterO);
              tttc.button[0].setIcon(new ImageIcon("o.gif"));
              tttc.button[0].setEnabled(false);
            }
            else if ((tttc.button[0].getText().equals("X")) && (tttc.button[8].getText().equals("X")) && (tttc.button[4].getText().equals("")))
            {
              tttc.button[4].setText(TicTacToeComputer.letterO);
              tttc.button[4].setIcon(new ImageIcon("o.gif"));
              tttc.button[4].setEnabled(false);
            }
            else if ((tttc.button[2].getText().equals("X")) && (tttc.button[4].getText().equals("X")) && (tttc.button[6].getText().equals("")))
            {
              tttc.button[6].setText(TicTacToeComputer.letterO);

              tttc.button[6].setIcon(new ImageIcon("o.gif"));
              tttc.button[6].setEnabled(false);
            }
            else if ((tttc.button[6].getText().equals("X")) && (tttc.button[4].getText().equals("X")) && (tttc.button[2].getText().equals("")))
            {
              tttc.button[2].setText(TicTacToeComputer.letterO);
              tttc.button[2].setIcon(new ImageIcon("o.gif"));
              tttc.button[2].setEnabled(false);
            }
            else if ((tttc.button[6].getText().equals("X")) && (tttc.button[2].getText().equals("X")) && (tttc.button[4].getText().equals("")))
            {
              tttc.button[4].setText(TicTacToeComputer.letterO);
              tttc.button[4].setIcon(new ImageIcon("o.gif"));
              tttc.button[4].setEnabled(false);
            }
            else if ((tttc.button[0].getText().equals("X")) && (tttc.button[4].getText().equals("O")) && (tttc.button[8].getText().equals("X")))
            {
              tttc.button[5].setText(TicTacToeComputer.letterO);
              tttc.button[5].setIcon(new ImageIcon("o.gif"));
              tttc.button[5].setEnabled(false);
            }
            else if ((tttc.button[2].getText().equals("X")) && (tttc.button[4].getText().equals("O")) && (tttc.button[6].getText().equals("X")))
            {
              tttc.button[3].setText(TicTacToeComputer.letterO);
              tttc.button[3].setIcon(new ImageIcon("o.gif"));
              tttc.button[3].setEnabled(false);
            }
            else if (tttc.button[4].getText().equals(""))
            {
              tttc.button[4].setText(TicTacToeComputer.letterO);
              tttc.button[4].setIcon(new ImageIcon("o.gif"));
              tttc.button[4].setEnabled(false);
            }
            else if (tttc.button[0].getText().equals(""))
            {
              tttc.button[0].setText(TicTacToeComputer.letterO);
              tttc.button[0].setIcon(new ImageIcon("o.gif"));
              tttc.button[0].setEnabled(false);
            }
            else
            {
              random();
            }
          }       




            static void random() // random method so that player and computer both have chance to win
                  {
                    if (TicTacToePlayer.count < 9)
                    {
                      int i = 0;
                      while (i == 0) {
                        i = (int)(Math.random() * 9.0D);
                      }
                      if (doRandomMove(tttc.button[i]))
                      {
                        tttc.button[i].setText(TicTacToeComputer.letterO);
                        tttc.button[i].setIcon(new ImageIcon("o.gif"));
                        tttc.button[i].setEnabled(false);
                      }
                      else
                      {
                        random();
                      }
                    }
                  }

                  public static boolean doRandomMove(JButton paramJButton)
                  {
                    if ((paramJButton.getText().equals("O")) || (paramJButton.getText().equals("X"))) {
                      return false;
                    }
                    return true;
                  }

    static void checkComputerWin()
      {
        if ((tttc.button[0].getText() == "X") && (tttc.button[1].getText() == "X") && (tttc.button[2].getText() == "X"))
        {
          TicTacToePlayer.winX = true;
        }
        else if ((tttc.button[3].getText() == "X") && (tttc.button[4].getText() == "X") && (tttc.button[5].getText() == "X"))
        {
          TicTacToePlayer.winX = true;
        }
        else if ((tttc.button[6].getText() == "X") && (tttc.button[7].getText() == "X") && (tttc.button[8].getText() == "X"))
        {
          TicTacToePlayer.winX = true;
        }
        else if ((tttc.button[0].getText() == "X") && (tttc.button[3].getText() == "X") && (tttc.button[6].getText() == "X"))
        {
          TicTacToePlayer.winX = true;
        }
        else if ((tttc.button[1].getText() == "X") && (tttc.button[4].getText() == "X") && (tttc.button[7].getText() == "X"))
        {
          TicTacToePlayer.winX = true;
        }
        else if ((tttc.button[2].getText() == "X") && (tttc.button[5].getText() == "X") && (tttc.button[8].getText() == "X"))
        {
          TicTacToePlayer.winX = true;
        }
        else if ((tttc.button[0].getText() == "X") && (tttc.button[4].getText() == "X") && (tttc.button[8].getText() == "X"))
        {
          TicTacToePlayer.winX = true;
        }
        else if ((tttc.button[2].getText() == "X") && (tttc.button[4].getText() == "X") && (tttc.button[6].getText() == "X"))
        {
          TicTacToePlayer.winX = true;
        }
        else if ((tttc.button[0].getText() == "O") && (tttc.button[1].getText() == "O") && (tttc.button[2].getText() == "O"))
        {
          TicTacToePlayer.winO = true;
        }
        else if ((tttc.button[3].getText() == "O") && (tttc.button[4].getText() == "O") && (tttc.button[5].getText() == "O"))
        {
          TicTacToePlayer.winO = true;
        }
        else if ((tttc.button[6].getText() == "O") && (tttc.button[7].getText() == "O") && (tttc.button[8].getText() == "O"))
        {
          TicTacToePlayer.winO = true;
        }
        else if ((tttc.button[0].getText() == "O") && (tttc.button[3].getText() == "O") && (tttc.button[6].getText() == "O"))
        {
          TicTacToePlayer.winO = true;
        }
        else if ((tttc.button[1].getText() == "O") && (tttc.button[4].getText() == "O") && (tttc.button[7].getText() == "O"))
        {
          TicTacToePlayer.winO = true;
        }
        else if ((tttc.button[2].getText() == "O") && (tttc.button[5].getText() == "O") && (tttc.button[8].getText() == "O"))
        {
          TicTacToePlayer.winO = true;
        }
        else if ((tttc.button[0].getText() == "O") && (tttc.button[4].getText() == "O") && (tttc.button[8].getText() == "O"))
        {
          TicTacToePlayer.winO = true;
        }
        else if ((tttc.button[2].getText() == "O") && (tttc.button[4].getText() == "O") && (tttc.button[6].getText() == "O"))
        {
          TicTacToePlayer.winO = true;
        }
        else
        {
          TicTacToePlayer.win = false;
          TicTacToePlayer.count += 1;
        }
        if ((!TicTacToePlayer.win) && (TicTacToePlayer.count > 8))
        {
          ImageIcon localImageIcon1 = new ImageIcon("cry.gif");
          JOptionPane.showMessageDialog(null, "The game was tie!", "Tie Game", 0, localImageIcon1);
          ImageIcon localImageIcon2 = new ImageIcon("newgame.gif");
          int i = JOptionPane.showConfirmDialog(null, "Start", "Do you want to start a New Game ?", 0, 0, localImageIcon2);
          if (i == 0)
          {
            TicTacToePlayer.count = 0;
            tttc.setVisible(false);
            new TicTacToeComputer("Wanna Play TicTacToe...!!!");
          }
          else
          {
            ImageIcon localImageIcon3 = new ImageIcon("bye.gif");
            JOptionPane.showMessageDialog(null, "Thank you " + TicTacToePlayer.x + " and " + TicTacToePlayer.z + " for playing", "Thank You", 1, localImageIcon3);
            System.exit(0);
          }
        }
        if (TicTacToePlayer.winX == true)
        {
          TicTacToePlayer.count = 0;
          tttc.setVisible(false);
          new AnimationComputerX();
          TicTacToePlayer.winX = false;
        }
        if (TicTacToePlayer.winO == true)
        {
          TicTacToePlayer.count = 0;
          tttc.setVisible(false);
          new AnimationComputerO();
          TicTacToePlayer.winO = false;
        }
      }

ハッピーコーディング:)RChadZ

于 2014-05-23T13:24:15.270 に答える
-1
//diagonal
if(board[0][0].equals(board[1][1]) && board[1][1].equals(board[2][2]) || board[2][0].equals(board[1][1]) && board[1][1].equals(board[0][2]))
       { return true;} // <<<<<you forgot the {} ^_^
    return false;
}
于 2013-12-06T02:39:50.040 に答える