私は C++ の初心者で、TicTacToe ゲームを作成するためのコードを作成しているときに、勝利条件が満たされるまでゲームを続行するようにプッシュする while ステートメントに行き詰まりました。
while(((table[0][0]!='X')&&(table[1][1]!='X')&&(table[2][2]!='X')))
これはあくまでも対角線上の条件です(条件を全部入れると目障りになりますが…)。問題は、条件が満たされていてもこれが機能しないことです (最後に cout を使用しているためだと思います)、 && を || で変更すると 状態動作!すべてに影響を与える != のせいではないかと思いました??
編集:最小限の例(浮動小数点を削除しました!):
#include <iostream>
using namespace std;
int main()
{
int tailleX(3),tailleY(3); //The Size of the table.
char table[tailleX][tailleY]; //TictacToe table.
table[0][0]='N';
table[0][1]='N';
table[0][2]='N';
table[1][0]='N';
table[1][1]='N'; //Randomly filling the array to avoid an error
table[1][2]='N';
table[2][0]='N';
table[2][1]='N';
table[2][2]='N';
int coorP1; //The Coordinate of the square (Exp: x=1 , y=2 will be 1.2)
while(((table[0][0]!='X')&&(table[1][1]!='X')&&(table[2][2]!='X'))) //For the minimal example I made just the diagonal condition
{
cout<<"PLAYER1: Enter the coordination to score: (Exemple: 1, 2, 3..) "<<endl;
cin>>coorP1;
switch(coorP1) //Filling the square depending on the coordinates.//I used If because Switch does not work.
{
case 1:
table[0][0]='X';
break;
case 2:
table[0][1]='X';
break;
case 3:
table[0][2]='X';
break;
case 4:
table[1][0]='X';
break;
case 5:
table[1][1]='X';
break;
case 6:
table[1][2]='X';
break;
case 7:
table[2][0]='X';
break;
case 8:
table[2][1]='X';
break;
case 9:
table[2][2]='X';
break;
}
}
cout<<"You won"<<endl;
return 0;
}