2014-02-19 38 views
0

我开始为使用Slick2D制作的简单游戏做一些菜单编程。我的菜单基本上是一个选项列表,选中时可以打开一个包含更多选项的子菜单。Slick2D:StateBasedGame并创建菜单

例如:

Main Menu 
--------- 
New Game 
Options 

选项是选择了以下菜单显示:

Options 
------- 
Video 
Audio 
Back 

我的问题是,我应该初始化一个不同BasicGameState针对每个子菜单,或是否有更好的方式来处理这个?

回答

1

基于状态的游戏非常严格地仅用于在启动画面,“新游戏”菜单(如主菜单)和游戏玩法之间进行分隔。超过3或4,意味着你肯定以低效的方式使用它们。

BasicGameState类应包含所有游戏代码,包括可用于该游戏状态的菜单交互内容。

如果你想按照你所描述的做一个菜单,你可以创建一个名为MenuBar的类,并用MenuItem类填充它,这些类中包含Item类。当在某个x边界处单击菜单栏时,该MenuItem可以将布尔转换为true,以显示它的子项目。如果鼠标在此之后不在界限内,则布尔值将会翻转为false并且不会绘制它的Item。

希望能让您朝着正确的方向前进。对于你想要在BasicGameStates中放置什么的选择非常有选择性(我还建议阅读Singleton的内容,因为这就是BasicGameStates:http://en.wikipedia.org/wiki/Singleton_pattern,因为在游戏中你应该只有一种独特的每种游戏状态类型。每个子菜单的单独游戏状态将非常低效且在slick2d库中使用起来很麻烦)