2014-03-24 250 views
-2

我正在尝试创建一个井字游戏程序,它将确定给定的游戏棋盘是由“X”“O”还是一条领带赢得的。井字游戏程序

显然我知道谁赢了哪场比赛,但是我怎么才能让程序来检查呢?

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