我想存储一个字符数组,清除屏幕,然后再次显示字符数组

时间:2014-03-14 20:45:13

标签: c++ arrays char

#include <iostream>
#include "windows.h"

using namespace std;

char map[10][20] = {
    "###################",
    "#@                #",
    "#                 #",
    "#                 #",
    "#                 #",
    "#                 #",
    "#                 #",
    "#                 #",
    "#                 #",
    "###################"
};

int x = 1;
int y = 1;

bool game_running = true;

int main()
{
    while(game_running == true){
        system("cls");
        for(int display=0; display<10; display++){
            cout << map[display] << endl;
        }

        system("pause>nul");

        if(GetAsyncKeyState(VK_DOWN)){
            int y2 = y + 1;
            if(map[y2][x] == ' '){
                map[y][x] = ' ';
                y++;
                map[y][x] = '@';
            }
        }
        if(GetAsyncKeyState(VK_UP)){
            int y2 = y - 1;
            if(map[y2][x] == ' '){
                map[y][x] = ' ';
                y = y - 1;
                map[y][x] = '@';
            }
        }
        if(GetAsyncKeyState(VK_RIGHT)){
            int x2 = x+1;
            if(map[y][x2] == ' '){
                map [y][x] = ' ';
                x++;
                map[y][x] = '@';
            }
        }
        if(GetAsyncKeyState(VK_LEFT)){
            int x2 = x-1;
            if(map[y][x2] == ' '){
                map [y][x] = ' ';
                x--;
                map[y][x] = '@';
            }
        }
    }

    return 0;
}

这是我的代码。您可以使用箭头键进行@移动。我希望能够清除屏幕,做一些文字内容,然后让屏幕回来,@符号确切位置。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

看起来你需要使用

sysytem("cls");

这将使屏幕每秒清除