C While 循环 - 检查函数
C While Loops - Checking Against Functions
我正在尝试用 C 编写井字棋程序,并且有一个 while
循环用于检查游戏板是否已填满。如果是这样,循环将中断,结果将是猫的游戏。
我还有一个函数 boardFull
,它将我的 2D 游戏板作为参数并检查每个单元格是否为 -1,这表示 space 为空。
由于某种原因,我在程序运行时进入了循环,但是在填充一个space之后,循环中断并且我的程序结束了。我使用 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;
}
- 您应该使用
boardFull
函数中的 boolean
return 值(参见 this post)。它更具可读性和易懂性。
- 您的
boardFull
函数 returns 0(假设此值代表 false
)当它找到第一个非空单元格时。这是错误的。如果任何单元格 为空,您应该 return 0。
- 你的
while
循环条件对我来说看起来不错。但是如果你使用 boolean
return 值,它看起来 更好 : while (!boardFull(...))
我正在尝试用 C 编写井字棋程序,并且有一个 while
循环用于检查游戏板是否已填满。如果是这样,循环将中断,结果将是猫的游戏。
我还有一个函数 boardFull
,它将我的 2D 游戏板作为参数并检查每个单元格是否为 -1,这表示 space 为空。
由于某种原因,我在程序运行时进入了循环,但是在填充一个space之后,循环中断并且我的程序结束了。我使用 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;
}
- 您应该使用
boardFull
函数中的boolean
return 值(参见 this post)。它更具可读性和易懂性。 - 您的
boardFull
函数 returns 0(假设此值代表false
)当它找到第一个非空单元格时。这是错误的。如果任何单元格 为空,您应该 return 0。 - 你的
while
循环条件对我来说看起来不错。但是如果你使用boolean
return 值,它看起来 更好 :while (!boardFull(...))