C++ でコネクト 4 ゲームを作成しています。私は人間対 AI の対戦相手になるようにゲームを作成しているので、勝利パラメータについては、人間が勝ったか AI が勝ったかをチェックします。これまでのところ、行にある勝利と列にある行に対してこれを行うことができました。私が問題を抱えているのは、斜めに4つ並んでいるのを検出することだけです。
編集: 私のボードは 7x6 グリッドです
行をチェックするために私が持っているものは次のとおりです。
for (int i = 0; i < board.size(); ++i)
{
if ((board[i][0] == PLAYER_TOKEN && board[i][1] == PLAYER_TOKEN && board[i][2] == PLAYER_TOKEN && board[i][3] == PLAYER_TOKEN) ||
(board[i][1] == PLAYER_TOKEN && board[i][2] == PLAYER_TOKEN && board[i][3] == PLAYER_TOKEN && board[i][4] == PLAYER_TOKEN) ||
(board[i][2] == PLAYER_TOKEN && board[i][3] == PLAYER_TOKEN && board[i][4] == PLAYER_TOKEN && board[i][5] == PLAYER_TOKEN) ||
(board[i][3] == PLAYER_TOKEN && board[i][4] == PLAYER_TOKEN && board[i][5] == PLAYER_TOKEN && board[i][6] == PLAYER_TOKEN))
{
gameover = true;
human.setWins(human.getWins()+1);
cout<<"Congratulations You have Won"<<endl;
system("PAUSE");
}
}
そして列の場合、私はこれを持っています:
for (int j = 0; j < board[0].size(); ++j)
{
if ((board[0][j] == PLAYER_TOKEN && board[1][j] == PLAYER_TOKEN && board[2][j] == PLAYER_TOKEN && board[3][j] == PLAYER_TOKEN) ||
(board[1][j] == PLAYER_TOKEN && board[2][j] == PLAYER_TOKEN && board[3][j] == PLAYER_TOKEN && board[4][j] == PLAYER_TOKEN) ||
(board[2][j] == PLAYER_TOKEN && board[3][j] == PLAYER_TOKEN && board[4][j] == PLAYER_TOKEN && board[5][j] == PLAYER_TOKEN))
{
gameover = true;
human.setWins(human.getWins()+1);
cout<<"Congratulations You have Won"<<endl;
system("PAUSE");
}
}
私は斜めの勝利のためにこれを行うための同様の方法を取得しようとしていますが、うまくいくものを思い付くことができません. 私がたどり着いたのはこれだけで、率直に言って、何の役にも立ちません!
//for (int rows = 0; rows<4; ++rows){
// for (int columns = 0; columns<3; ++columns){
// if ((board[rows][columns] == PLAYER_TOKEN && board[rows+1][columns+1] == PLAYER_TOKEN && board[rows+2][columns+2] == PLAYER_TOKEN && board[rows+3][columns+3] == PLAYER_TOKEN) ||
// (board[rows+1][columns+1] == PLAYER_TOKEN && board[rows+2][columns+2] == PLAYER_TOKEN && board[rows+3][columns+3] == PLAYER_TOKEN && board[rows+1][columns+4] == PLAYER_TOKEN) ||
// (board[rows+2][columns+2] == PLAYER_TOKEN && board[rows+3][columns+3] == PLAYER_TOKEN && board[rows+4][columns+4] == PLAYER_TOKEN && board[rows+5][columns+5] == PLAYER_TOKEN))
// {
// gameover = true;
// human.setWins(human.getWins()+1);
// cout<<"Congratulations you have Won"<<endl;
// system("PAUSE");
// }
// }
//}
誰でもこれを手伝ってもらえますか?
前もって感謝します。