私はこの Tic Tac Toe をコーディングしました。Player 1 の場合、完全に機能します (笑)。エンドゲームはすべての作業をチェックするため、スペース 1、2、3 に X が入力された場合、ゲームは終了し、繰り返しを求められます。
ただし、私が抱えている問題は、プレイヤー 2 に決して切り替わらないことです。常にプレイヤー 1 に次の動きを要求するため、常に X を配置します。(下のスクリーンショットを参照)。一番下の if ステートメントはこれを行うために作成されたもので、機能していないようです。プレーヤーを切り替えるために追加/変更する必要があるものを誰かが教えてくれれば幸いです。(コードが基本的で、おそらくフォーマットが不十分であることなどは知っていますが、数日前にC ++の学習を開始しました。これが私の最初の実際のプロジェクトです)。事前に助けてくれてありがとう!
#include <iostream>
using namespace std;
// prepare the game
bool GameOver = false;
bool Repeat = false;
bool Winner = false;
int PlayerTurn = 1;
int ChangeNumber;
char Counter = 'Z';
char Board1 = '1';
char Board2 = '2';
char Board3 = '3';
char Board4 = '4';
char Board5 = '5';
char Board6 = '6';
char Board7 = '7';
char Board8 = '8';
char Board9 = '9';
void welcome()
{
cout << "Welcome to Tic Tac Toe! This game requires 2 players." << endl;
cout << "Player 1 is represented by X whereas Player 2 is represented by O." << endl << endl;
}
int main()
{
welcome();
cout << Board1 << " - " << Board2 << " - " << Board3 << endl;
cout << Board4 << " - " << Board5 << " - " << Board6 << endl;
cout << Board7 << " - " << Board8 << " - " << Board9 << endl;
do
{
if(PlayerTurn == 1)
{
cout << endl << "Player 1, it is your turn! Enter the number you wish to change! ";
Counter = 'X';
}
else
{
cout << endl << "Player 2, it is your turn! Enter the number you wish to change! ";
Counter = 'O';
}
do{
cin >> ChangeNumber;
switch(ChangeNumber)
{
case 1:
Board1 = Counter;
break;
case 2:
Board2 = Counter;
break;
case 3:
Board3 = Counter;
break;
case 4:
Board4 = Counter;
break;
case 5:
Board5 = Counter;
break;
case 6:
Board6 = Counter;
break;
case 7:
Board7 = Counter;
break;
case 8:
Board8 = Counter;
break;
case 9:
Board9 = Counter;
break;
default:
cout << "That is not a valid placement!";
Repeat = true;
}
}while(Repeat == true);
//check for end of game
if (Board1 != '1') {
if (Board2 == Board1 && Board3 == Board1){
GameOver = true;
}
if (Board4 == Board1 && Board7 == Board1){
GameOver = true;
}
}
if (Board5 != '5'){
if (Board1 == Board5 && Board9 == Board5){
GameOver = true;
}
if (Board2 == Board5 && Board8 == Board5){
GameOver = true;
}
if (Board4 == Board5 && Board6 == Board5){
GameOver = true;
}
if (Board3 == Board5 && Board7 == Board5){
GameOver = true;
}
}
if (Board9 != '9') {
if (Board3 == Board9 && Board6 == Board9){
GameOver = true;
}
if (Board7 == Board9&& Board8 == Board9){
GameOver = true;
}
}
//Check not a draw
if (Board1 != '1' && Board2 != '2' && Board1 != '3' && Board4 != '4' && Board5 != '5' && Board6 != '6' && Board7 != '7' && Board8 != '8' && Board9 != '9')
{
GameOver = true;
Winner = false;
}
if(GameOver) {
if(Winner){
cout << "Player" << PlayerTurn << " wins!" << endl;
}
cout << Board1 << " - " << Board2 << " - " << Board3 << endl;
cout << Board4 << " - " << Board5 << " - " << Board6 << endl;
cout << Board7 << " - " << Board8 << " - " << Board9 << endl << endl;
cout << "Game over!" << endl;
cout << "Play again? y/n ";
char PlayAgain;
cin >> PlayAgain;
if (PlayAgain == 'y'){
GameOver = false;
Board1 = '1';
Board2 = '2';
Board3 = '3';
Board4 = '4';
Board5 = '5';
Board6 = '6';
Board7 = '7';
Board8 = '8';
Board9 = '9';
}
PlayerTurn = 1;
}
else {
if (PlayerTurn == 1){
PlayerTurn == 2;
} else {
PlayerTurn == 1;
}
}
}while(GameOver == false);
}