2012-01-20 111 views
1

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

+1

你可能会有更多的运气[gamedev.stackexchange.com](http://gamedev.stackexchange.com/) – drew010

+0

是的。我已经在那里查过,但在java中并没有太多东西,并且特别说明了如何实现这一点。 – x3zinja12

回答

5

我会给你点正确的方向,给你一些行话来寻找:“有限状态机”。对于游戏菜单,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; 
    } 
} 

从这样的工作,看看是否可以添加过渡状态例如暂停菜单弹出或弹出,或在“MAINGAME_STATE”开始之前的介绍影片。