Java 游戏状态管理

标签 java states levels screens

<分区>

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

最佳答案

我会通过一些行话来为您指明正确的方向:“有限状态机”。对于游戏菜单,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”开始之前添加介绍电影。

关于Java 游戏状态管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8949417/

相关文章:

php - 带有国家代码的世界国家列表

listview - QML:如何在 ListView 中保存委托(delegate)的状态

c++ - 打印一般树级别

java - 缺少 Pivotal Tomcat Server Developer Edition v3.0-config

java - 如何在我的Web项目中看到web.xml被读取

java - 像处理单个实例一样处理实例数组

oop - 关于如何处理不同的 "states"的好教程是什么?

java - 在java中按层打印二叉树

ios - 当一个 Action 在 Xcode 的另一个屏幕上完成时如何改变按钮的状态?

java - 调试 i/o 流 : watching for change