1

有没有人有一个好的 Java 状态管理器教程?在过去的几天里,我一直在研究这个问题,我遇到的任何事情似乎都不能以正确的方式来完成我需要它做的事情。我需要它能够接受用户输入,然后从标题状态切换到游戏状态。提前致谢。

4

2 回答 2

6

我会给你一些术语来寻找正确的方向:“有限状态机”。对于游戏菜单,FSM 就足够了。既然你知道了这个流行词,你应该能够通过谷歌搜索找出大量的例子。虽然基本思想很简单,但有很多不同的实现。请记住,这种用于游戏状态转换的系统不需要那么极端。

我个人见过各种各样的东西,从过度设计的多维状态转换到巨大的千行 switch 语句。

对于没有流式传输或疯狂游戏中断的基本游戏,您可能应该寻找一种不比这更复杂的面向对象方法:

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;
    }
}

从这样的事情开始,看看你是否可以为诸如暂停菜单弹出和弹出之类的东西添加过渡状态,或者在“MAINGAME_STATE”开始之前的介绍电影。

于 2012-01-21T00:39:43.793 回答
0

枚举是处理状态的方式。看看这个: http ://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

于 2012-01-21T03:18:23.383 回答