如何使用States创建游戏菜单

时间:2013-03-02 11:30:08

标签: c++ opengl glew freeglut

我曾经并且一直在寻找一个关于如何制作游戏菜单的例子。例如,我想让应用程序打开菜单。从那里它将打开“玩游戏”“显示积分”“退出”。

到目前为止,我所看到的一切都是弹出菜单..

所以我寻找的答案是关于使用“状态”,如暂停状态,游戏状态等等。但是我无法弄清楚应该是这样的布局还是应该如何使用..而不是如何创建MenuState和无法在任何地方找到一个例子

使用过剩和freeglew

1 个答案:

答案 0 :(得分:6)

GUI实施

基本思想是在相机前面创建一些纹理四边形,当用户点击屏幕时将其转换为世界空间,找出哪个四边形,以及它们点击了哪个按钮。您可能会发现正投影是前往此处的方式。

具体实现取决于您如何与键盘和鼠标(GLUT,SDL等)进行交互。

您可能需要考虑使用CEGUIFLTK或类似的GUI框架,因为这通常是一项复杂的任务。

游戏州

游戏状态是从一个uesr通过游戏中抽象出来的一种简单方法。它允许您将游戏的不同区域建模为DFA上的节点或使用堆栈。然后,您可以通过创建GameState对象继承的api来实现此目的。然后,您可以通过从此界面中获取类来实现不同类型的游戏状态。

接口本身可以提供一些方法,允许状态在激活时以及“暂停”等状态时得到通知。

如果使用DFA管理状态,则有一个活动状态表示DFA的当前节点。然后状态可以根据游戏输入选择要进入的新状态(按菜单中的播放按钮等)。

如果您使用堆栈管理游戏状态,则会略有不同。首先,将菜单状态推入堆栈,然后在选择级别时,您也可以将其推入堆栈。当关卡结束时,状态从堆栈中弹出,用户返回主菜单状态。

这里有一个简单的游戏引擎示例:https://bitbucket.org/iwillspeak/thulium/srcGameState是游戏状态的基类。这些由GameStateFactory管理。 SampleState是一个示例游戏状态实现。

相关问题