Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有没有什么方法可以防止控制台在清除屏幕时闪烁? #包括 #包括 #包括 #定义速度60 #定义地图高度20 #定义地图宽度20 charkeypress(){ 如果(_kbhit()){ 返回_getch(); }; 返回-1; } void moveRight(int(*map)[贴图高度]){ 整数x;整数y; 炭流; 对于(int y=0;y_C++_C_Windows_Console - Fatal编程技术网

C++ 有没有什么方法可以防止控制台在清除屏幕时闪烁? #包括 #包括 #包括 #定义速度60 #定义地图高度20 #定义地图宽度20 charkeypress(){ 如果(_kbhit()){ 返回_getch(); }; 返回-1; } void moveRight(int(*map)[贴图高度]){ 整数x;整数y; 炭流; 对于(int y=0;y

C++ 有没有什么方法可以防止控制台在清除屏幕时闪烁? #包括 #包括 #包括 #定义速度60 #定义地图高度20 #定义地图宽度20 charkeypress(){ 如果(_kbhit()){ 返回_getch(); }; 返回-1; } void moveRight(int(*map)[贴图高度]){ 整数x;整数y; 炭流; 对于(int y=0;y,c++,c,windows,console,C++,C,Windows,Console,这是我的psude代码为我的控制台游戏编写的C,但当我运行它的游戏,它总是闪烁。如何防止它闪烁?系统(“CLS”)和Set CONSOLECURSORPOSION都会使其闪烁…………………如果不想闪烁,则不要清除屏幕。想想看,如果你快速清除屏幕,然后再画一次,屏幕就会闪烁。你为什么不每次都画整个屏幕而不清除它呢?然后,内容将被完全替换为无闪烁。因此,我使用setConsoleUrsOrPosition(),这意味着没有清晰的屏幕,但仍然会发生(较少)。您能否更详细地描述一下“闪烁”的确切含义?你

这是我的psude代码为我的控制台游戏编写的C,但当我运行它的游戏,它总是闪烁。如何防止它闪烁?系统(“CLS”)和Set CONSOLECURSORPOSION都会使其闪烁…………………

如果不想闪烁,则不要清除屏幕。想想看,如果你快速清除屏幕,然后再画一次,屏幕就会闪烁。你为什么不每次都画整个屏幕而不清除它呢?然后,内容将被完全替换为无闪烁。因此,我使用setConsoleUrsOrPosition(),这意味着没有清晰的屏幕,但仍然会发生(较少)。您能否更详细地描述一下“闪烁”的确切含义?你是说有时你打印的字符在那里,有时不在那里?或者你的意思是有时区域更亮?一般来说,避免在图形中闪烁的方法是使用“双缓冲”技术。对于winapi控制台,您可能可以使用以下方法在控制台应用程序中实现它,该应用程序可能与
#include <Windows.h>
#include <stdio.h>
#include <conio.h>
#define Speed 60
#define map_height 20
#define map_width 20
char KeyPress(){
    if(_kbhit() ){
    return _getch();
    };
    return -1;
}
void moveRight(int (*map)[map_height]){
    int _x;int _y;
    char current;
    for(int y = 0; y< map_height;y++){
            for(int x =0; x < map_width;x++){
                if(map[y][x] != NULL) {
                    _x = x; _y = y; current = map[y][x];
                    break;
                }
            }
        }
    map[_y][_x] = NULL;
    map[_y][_x+1] = current;
}
int main(){
    HANDLE output = GetStdHandle(STD_OUTPUT_HANDLE);
    int map[map_height][map_height] = {NULL};
    map[0][0] = 1;
    int pos = 0;
    //Draw map
    while(1){
    for(int y = 0; y< map_height;y++){
        for(int x =0; x < map_width;x++){
            if(map[y][x] == NULL) printf("[ ]");
            else printf("[x]");
        }
        printf("\n");
    }

    //End
    Sleep(Speed);
    //system("CLS");
    COORD pos = {0, 0};
    SetConsoleCursorPosition(output, pos);
    if(KeyPress() == 'd') moveRight(map);
    }
}