我有一个 tic tac toe board ,我正在为好玩而工作,但我遇到了一个问题。基本上我随机生成两个 x,y 坐标,然后通过 while 循环运行它们。如果坐标位置没有被标记,那么它会标记点。否则它将继续运行并生成一对新坐标。这似乎在调用该函数的前四次有效,但随后对该函数的任何使用都会导致它失控。希望有人能指出我正确的方向,并告诉我某处的逻辑是否不正确。建设性的批评很棒。
在此先感谢,这是 X 的移动功能的代码(O 的代码几乎相同):
void Xmove(struct config *cp) {
int ran1, ran2;
srand((unsigned) time(NULL));
ran1 = rand() % 3;
ran2 = rand() % 3;
if(cp->grid[1][1] == ' ') {
cp->grid[1][1] = 'X';
printGrid(cp);
return;
}
while(ran1 == 1 && ran2 == 1) {
ran1 = (rand() % 3);
ran2 = (rand() % 3);
}
int looper = 1;
while (looper) {
if(cp->grid[ran1][ran2] != 'O' && cp->grid[ran1][ran2] != 'X') {
cp->grid[ran1][ran2] = 'X';
printGrid(cp);
looper = 0;
}
ran1 = (rand() % 3);
ran2 = (rand() % 3);
}
}