2014-03-24 3 views
-2

Я пытаюсь создать программу Tic-Tac-Toe, которая определит, выиграет ли данная игровая площадка «X» «O» или галстук.Программа Tic-Tac-Toe

Очевидно, что я знаю, какие игры выиграли кто, но как я могу заставить программу проверить это?

int check(int board[3][3]) { 
//I've tried putting some code here, but nothing successful. 

return 0; 
} 

int main() { 
// this is a three-dimensional array, three games of two-dimensional 
// boards; just concern yourself about the two-dimensional boards 
int games[3][3][3] = { 
    { 
     { -1, 0, 1 }, //O_X 
     { 0, 1, -1 }, //_XO 
     { 1, -1, 0 } //XOX 
    }, 
    { 
     { 0, 1, 1 }, //_XX 
     { -1, -1, -1 }, //OOO 
     { 1, 1, 0 } //XX_ 
    }, 
    { 
     { 1, 1, -1 }, //XXO 
     { -1, -1, 1 }, //OOX 
     { 1, 1, -1 } //XXO 
    } 
}; 

for (int game = 0; game < 3; game++) { 
    if (check(games[game]) == 1) { 
     cout << "player X wins game " << game + 1 << endl; 
    } else if (check(games[game]) == -1) { 
     cout << "player O wins game " << game + 1 << endl; 
    } else { 
     cout << "game " << game + 1 << " is a cat game" << endl; 
    } 
} 

    return 0; 
} 
+3

Я предполагаю, что это проблема домашнего задания - Вы должны показать, что вы уже пробовали, не ожидаете, что мы просто написать ответ для вас. – benjymous

+0

'Очевидно, что я знаю, какие игры выиграны кем, но как я могу заставить программу проверить это?' Заставьте его проверить те же условия, что и вы сами, чтобы определить победителя –

+0

'Я пробовал поставить код здесь, но ничего не получилось. «Что ты пробовал? –

ответ

1

Это должно работать:

int check(int board[3][3]) { 
    int winner = 0; 

    // check line 
    for(int i=0; i<3; ++i) 
      { 
       if(board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0] != 0) 
        winner = board[i][0]; 
      } 

    // check column 
    for(int i=0; i<3; ++i) 
      { 
       if(board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] != 0) 
        winner = board[0][i]; 
      } 

    // check diagonal 
    if(board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != 0) 
      winner = board[1][1]; 

    if(board[2][1] == board[1][1] && board[1][1] == board[0][2] && board[1][1] != 0) 
      winner = board[1][1]; 

return winner; 
} 
+3

Предоставление OP полного ответа, подобного этому, на самом деле не помогает, так как они не смогут решить настоящую задачу решения своей домашней работы и просто вернутся на следующей неделе с просьбой о решении их следующей проблемы, никогда не узнав ничего – benjymous

+0

Добавляя к @benjymous, если OP слепо копирует этот ответ, их программа будет иметь ошибку. –

+0

@BartvanNierop По крайней мере, это значит, что где-то есть возможность обучения! – benjymous