检查数组中的元素是否已被占用
Checking if element in array is already occupied
我正在制作一个双人井字游戏,玩家在 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;
}
将所有
内容初始化为虚拟值
说
#define DUMMY_CHAR '.'
并为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')
相关文章:
- 是否可以在c++中处理字符串流中的各个元素
- C++默认情况下,指针类型数组的元素是否保证初始化为 nullptr?
- 检查 2D 网格的某个元素是否与另一个元素共享对角线、水平线或垂直线
- 是否可以使用 new 指定具有宏常量的动态分配数组的元素?
- C++:带有大括号初始化列表的函数调用表达式 - 标准是否规定在单个元素列表的微不足道的情况下忽略大括号?
- 如何知道地图中的最后一个元素是否被删除?
- 检查 TinyXML 中的元素是否存在
- 经过最后一个数组元素末尾的指针是否应该等于超过整个数组末尾的指针?
- 是否需要 mutex() 来安全地同时访问具有 2 个线程的数组的不同元素?
- 是否有用于元素部分移位的 simd 指令/内在/内置指令?
- 是否有具有外部元素分配的序列容器(在 STL 中)?
- C++:是否可以编写一个函数,将不同类型的元素附加到变体数组中?
- 数组对象的生存期是否在重用其元素存储时结束?
- 擦除是否删除 stl 无序列图元素使用的堆内存
- 调用 erase() 函数是否也会在擦除元素之前更改迭代器值?
- 是否有一个 std::set 函数来确定不超过数字 x 的最大元素?
- 除了 std::vector 之外,是否有一个 std 容器不会复制和销毁作为类的元素?
- 是否可以使用宏来访问动态数组或向量中的元素或为其赋值
- 如果我在相应 char 数组的声明中为其提供额外的元素,是否会自动设置 NULL?
- 使用 at() 访问 std::map 元素是否比运算符 [] 慢?