0
私はTic-Tac-Toeプログラムを構築していましたが、現時点でまだ進行中です。これまでのところ、ビルドのエラーは発生していませんが、現時点での主な問題は、プレイヤー1が最初の番号を入力するとプログラムが終了するということです。私はそれがInput()関数のためだと思うが、約3回コードを調べた後、空白になり、何が起こっているのか分からない。関連するコードは次のとおりです。C++ Tic-Tac-Toeプログラム
#include <iostream>
using namespace std;
char acBoard[3][3] = { '1', '2', '3', '4', '5', '6', '7', '8', '9' };
char cPlayerCharacter = '0';
int iChoice = iChoice + 1;
void DisplayBoard()
{
system("cls");
cout << ' ' << acBoard[0][0] << " | " << acBoard[0][1] << " | " << acBoard[0][2] << endl;
cout << "---|---|---" << endl;
cout << ' ' << acBoard[1][0] << " | " << acBoard[1][1] << " | " << acBoard[1][2] << endl;
cout << "---|---|---" << endl;;
cout << ' ' << acBoard[2][0] << " | " << acBoard[2][1] << " | " << acBoard[2][2] << endl;
}
char win()
{
if (acBoard[0][0] && acBoard[0][1] && acBoard[0][2] == 'X' ||
acBoard[1][0] && acBoard[1][1] && acBoard[1][2] == 'X' ||
acBoard[2][0] && acBoard[2][1] && acBoard[2][2] == 'X' ||
acBoard[0][0] && acBoard[1][0] && acBoard[2][0] == 'X' ||
acBoard[0][1] && acBoard[1][1] && acBoard[2][1] == 'X' ||
acBoard[0][2] && acBoard[1][2] && acBoard[2][2] == 'X' ||
acBoard[0][0] && acBoard[1][1] && acBoard[2][2] == 'X' ||
acBoard[2][0] && acBoard[1][1] && acBoard[2][0] == 'X')
return 'X';
if (acBoard[0][0] && acBoard[0][1] && acBoard[0][2] == '0' ||
acBoard[1][0] && acBoard[1][1] && acBoard[1][2] == '0' ||
acBoard[2][0] && acBoard[2][1] && acBoard[2][2] == '0' ||
acBoard[0][0] && acBoard[1][0] && acBoard[2][0] == '0' ||
acBoard[0][1] && acBoard[1][1] && acBoard[2][1] == '0' ||
acBoard[0][2] && acBoard[1][2] && acBoard[2][2] == '0' ||
acBoard[0][0] && acBoard[1][1] && acBoard[2][2] == '0' ||
acBoard[2][0] && acBoard[1][1] && acBoard[2][0] == '0')
return '0';
return 'd';
}
void Input()
{
cin >> iChoice;
switch (iChoice)
{
case 1:
acBoard[0][0] = cPlayerCharacter;
break;
case 2:
acBoard[0][1] = cPlayerCharacter;
break;
case 3:
acBoard[0][2] = cPlayerCharacter;
break;
case 4:
acBoard[1][0] = cPlayerCharacter;
break;
case 5:
acBoard[1][1] = cPlayerCharacter;
break;
case 6:
acBoard[1][2] = cPlayerCharacter;
break;
case 7:
acBoard[2][0] = cPlayerCharacter;
break;
case 8:
acBoard[2][1] = cPlayerCharacter;
break;
case 9:
acBoard[2][2] = cPlayerCharacter;
break;
}
}
int main()
{
do
{
DisplayBoard();
cout << "Enter a Number Player " << cPlayerCharacter << ": ";
Input();
if (cPlayerCharacter = '0')
{
cPlayerCharacter = 'X';
}
else cPlayerCharacter = '0';
} while (!win);
if (win() == 'd')
{
cout << "It's a draw";
}
if (win() == '0')
{
cout << "Nought wins";
}
if (win() == 'X')
{
cout << "Cross wins";
}
}
解決策が私の目の前にあるように感じますが、私はそれを見ることはできません。どんな助けもありがとう。ありがとう。
デバッガを使用してステップスルーする場合は、一度それを見るだけで済みます。 – wally
'} while(!win);'これは警告だったはずです。あなたが警告を下げない限り。 winは関数です。 – drescherjm
タイプミスとして投票を終了します。 '!win'は'!win() 'でなければなりません。 – NathanOliver