2012-05-07 9 views
1

私はHTMLを学んだCSS、Wordpressでカスタムテーマを作成するウェブデザインの背景から学びました。ショット。私は友人が私を助けてくれていて、私のための彼の最新の仕事はチック・タック・トー・ゲームでした。以下は私がこれまで持っていたコードです。私は現在、プレイヤー1とプレイヤー2の間でゲームループを作ることに問題があり、ゲームが不完全であるかどうかを認識させ、1 p1の勝利、2 p2の勝ち、または3の猫のゲームを認識させる。Cを学ぶ - チック - タック - トゥプログラムを終了するための助けが必要

#include <stdio.h> 
#define O 2 
#define X 1 

void printItem(int item) 
{ 
    char items[] = { ' ', 'X', 'O' }; 
    printf(" %c ", items[item]); 
/* 
    if (item == 0) 
     printf(" "); 
    else if (item == 1) 
     printf("X"); 
    else 
     printf("O"); 
    */ 
} 

void printRowDivider() 
{ 
    printf(" +---+---+---+\n"); 
} 

void printBoard(int board[9]) 
{ 
    printf(" A B C\n"); 
    printRowDivider(); 
    printf("1 "); 
    for (int i = 0; i < 9; i++) 
    { 
     printf("|"); 
     printItem(board[i]); 
     if (i == 2 || i == 5) 
     { 
      printf("|\n"); 
      printRowDivider(); 
      printf("%d ", (i+1)/3 + 1); 
     } 
    } 
    printf("|\n"); 
    printRowDivider(); 
} 

int gameStatus(int board[9]) { 

    // check rows 
    if (board[0] == board[1] && board[1] == board[2] && board[0] != 0) 
     return board[0]; 
    else if (board[3] == board[4] && board[4] == board[5] && board[3] != 0) 
     return board[3]; 
    else if (board[6] == board[7] && board[7] == board[8] && board[6] != 0) 
     return board[6]; 

    // check columns 
    else if (board[0] == board[3] && board[3] == board[6] && board[0] != 0) 
     return board[0]; 
    else if (board[1] == board[4] && board[4] == board[7] && board[1] != 0) 
     return board[1]; 
    else if (board[2] == board[5] && board[5] == board[9] && board[2] != 0) 
     return board[2]; 

    // check diagnols 
    else if (board[0] == board[4] && board[4] == board[8] && board[0] != 0) 
     return board[0]; 
    else if (board[2] == board[4] && board[4] == board[6] && board[2] != 0) 
     return board[2]; 

    else { 
     return 3; 
    } 

} 

int main() 
{ 
    int gameBoard[9] = { 0, 0, 0, 
         0, 0, 0, 
         0, 0, 0 }; 

    printBoard(gameBoard);   

     printf("p1 (Column + Row): "); 
     int row; 
     char column;     

     scanf(" %c%d", &column, &row); 
     printf("You said %d, %d.\n", row, column); 

     row -= 1; 
     column -= 'A'; 

     printf("You said %d, %d.\n", row, column); 
     gameBoard[row*3 + column] = X; 

     printBoard(gameBoard); 
     printf("p2 (Column + Row): "); 
     scanf(" %c%d", &column, &row); 
     row -= 1; 
     column -= 'A'; 

     printf("You said %d, %d.\n", row, column); 
     gameBoard[row*3 + column] = O; 

     printBoard(gameBoard); 

     int player = 0; 

     while (1) { 
      printBoard(gameBoard); 

      printf("Player %d: ", player + 1); 
      scanf(" %c%d", &column, &row); 
      player -= player; 

     } 

    printBoard(gameBoard); 

    return 0; 
} 

ありがとうございます。あなたのメインプログラムで

+0

コードレビューはこのより良い場所になります –

+2

あなたが直面している問題は何ですか? *あなたはそれが何を期待しているのか、それはATmが何をしているのか、 –

答えて

1

、あなたのループは次のとおりです。

int player = 0; 

while (1) 
{ 
    printBoard(gameBoard); 
    printf("Player %d: ", player + 1); 
    scanf(" %c%d", &column, &row); 
    player -= player; 
} 

これは再び、0、0プレーヤーを設定します(0ので - 0で0)、および...ように。また

player = !player; 
player = 1 - player; 

と呼ばれる関数の中で、このループ上にある移動コードの大半を配置する必要があります:あなたは0と1の間で発振する必要がある場合は、そこに少なくとも含む、それを行うには、いくつかの方法の方法がありますループの中で

+0

ありがとう、私は今これを試してみます。 :) – companyhen

関連する問題