我正在尝试在C中编写一个Tic-Tac-Toe程序,并且有一个while
循环,用于检查游戏板是否已填满。如果是这样,循环将会中断,结果将是猫的游戏。
我还有一个函数boardFull
,它将我的2D游戏板作为参数,并检查每个单元格为-1,表示该空格为空。
出于某种原因,我在程序运行时进入循环,但在填满一个空格后,循环中断,我的程序结束。我正确使用while
吗?
代码段:
while(boardFull(board) != -1)
{
if((turn % 2) == 0)
{
printf("Player One's turn.\n");
marker = 1;
}
else
{
printf("Player Two's turn.\n");
marker = 0;
}
printf("Which row? ");
scanf("%i", &row);
printf("Which column? ");
scanf("%i", &column);
if(board[row][column] != -1)
{
while(board[row][column] != -1)
{
printf("Space already taken. Try again.\n");
printf("Which row? ");
scanf("%i", &row);
printf("Which column? ");
scanf("%i", &column);
printf("\n");
}
}
else
board[row][column] = marker;
drawBoard(board);
turn++;
}
这是我的boardFull
方法......
int boardFull(int board[3][3])
{
int i, j;
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
if(board[i][j] != -1)
return 0;
}
}
return -1;
}
答案 0 :(得分:1)
boolean
函数的boardFull
返回值(请参阅this post)。它更具可读性和易懂性。boardFull
函数找到第一个非空单元格时,它返回0(假设该值代表false
)。这是错的。如果任何单元格 为空,则应返回0。while
循环条件对我来说很合适。但是,如果您使用boolean
返回值,则会看起来更好:while (!boardFull(...))