3x3 の 2D tic-tac-toe ゲームをコーディングするのに忙しいので、すぐに 3D バージョンに変換したいと思います - 友人が教えてくれたものです。
とにかく、私は基本的なことのほとんどをダウンしています (プレイヤー 1、プレイヤー 2、行と列の値の入力など。しかし、値の行または値の列が互いに等しいかどうかを比較するのに行き詰まりました。
constexpr size_t rows = 3;
constexpr size_t cols = 3;
char gameBoard[rows][cols] = {
{'-','-','-'},
{'-','-','-'},
{'-','-','-'}
};
これが入力プロセスによって次のように変更された場合:
char gameBoard[rows][cols] = {
{'O','O','O'},
{'X','X','-'},
{'-','-','X'}
};
行1がいっぱいになり、必要な出力を提供できることを認識してもらいたいです。
for
ループを使用して、最初の char と 2 番目の 3 分の 1 の間の等価性を確認したかったの&&
ですが、何らかの理由でこれを行うと、与えられた "win text" という出力が得られるだけのようです。
与えられた入力に感謝します:)
*したがって、この質問には回答がありましたが、行と列をテストするために行ったことのコードを提供したかっただけです。私はちょうどそれを仕上げているので、対角線セクションを含めていませんが、それはかなり簡単なはずです (たとえば、左上から右下への対角線をテストする[i][j]
必要はありません)。[j][j]
for (size_t i = 0; i != 1; i++)
{
int win_cnt = 0;
for (size_t j = 0; j != 3; j++)
{
if (gameBoard[i][j] == 'X')
{
win_cnt++;
if (win_cnt == 3)
{
system("cls"); //Please do not mind this, this is a placeholder
cout << "\n Player 1 has won the game!" << endl;
return 0;
}
}
}//Check for row win
win_cnt = 0;
for (size_t j = 0; j != 3; j++)
{
if (gameBoard[j][i] == 'X')
{
win_cnt++;
if (win_cnt == 3)
{
system("cls"); //Please do not mind this, this is a placeholder
cout << "\n Player 1 has won the game!" << endl;
return 0;
}
}
}//Check for column win
}//Check for win PRIMARY
システムの使用を気にしないでください。使用済みの「コンソール」画面をクリアする関数をコーディング中です。system("cls") は、今すぐデバッグするためのより高速な方法です。