Java游戏状态管理

x3z*_*a12 1 java levels states screens

有人在Java中有一个很好的State Manager教程吗?在过去的几天里,我一直在研究这个问题,而且我遇到的任何事情似乎都没有以正确的方式运作,因为我需要它做什么.我需要它能够获取用户输入,然后从标题状态切换到游戏状态.提前致谢.

小智 6

我将通过给你一些行话来指出你正确的方向:"有限状态机".对于游戏菜单,FSM应该足够了.现在您已经知道了这个流行词,您可以通过Google搜索来找出大量的例子.虽然基本思想很简单,但有很多不同的实现.请记住,这种用于游戏状态转换的系统不需要那么极端.

我亲眼看到各种各样的东西,从过度设计的多维状态转换到巨大的千行开关声明.

对于没有流媒体或疯狂游戏中断的基本游戏,你应该寻找一种不比这更复杂的面向对象的方法:

public enum GameState {
    TITLE_STATE = 0,
    MAINGAME_STATE,
    PAUSE_STATE,
}

void GameStateUpdate() {
     // handle update
    switch(m_curState) {
       case TITLE_STATE:
          UpdateTitleScreen();
          if(UserPressesEnter()) {
              m_curState = MAINGAME_STATE;
          }
          break;
       case MAINGAME_STATE:
          UpdateMainGame();
          if(UserPressesPause()) {
              m_curState = PAUSE_STATE;
          }
          break;
       case PAUSE_STATE:
          UpdatePause();
          if(UserDoneWithPause()) {
              m_curState = MAINGAME_STATE;
          }
          break;
    }
}
Run Code Online (Sandbox Code Playgroud)

从这样的事情开始工作,看看你是否可以为"MAINGAME_STATE"开始之前的暂停菜单弹出或暂停菜单添加过渡状态.