【问题标题】:Tic-Tac-Toe Loop & If issues井字游戏循环和如果发出
【发布时间】:2014-04-03 20:00:09
【问题描述】:

我需要制作一个使用 1-9 网格的两人井字游戏。玩家输入他们希望字母代表的数字。但是,我无法识别谁赢了。在输入每个数字后,它表示最后输入数字的玩家获胜。

#include <iostream>

using namespace std;

int main()
{

int Xp, Op, turn;
char board[9] = {'1','2','3','4','5','6','7','8','9'};

cout << "Please enter a number on the board that is the spot you wish to use" << endl;

cout << "Board:\n";

cout << board[0] << " " << board[1] << " " << board[2] << endl;
cout << board[3] << " " << board[4] << " " << board[5] << endl;
cout << board[6] << " " << board[7] << " " << board[8] << endl;

do
{
for (turn=1; turn<10; turn++)
    if (!(turn % 2) == 0)
    {
        cout << "\nPlayer X's turn." << endl;
        cin >> Xp;
        board[Xp-1] = 'X';

cout << "Current Board:\n";

cout << board[0] << " " << board[1] << " " << board[2] << endl;
cout << board[3] << " " << board[4] << " " << board[5] << endl;
cout << board[6] << " " << board[7] << " " << board[8] << endl;




if((board[0]&&board[1]&&board[2] == 'X') || (board[3]&&board[4]&&board[5] == 'X') || (board[6]&&board[7]&&board[8] == 'X') || 
 (board[0]&&board[3]&&board[6] == 'X') || (board[1]&&board[4]&&board[7] == 'X') || (board[2]&&board[5]&&board[8] == 'X') || 
 (board[0]&&board[4]&&board[8] == 'X') || (board[6]&&board[4]&&board[2] == 'X'));
 {          
   cout << "Player X wins!!!!" << endl;
 }      
    else
    {

        cout << "\nPlayer O's turn." << endl;

        cin >> Op;
        board[Op-1] = 'O';

cout << "Current Board:\n";

cout << board[0] << " " << board[1] << " " << board[2] << endl;
cout << board[3] << " " << board[4] << " " << board[5] << endl;
cout << board[6] << " " << board[7] << " " << board[8] << endl;

if((board[0]&&board[1]&&board[2] == 'O') || (board[3]&&board[4]&&board[5] == 'O') || (board[6]&&board[7]&&board[8] == 'O') || 
 (board[0]&&board[3]&&board[6] == 'O') || (board[1]&&board[4]&&board[7] == 'O') || (board[2]&&board[5]&&board[8] == 'O') || 
 (board[0]&&board[4]&&board[8] == 'O') || (board[6]&&board[4]&&board[2] == 'O'));
{           
cout << "Player O wins!!!!" << endl;
}

    }
}
while(turn<10);

cout << "We have a tie!!!";

return 0;
}

【问题讨论】:

    标签: c++


    【解决方案1】:

    问题在于 if 语句看起来像这样:

    if((board[0]&&board[1]&&board[2] == 'X') || (board[3]&&board[4]&&board[5] == 'X') || (board[6]&&board[7]&&board[8] == 'X') || 
     (board[0]&&board[3]&&board[6] == 'X') || (board[1]&&board[4]&&board[7] == 'X') || (board[2]&&board[5]&&board[8] == 'X') || 
     (board[0]&&board[4]&&board[8] == 'X') || (board[6]&&board[4]&&board[2] == 'X'));
     {          
       cout << "Player X wins!!!!" << endl;
     } 
    

    在您打算作为 if 语句主体的代码块之前有一个 ;; 结束语句,使后面的代码块不再是 if 的一部分,而只是一个代码块,无论条件结果如何都将被执行。

    【讨论】:

    • 语法应该是:if ((board[0] == 'X') &amp;&amp; (board[1] == 'X') &amp;&amp; (board[2] == 'X'))。否则是这样的:if (((board[0] == 1) &amp;&amp; (board[1] == 1) &amp;&amp; (board[2] == 1)) == 'X')).
    • @Thomas Matthews 不错。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 2015-06-12
    • 2015-01-08
    相关资源
    最近更新 更多