C - 执行外部循环的函数 - 匹配3游戏

时间:2014-08-27 07:06:47

标签: c

我想在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的新手。

这是我得到的输出 - enter image description here

相反,输出应该只是游戏板而Ran:9以下。这意味着函数没有执行。

1 个答案:

答案 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;
        }
    }
}