getch()出错

时间:2016-07-21 06:45:18

标签: c++ arrays getch

void move_player(int& x, int& y) {
int old_x, old_y, new_x, new_y;
switch (getch()) {
case 0x31: // miscare stanga
    if (current_x>min_x) {
        old_x=x;
        new_x=x-1;
        if (y==1) {
            path[1][old_x]=' ';
            path[1][new_x]=player;
            system("cls");
            for (int y=0;y<3;y++) {
                for (int x=0;x<20;x++) {
                    cout << path[y][x];
                }
                cout << endl;
            }
        } else if (y==2) {
            path[2][old_x]='_';
            path[2][new_x]=player;
            system("cls");
            for (int y1=0;y1<3;y1++) {
                for (int x1=0;x1<20;x1++) {
                    cout << path[y1][x1];
                }
                cout << endl;
            }
        }
    }
break;
case 0x32:
    if (x<max_x) {
        old_x=current_x;
        new_x=current_x+1;
        if (y==1) {
            path[1][old_x]=' ';
            path[1][new_x]=player;
            system("cls");
            for (int y2=0;y2<3;y2++) {
                for (int x2=0;x2<20;x2++) {
                    cout << path[y2][x2];
                }
                cout << endl;
            }
        } else if (y==2) {
            path[2][old_x]='_';
            path[2][new_x]=player;
            system("cls");
            for (int y3=0;y3<3;y3++) {
                for (int x3=0;x3<20;x3++) {
                    cout << path[y3][x3];
                }
                cout << endl;
            }
        }
    }
break;
case 0x33:
    if (y>min_y) {
        old_y=y;
        new_y=y-1;
        path[old_y][x]='_';
        path[new_y][x]=player;
        system("cls");
        for (int y4=0;y4<3;y4++) {
            for (int x4=0;x4<20;x4++) {
                cout << path[y4][x4];
            }
            cout << endl;
        }
    }
break;
case 0x34:
    if (y<max_y) {
        old_y=y;
        new_y=y+1;
        path[old_y][x]=' ';
        path[new_y][x]=player;
        system("cls");
        for (int y5=0;y5<3;y5++) {
            for (int x5=0;x5<20;x5++) {
                cout << path[y5][x5];
            }
            cout << endl;
        }
    }
}
x=new_x;
y=new_y;

}

这是在二维空间中移动玩家的功能。 它由一个我声明为char path[3][20]的数组表示,玩家只能在path[1][20]path[2][20]中移动。数组的第一层只是由一堆线表示,有点设置地图的边界。顺便说一下,玩家从path[2][0]或左下角开始。 (我无法在起始位置向左或向下移动,只能向右或向上移动)

问题是,当我运行它时,我可以正确地移动它一次,但是当我尝试向左或向右移动时它什么也没做,当我尝试向上或向下移动控制台时frezees,它退出。

我该如何解决?

0 个答案:

没有答案