我想在C中进行一场比赛3场比赛。 这是我到目前为止所写的游戏的完整代码 - http://pastebin.com/sg5JZLz1
但由于某些原因,在这里的代码中(在doIt()函数中):
int x = 0;
while(x<SIZE) {
// Remove vertical matches
removeVerticals();
// Remove horizontal matches
removeHorizontals();
// Move down
moveDown(1);
printf("Ran : %d",x);
x++;
}
这些函数只执行一次,并且只在循环内部考虑printf部分。 请原谅我的任何不良编码习惯,因为我是C的新手。
这是我得到的输出 -
相反,输出应该只是游戏板而Ran:9以下。这意味着函数没有执行。
答案 0 :(得分:1)
没有你的功能正常工作!它正在执行SIZE
次。
但问题是你正在使用system(cls);
。所以它每次执行时都会清除屏幕!因此,您无法在屏幕上看到之前的打印件。因此,您只能获得屏幕上的最后一次打印。
尝试此更改 -
moveDown(int printx) {
int moved = 0,r;
for (m=0; m<SIZE; m++) {
moved = 0;
for (i=0; i<SIZE-1; i++) {
for (j=0;j<SIZE;j++) {
if (matrix[i+1][j] == ' ') {
matrix[i+1][j] = matrix[i][j];
matrix[i][j] = ' ';
moved = 1;
}
}
}
i=0;
for (j=0;j<SIZE;j++) {
r = rand_lim(5); // 0 to 5
if (matrix[i][j] == ' ') {
matrix[i][j] = arr[r];
}
}
if(printx==1 && moved==1) {
//system("cls"); // remove or comment out this line <-- Note
printScreen();
// Remove vertical matches
removeVerticals();
// Remove horizontal matches
removeHorizontals();
waitForIt();
moved = 0;
}
}
}