这些包含for循环的函数应该检查在国际象棋的垂直运动中,在初始坐标和最终坐标之间是否存在片段。 应该检查列(仅垂直)。
这些在另一个函数中运行,该函数检查尝试的移动是否有效。
但是,一旦我使用此代码运行程序,实际上运行了这些功能的代码就会停止。我不确定是否所有进程都停止了,但是它不打印任何应打印的内容。
我很确定问题出在此代码内,因为没有它,我的程序将正确运行。
我尝试在for循环中更改标识符,但这没有用。我相信问题与将“ fromr”加1有关。不这样做,代码就可以正常运行。但是我需要从以下内容检查功能,而不是fromr本身。
int checkVerticalPathwayWhite(int fromr, int fromc, int tor){
fromr = fromr + 1;
for(int r = fromr; r < fromr; r++){
for(int c = fromc; c == fromc;){
if (board[r][c] != &empty){
printf("Pathway is not clear\n");
return 0;
}
}
}
printf("Pathway is clear");
return 1;
}
int checkVerticalPathwayBlack(int fromr, int fromc, int tor){
fromr = fromr - 1;
for(int r = fromr; r > tor; r = r-1){
for(int c = fromc; c == fromc;{
if (board[r][c] != &empty){
printf("Pathway is not clear\n");
return 0;
}
}
}
printf("Pathway is clear");
return 1;
}
如果在(fromr + 1)到(tor-1)之间的路径中有一个非空段,我希望该函数返回0,否则就返回1。
答案 0 :(得分:1)
您的循环条件不正确。
r
初始化为fromr
。条件r<fromr
始终为假。
c
初始化为fromc
。条件c==fromc
为true,但是循环中没有增量。因此循环将无限运行。
答案 1 :(得分:0)
for(int c = fromc; c == fromc;)
那是一个无限循环。我想您想以某种方式更改c。