代码之家  ›  专栏  ›  技术社区  ›  Gergo Miklos

C和SDL退出函数

  •  0
  • Gergo Miklos  · 技术社区  · 7 年前

    我使用C和SDL 2.0,但我有一个问题,这是(当你点击窗口的“x”时,它退出):

    void function(SDL_Surface *screen) {
      SDL_Event event;
      bool quit=false;
        while (!quit) {
                SDL_WaitEvent(&event);
    
                switch (event.type) {
                   case...
    
                   case SDL_QUIT:    
                      quit = true;        
                      break;
                }
    }
    

    这是可行的,但不太好。如果在这样的函数中,它只退出到main(),因此我需要再次单击“x”以退出整个程序。 我该怎么解决?(我每次都想退出整个程序,不管它是否在函数中)。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Petr Abdulin jsiangel    7 年前

    正如在评论中已经提到的,您很可能有多个事件处理循环,这通常是不正确的设计。您的游戏总体布局应该类似于:

    int main(int argc, char* argv[]) {
    
        // do initialize stuff
    
        bool run = true;
        SDL_Event evt;
    
        // game loop
        while (run) {
            // process OS events
            while(SDL_PollEvent(&evt) != 0) {
                switch (evt.type) {
                    case SDL_QUIT:    
                      run = false;        
                      break;
                }
            }
    
            update();
            render();
        }
    
        // clean up
        SDL_Quit();
        return 0;
    }