Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检查数组中的元素是否已被占用_C++_Arrays - Fatal编程技术网

C++ 检查数组中的元素是否已被占用

C++ 检查数组中的元素是否已被占用,c++,arrays,C++,Arrays,我正在做一个两人的井字游戏,玩家在1-9格中输入一个数字。玩家X使用变量Xp进入所需位置。球员O也会这样做。然而,我不能做一个if语句来检查一个玩家是否进入了一个已经被占据的网格点 #include <iostream> using namespace std; void showBoard(char board[], int turn, int Xp, int Op); void winning(char board[]); int main() { int Xp=0,

我正在做一个两人的井字游戏,玩家在1-9格中输入一个数字。玩家X使用变量Xp进入所需位置。球员O也会这样做。然而,我不能做一个if语句来检查一个玩家是否进入了一个已经被占据的网格点

#include <iostream>

using namespace std;

void showBoard(char board[], int turn, int Xp, int Op);
void winning(char board[]);


int main()
{

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

showBoard(board, turn, Xp, Op);

return 0;
}

void showBoard(char board[], int turn, int Xp, int Op)
{
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;
        if(Xp=Op) //HERE IS THE CHECKER
        {
            cout << "Spot is taken! Enter new spot: ";
            cin >> Xp;
            board[Xp-1] = 'X';
        }
        else
        {
        board[Xp-1] = 'X';
        }       //WHERE IT ENDS
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;

winning(board);
    }
    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;

winning(board);
    }

}while(turn<10);

cout << "No one won.\n";

return;
}
#包括
使用名称空间std;
无效展示板(字符板[],整数回合,整数Xp,整数Op);
无效获胜(charboard[]);
int main()
{
int Xp=0,Op=0,turn=0;
字符板[9]={'1','2','3','4','5','6','7','8','9'};
展示板(板、回合、Xp、Op);
返回0;
}
无效展示板(字符板[],整数回合,整数Xp,整数Op)
{

无法将所有内容初始化为虚拟值

并为Xp和Op选择了一个字符

#define XP_CHAR 'X'
#define OP_CHAR 'O'
在你的支票里,你有吗

if (board[Xp] != DUMMY_CHAR) // Your checker 

首先,您正在赋值,而不是检查相等性

其次,
Xp==Op
仍然没有任何意义。用o点检查x点?更好的方法是检查正方形是否不是
x
o

if(board[Xp - 1] != 'X' || board[Xp - 1] != 'O')

将数组中的所有内容初始化为
'0'
,如果它是
'0'
,则您知道它尚未被取用。
if(Xp=Op)
我很确定这不是你想象的那样。尝试
=
另外,尝试对两个玩家使用相同的代码。最重要的提示:启用所有警告,并注意它们:
-Wall-Wextra
将其更改为==成功!谢谢
if(board[Xp - 1] != 'X' || board[Xp - 1] != 'O')