ランダム三目並べチェッカーの問題

themannn

了解しました。xが勝ったとき、oが勝ったとき、同点のときを示すランダムな三目並べチェッカーを作成する必要があります。だから私が抱えている問題は、それが同点を示さないことであり、xまたはoのどちらかが勝てなかったときに勝ったと言うことがあります。対角チェックを行う前にタイが出力されるため、コードで何を変更すればよいかわかりません。これがコード全体ですが、xWinとoWinを真にすることで、チェックボードの部分から問題が発生していると確信しています。どこでそれを行っているのかわかりません。

package test;

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

public class TicTacToe {
    public static void main(String[] args) {
        System.out.println("Welcome to random Tic Tac Toe Checker. Let's see our randomly generated board.");
        int dimension = 3;
        char[][] board = new char[dimension][dimension];
        Random r = new Random();

        for (int i = 0; i < 3; i++) // filling board
        {
            for (int j = 0; j < 3; j++) {
                int choice = r.nextInt(2);
                if (choice == 0) {
                    board[i][j] = 'X';
                } else if (choice == 1) {
                    board[i][j] = 'O';
                }
            }
        }
        for (int i = 0; i < 3; i++) // filling board
        {
            for (int j = 0; j < 3; j++) {
                System.out.print(board[i][j]);
            }
            System.out.println();
        }

        boolean xWin = false;// checking board, order horizontal,vertical,left
                                // and right diagonal
        boolean oWin = false;

        for (int i = 0; i < 3; i++) {
            boolean lineWin = true;
            for (int j = 0; j < 3; j++) {
                if (board[i][j] != board[i][0]) {
                    lineWin = false;

                }
            }
            if (lineWin == true) {
                if (board[i][0] == 'X') {
                    xWin = false;
                }
                if (board[i][0] == 'O') {
                    oWin = false;
                }

            }
        }
        for (int j = 0; j < 3; j++) {
            boolean lineWin = true;
            for (int i = 0; i < 3; i++) {
                if (board[i][j] != board[0][j]) {
                    lineWin = true;

                }
            }
            if (lineWin == true) {
                if (board[0][j] == 'X') {
                    xWin = true;
                }
                if (board[0][j] == 'O') {
                    oWin = true;
                }

            }
        }
        boolean lineWin = true;
        for (int i = 0; i < 3; i++) {
            if (board[0][0] != board[i][i]) {
                lineWin = false;
            }
            if (lineWin == true) {
                if (board[0][0] == 'X') {
                    xWin = true;
                }
                if (board[0][0] == 'O') {
                    oWin = true;
                }

            }
        }
        lineWin = true;
        for (int i = 0; i < 3; i++) {
            if (board[0][0] != board[i][2 - i]) {
                lineWin = false;
            }
            if (lineWin == true) {
                if (board[0][0] == 'X') {
                    xWin = true;
                }
                if (board[0][0] == 'O') {
                    oWin = true;
                }
            }
        }

        if (xWin == false && oWin == false)// printing winners
        {
            System.out.println("CAT!It's a tie no one wins");
        }
        if (xWin == true) {
            System.out.println("X wins!");
        }

        if (oWin == true) {
            System.out.println("O wins!");
        }

    }
}
アンドレアス

ブールエラーと対角ロジックを修正しました。

import java.util.Random;

public class TicTacToe {
  private static final int DIMENSION = 3;

  public static void main(String[] args) {
    System.out.println("Welcome to random Tic Tac Toe Checker. Let's see our randomly generated board.");
    char[][] board = new char[DIMENSION][DIMENSION];
    final Random r = new Random();

    for (int i = 0; i < DIMENSION; i++) {
      for (int j = 0; j < DIMENSION; j++) {
        int choice = r.nextInt(2);
        if (choice == 0) {
          board[i][j] = 'X';
        } else if (choice == 1) {
          board[i][j] = 'O';
        }
      }
    }
    for (int i = 0; i < DIMENSION; i++) {
      for (int j = 0; j < DIMENSION; j++) {
        System.out.print(board[i][j]);
      }
      System.out.println();
    }


    boolean xWin = false;
    boolean oWin = false;

    for (int i = 0; i < DIMENSION; i++) {
      boolean lineWin = true;
      for (int j = 0; j < DIMENSION; j++) {
        if (board[i][j] != board[i][0]) {
          lineWin = false;
        }
      }
      if (lineWin) {
        if (board[i][0] == 'X') {
          xWin = true;
        }
        if (board[i][0] == 'O') {
          oWin = true;
        }

      }
    }
    for (int j = 0; j < DIMENSION; j++) {
      boolean lineWin = true;
      for (int i = 0; i < DIMENSION; i++) {
        if (board[i][j] != board[0][j]) {
          lineWin = false;
        }
      }
      if (lineWin) {
        if (board[0][j] == 'X') {
          xWin = true;
        }
        if (board[0][j] == 'O') {
          oWin = true;
        }

      }
    }
    boolean lineWin = true;
    for (int i = 0; i < DIMENSION; i++) {
      if (board[0][0] != board[i][i]) {
        lineWin = false;
      }
    }
    if (lineWin) {//this check should not be in the loop
      if (board[0][0] == 'X') {
        xWin = true;
      }
      if (board[0][0] == 'O') {
        oWin = true;
      }

    }
    lineWin = true;
    for (int i = 0; i < DIMENSION; i++) {
      if (board[DIMENSION - 1][0] != board[i][DIMENSION - 1 - i]) {
        lineWin = false;
      }
    }
    if (lineWin) {//this check should not be in the loop
      if (board[DIMENSION - 1][0] == 'X') {
        xWin = true;
      }
      if (board[DIMENSION - 1][0] == 'O') {
        oWin = true;
      }
    }
    if (xWin == true && oWin == true) {//printing winners
      System.out.println("Both players won!");
    }
    if (xWin == false && oWin == false) {
      System.out.println("CAT!It's a tie no one wins");
    }
    if (xWin == true) {
      System.out.println("X wins!");
    }

    if (oWin == true) {
      System.out.println("O wins!");
    }
  }
}

注:笑いのためにDIMENSIONを増やすことができます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

三目並べゲームのロジックの問題

分類Dev

三目並べインターフェースの問題

分類Dev

Pythonの三目並べゲームでボードにマーカーを配置する際の問題

分類Dev

Python:三目並べボード上のスポットをランダムに選択します

分類Dev

cのランダム移動三目並べ

分類Dev

三目並べのAIがランダムに動かない

分類Dev

三目並べのコンピュータのランダムな位置の選択が機能しない

分類Dev

ランダムコイントス付き三目並べ

分類Dev

三目並べチェックの勝者

分類Dev

三目並べチェックの勝者

分類Dev

三目並べゲームpythonグリッチ

分類Dev

Jtable、カスタムレンダラーとシステムL&Fでの並べ替えアイコンTableHeaderの表示に関する問題

分類Dev

minmaxアルゴリズムに関するJava三目並べの問題

分類Dev

三目並べゲームのJavascriptオブジェクト

分類Dev

三目並べミニマックスでの再帰の問題

分類Dev

スタックなしのバランス括弧チェッカーの問題

分類Dev

三目並べプログラム(Python)のエラー

分類Dev

三目並べゲームの奇妙なシンボル

分類Dev

Javaの三目並べ、上書きの問題

分類Dev

コンピューターは、三目並べゲームReact.jsで常にランダムな空のセルに移動しますか?

分類Dev

trueの場合にButton.Content.Inputsfalseをチェックしようとしています(三目並べの単純なゲーム)

分類Dev

キーチェーンプログラムのScpの問題

分類Dev

三目並べの勝者チェックを簡素化する方法

分類Dev

三目並べチェックを最適化する

分類Dev

三目並べレンダリングXを1つのボックスに

分類Dev

ランダムジェネレータの問題〜JAVA

分類Dev

カスタムチェックボックスボタンの問題

分類Dev

c ++:三目並べゲームでのLNK2019および1120エラー

分類Dev

多くのifステートメントなしで誰が三目並べゲームに勝ったかをチェックする式を作成するにはどうすればよいですか?

Related 関連記事

  1. 1

    三目並べゲームのロジックの問題

  2. 2

    三目並べインターフェースの問題

  3. 3

    Pythonの三目並べゲームでボードにマーカーを配置する際の問題

  4. 4

    Python:三目並べボード上のスポットをランダムに選択します

  5. 5

    cのランダム移動三目並べ

  6. 6

    三目並べのAIがランダムに動かない

  7. 7

    三目並べのコンピュータのランダムな位置の選択が機能しない

  8. 8

    ランダムコイントス付き三目並べ

  9. 9

    三目並べチェックの勝者

  10. 10

    三目並べチェックの勝者

  11. 11

    三目並べゲームpythonグリッチ

  12. 12

    Jtable、カスタムレンダラーとシステムL&Fでの並べ替えアイコンTableHeaderの表示に関する問題

  13. 13

    minmaxアルゴリズムに関するJava三目並べの問題

  14. 14

    三目並べゲームのJavascriptオブジェクト

  15. 15

    三目並べミニマックスでの再帰の問題

  16. 16

    スタックなしのバランス括弧チェッカーの問題

  17. 17

    三目並べプログラム(Python)のエラー

  18. 18

    三目並べゲームの奇妙なシンボル

  19. 19

    Javaの三目並べ、上書きの問題

  20. 20

    コンピューターは、三目並べゲームReact.jsで常にランダムな空のセルに移動しますか?

  21. 21

    trueの場合にButton.Content.Inputsfalseをチェックしようとしています(三目並べの単純なゲーム)

  22. 22

    キーチェーンプログラムのScpの問題

  23. 23

    三目並べの勝者チェックを簡素化する方法

  24. 24

    三目並べチェックを最適化する

  25. 25

    三目並べレンダリングXを1つのボックスに

  26. 26

    ランダムジェネレータの問題〜JAVA

  27. 27

    カスタムチェックボックスボタンの問題

  28. 28

    c ++:三目並べゲームでのLNK2019および1120エラー

  29. 29

    多くのifステートメントなしで誰が三目並べゲームに勝ったかをチェックする式を作成するにはどうすればよいですか?

ホットタグ

アーカイブ