我在游戏开发中做了关于SDL的本教程。程序应该在找到输入时离开主循环,但它不会:
SDL_Window* gWindow = NULL;
SDL_Surface* gScreenSurface = NULL;
SDL_Surface* gXOut = NULL;
int main(int argc, char* argv[]) {
if (!init()){
printf("Failed to initialize.\n");
}
else {
//Load media
if (!loadMedia()){
printf("Failed to load media.\n");
}
else {
//Main loop flag
bool quit = false;
//Event handler
SDL_Event e;
//While application is runnig
while (!quit){
//Handles events on queue
while (SDL_PollEvent(&e) != 0){
//User requests quit
if (e.type == SDL_QUIT){
quit = true;
}
}
//Aply the image
SDL_BlitSurface(gXOut, NULL, gScreenSurface, NULL);
//Update the surface
SDL_UpdateWindowSurface(gWindow);
}
}
}
//Free resources and close SDL
close();
return 0;
我已尝试将SDL_QUIT更改为SDL_KEYPRESSED,但它也无法正常工作。知道为什么吗?
答案 0 :(得分:0)
SDL2中不存在SDL_KEYPRESSED。如果要使用键盘输入退出程序,请在循环中使用SDL_KEYDOWN或SDL_KEYUP,如下所示:
while (SDL_PollEvent(&e) != 0){
if (e.type == SDL_KEYDOWN){ // or SDL_KEYUP
quit = true;
}
请查看wiki page。
答案 1 :(得分:0)
这是代码查找您要实现的目标的方式:
Error using *
Integers can only be combined with integers of the same class, or scalar doubles.
Error in main_pzm (line 44)
Pzm = Pzm+rad*psi;
当按下窗口上的X时,SDL_QUIT接受输入,或者如果要在应用程序中使用其他键退出,则将键更改为其他键。