tic tactoeプログラムでifステートメントをより適切に機能させる方法

JC2120

私の質問は、コードの「重複する移動をチェックする」セクションの下のifステートメントです。ifステートメントが機能する場合もありますが、機能しない場合もあります。ifステートメントは、ユーザーからの入力をチェックし、それを現在座標にある文字と比較することになっています。文字が「X」または「O」の場合、配列のその部分に現在ある文字を上書きしてはならず、無効な移動であったことをユーザーに通知し、カウンターから1を引いて、XまたはOのターンのままにします。 。

 #include <stdio.h>
struct coordinate{
    int i;
    int j;

};

//function that prints the tic-tac-toe board
int printTable( char array[3][3]){

    printf(" X's first O's second\n");
    printf("\n     0   1   2\n");
    printf("\n       |   |   \n");
    printf(" 0    %c | %c | %c \n", array[0][0], array[0][1], array[0][2]);
    printf("      ___|___|___\n");
    printf("         |   |   \n");
    printf(" 1    %c | %c | %c \n", array[1][0], array[1][1], array[1][2]);
    printf("      ___|___|___\n");
    printf("         |   |   \n");
    printf(" 2    %c | %c | %c \n", array[2][0], array[2][1], array[2][2]);
    printf("         |   |   \n\n");
    return 0;
}

int main (void){
    struct coordinate move;
    char game;
    int counter;
    char ttt[3][3] = {
        {'-', '-', '-'},
        {'-', '-', '-'},
        {'-', '-', '-'}
    };

    printf("\nWelcome to tic tac toe!\n");

    //Checks if you want to play
    printf("Would you like to play? y/n\n");
    scanf("%c", &game);

    //stops game by returning zero
    if(game == 'n'){
        printf("Have a pleasant day");
        return 0;
    }

    //starts game! =)
    if(game == 'y'){
        for(counter = 1; counter <= 9; counter++){
            printTable(ttt);

            //asks player where they want to move
            printf("Where would you like to move?");
            scanf("%i %i", &move.i, &move.j);

            //Checks for duplicate move
            if( ttt[move.i][move.j] == 'O' || ttt[move.i][move.j] == 'X' ){
                ttt[move.i][move.j] = ttt[move.i][move.j];
                printf("\n\n\nInvalid move. Try again\n\n\n");
                counter = counter - 1;
            }

            //O wins
            if( ttt[0][0] == 'O' && ttt[0][1] == 'O' && ttt[0][2] == 'O' || ttt[1][0] == 'O' && ttt[1][1] == 'O' && ttt[1][2] == 'O' || ttt[2][0] == 'O' && ttt[2][1] == 'O' && ttt[2][2] == 'O' || ttt[0][0] == 'O' && ttt[1][0] == 'O' && ttt[2][0] == 'O' || ttt[0][1] == 'O' && ttt[1][1] == 'O' && ttt[2][1] == 'O' || ttt[0][2] == 'O' && ttt[1][2] == 'O' && ttt[2][2] == 'O' || ttt[0][0] == 'O' && ttt[1][1] == 'O' && ttt[2][2] == 'O' || ttt[2][0] == 'O' && ttt[1][1] == 'O' && ttt[0][2] == 'O'){
                printf("O WINS!!!!!");
                return 0;
            }

            //X wins
            if( ttt[0][0] == 'X' && ttt[0][1] == 'X' && ttt[0][2] == 'X' || ttt[1][0] == 'X' && ttt[1][1] == 'X' && ttt[1][2] == 'X' || ttt[2][0] == 'X' && ttt[2][1] == 'X' && ttt[2][2] == 'X' || ttt[0][0] == 'X' && ttt[1][0] == 'X' && ttt[2][0] == 'X' || ttt[0][1] == 'X' && ttt[1][1] == 'X' && ttt[2][1] == 'X' || ttt[0][2] == 'X' && ttt[1][2] == 'X' && ttt[2][2] == 'X' || ttt[0][0] == 'X' && ttt[1][1] == 'X' && ttt[2][2] == 'X' || ttt[2][0] == 'X' && ttt[1][1] == 'X' && ttt[0][2] == 'X'){
                printf("X WINS!!!!!");
                return 0;
            }

            //X's turns
            if( counter == 0 || counter == 2 ||counter == 4 ||counter == 6 ||counter == 8){
                ttt[move.i][move.j] = 'X';
            }

            //Y's turns
            if( counter == 1 || counter == 3 ||counter == 5 ||counter == 7 ){
                ttt[move.i][move.j] = 'O';
            }

            //CATS GAME
            if( counter == 9){
                printf("Cat's Game =(");
                return 0;
            }
        }
    }
    return 0;
}
azmuhak

重複チェック(以下を参照)の後に「続行」を追加して、重複移動後に誰が勝ったかをコードがすべてチェックしないようにする必要があります。これがあなたの問題の主な原因だと思います。ただし、「機能する場合と機能しない場合がある」という意味をもう少し詳しく説明できれば、さらに便利です。

  if( ttt[move.i][move.j] == 'O' || ttt[move.i][move.j] == 'X' ){

                    printf("\n\n\nInvalid move. Try again\n\n\n");
                    counter = counter - 1;
                    continue;
                }

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

tkinter tic tactoeプログラム

分類Dev

エラー:入力Tic TacToeゲームの最後に予期される宣言またはステートメント

分類Dev

C ++でのTic-Tac-Toeヘルプ、Tic TacToeゲームが毎回ボードを繰り返すようにループを作成する方法

分類Dev

Python TIC TACTOEスキップターン

分類Dev

Java Tic TacToeコンストラクター

分類Dev

Tic TacToeゲームからConnectFourを派生させることは可能ですか?

分類Dev

TIC TACTOEプログラムでランダムなOを作成するAIを作成する必要があります

分類Dev

Java Tic TacToeネットワーキング

分類Dev

python tic tactoe勝利条件

分類Dev

Tic TacToeコマンドライン

分類Dev

Tic-Tac-Toeループ

分類Dev

Java Tic Tac ToeMinimaxバグ

分類Dev

JavasScript / jQuery Tic TacToeアラートエラー

分類Dev

Tic TacToeのゲームのリスト値の置き換えに関する問題

分類Dev

NodeJS Tic TacToeマルチプレイヤーゲーム

分類Dev

tic tac toevhdl学生プロジェクト

分類Dev

Tic TacToeヒューリスティックAI

分類Dev

Tkinter Tic TacToe特定のボックスに図形を描く

分類Dev

Java Tic Tac ToeAIが機能しない

分類Dev

Tic Tac Toejsを停止する方法

分類Dev

Tic-Tac-ToeAIにTensorflowを使用する

分類Dev

matlabのtic-tac-toeプログラムが機能しない

分類Dev

Java eclipse tic tac toe ゲーム

分類Dev

(Tic Tac ToeのC#プログラム)でエラーが発生する

分類Dev

javafx を使用する私の tic-tac-toe プログラムが機能しません。コンパイル エラーや実行時エラーはありません。しかし、それはまだ動作しません

分類Dev

Tic TacToeのミニマックスアルゴリズム

分類Dev

Tic tactoeコンピューターの移動

分類Dev

tic tactoe水平/垂直および斜めチェックが機能しない-java

分類Dev

C ++:ユーザー入力を取得してTic TacToeボードに配置する方法

Related 関連記事

  1. 1

    tkinter tic tactoeプログラム

  2. 2

    エラー:入力Tic TacToeゲームの最後に予期される宣言またはステートメント

  3. 3

    C ++でのTic-Tac-Toeヘルプ、Tic TacToeゲームが毎回ボードを繰り返すようにループを作成する方法

  4. 4

    Python TIC TACTOEスキップターン

  5. 5

    Java Tic TacToeコンストラクター

  6. 6

    Tic TacToeゲームからConnectFourを派生させることは可能ですか?

  7. 7

    TIC TACTOEプログラムでランダムなOを作成するAIを作成する必要があります

  8. 8

    Java Tic TacToeネットワーキング

  9. 9

    python tic tactoe勝利条件

  10. 10

    Tic TacToeコマンドライン

  11. 11

    Tic-Tac-Toeループ

  12. 12

    Java Tic Tac ToeMinimaxバグ

  13. 13

    JavasScript / jQuery Tic TacToeアラートエラー

  14. 14

    Tic TacToeのゲームのリスト値の置き換えに関する問題

  15. 15

    NodeJS Tic TacToeマルチプレイヤーゲーム

  16. 16

    tic tac toevhdl学生プロジェクト

  17. 17

    Tic TacToeヒューリスティックAI

  18. 18

    Tkinter Tic TacToe特定のボックスに図形を描く

  19. 19

    Java Tic Tac ToeAIが機能しない

  20. 20

    Tic Tac Toejsを停止する方法

  21. 21

    Tic-Tac-ToeAIにTensorflowを使用する

  22. 22

    matlabのtic-tac-toeプログラムが機能しない

  23. 23

    Java eclipse tic tac toe ゲーム

  24. 24

    (Tic Tac ToeのC#プログラム)でエラーが発生する

  25. 25

    javafx を使用する私の tic-tac-toe プログラムが機能しません。コンパイル エラーや実行時エラーはありません。しかし、それはまだ動作しません

  26. 26

    Tic TacToeのミニマックスアルゴリズム

  27. 27

    Tic tactoeコンピューターの移動

  28. 28

    tic tactoe水平/垂直および斜めチェックが機能しない-java

  29. 29

    C ++:ユーザー入力を取得してTic TacToeボードに配置する方法

ホットタグ

アーカイブ