如何使用States创建游戏菜单

Gle*_*rse 5 c++ opengl glew freeglut

我一直在寻找一个如何制作游戏菜单的例子.例如,我想让应用程序打开菜单.从那里它将打开"玩游戏""显示积分""退出".

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

因此我寻找的答案是关于使用"状态",如暂停状态,游戏状态等等.但我无法弄清楚应该是这样的布局或应该如何使用..没有如何创建MenuState而无法找到一个示例任何地方

使用过剩和freeglew

Wil*_*ill 6

GUI实现

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

确切的实现将取决于您如何与键盘和鼠标(GLUT,SDL等)进行交互.

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

游戏国家

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

接口本身可以提供方法,以允许状态在其处于活动状态时以及何时"暂停"且类似时被通知.

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

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

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