Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.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++ 使用SDL的应用程序在任何按键上退出。它不应该是';但不是这样_C++_Loops_Keyboard_Switch Statement_Sdl - Fatal编程技术网

C++ 使用SDL的应用程序在任何按键上退出。它不应该是';但不是这样

C++ 使用SDL的应用程序在任何按键上退出。它不应该是';但不是这样,c++,loops,keyboard,switch-statement,sdl,C++,Loops,Keyboard,Switch Statement,Sdl,我不知道如何使用SDL库正确处理按键 截至目前,我有以下代码: bool running = true; SDL_Event event; while (running) { while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_KEYDOWN: switch (event.key.keysym.sym){

我不知道如何使用SDL库正确处理按键

截至目前,我有以下代码:

bool running = true;
SDL_Event event;
while (running) {       
        while (SDL_PollEvent(&event)) {
            switch (event.type) {
            case SDL_KEYDOWN:
                switch (event.key.keysym.sym){
                case SDLK_RIGHT:
                    buttons.setState(2);
                    SDL_UpdateWindowSurface(window);
                case SDLK_LEFT:
                    buttons.setState(1);
                    SDL_UpdateWindowSurface(window);
                case SDLK_INSERT:
                    if (buttons.getState() == 1){
                        buttons.setState(3);
                        SDL_UpdateWindowSurface(window);
                        SDL_Delay(50);
                        buttons.setState(1);
                        SDL_UpdateWindowSurface(window);
                    }
                    else{
                        if (buttons.getState() == 2){
                            buttons.setState(4);
                            SDL_UpdateWindowSurface(window);
                            SDL_Delay(50);
                            buttons.setState(2);
                            SDL_UpdateWindowSurface(window);
                        }
                        else{ 
                            break;
                        }
                    }
                default:
                    running = true;
                }
            case SDL_QUIT:
                running = false;
                SDL_DestroyWindow(window);
                SDL_Quit();
            break;
            }
        }
    }
有一个可绘制类,buttons是该类的一个实例。状态是我想画的不同帧。但是,我只想在按下向左或向右箭头键时绘制它们。到目前为止,只要按任何键,程序都将退出


我不知道该怎么办。

案例SDL\u KEYDOWN:缺少break语句,这导致每次按键都会在
SDL\u退出
案例中执行代码。应该是

            default:
                running = true;
            }
        break; <--- inserted
        case SDL_QUIT:
默认值:
运行=真;
}

中断
case-SDL\u KEYDOWN:
缺少break语句,这导致每次按键都会在
SDL\u-QUIT
案例中执行代码。应该是

            default:
                running = true;
            }
        break; <--- inserted
        case SDL_QUIT:
默认值:
运行=真;
}

中断
case-SDL\u KEYDOWN:
缺少break语句,这导致每次按键都会在
SDL\u-QUIT
案例中执行代码。应该是

            default:
                running = true;
            }
        break; <--- inserted
        case SDL_QUIT:
默认值:
运行=真;
}

中断
case-SDL\u KEYDOWN:
缺少break语句,这导致每次按键都会在
SDL\u-QUIT
案例中执行代码。应该是

            default:
                running = true;
            }
        break; <--- inserted
        case SDL_QUIT:
默认值:
运行=真;
}

中断 你忘了休息;在你写的每一份声明中。 您还可以添加以下内容:


案例SDLK_逃跑:你忘了休息;在你写的每一份声明中。 您还可以添加以下内容:


案例SDLK_逃跑:你忘了休息;在你写的每一份声明中。 您还可以添加以下内容:


案例SDLK_逃跑:你忘了休息;在你写的每一份声明中。 您还可以添加以下内容:


case SDLK_ESCAPE:所有案例都缺少break语句。使用if/else可以避免此问题。确实OP需要这样做,但是内部开关的相关中断语句以及所有情况都缺少中断语句。使用if/else可以避免此问题。确实OP需要这样做,但是内部开关的相关中断语句以及所有情况都缺少中断语句。使用if/else可以避免此问题。确实OP需要这样做,但是内部开关的相关中断语句以及所有情况都缺少中断语句。通过使用if/else可以避免此问题。实际上,OP也需要为内部开关提供相关的中断语句