我曾经并且一直在寻找有关如何制作游戏菜单的示例。例如,我想让应用程序打开菜单。从那里它会打开“玩游戏”“显示积分”“退出”。
到目前为止我所看到的一切都是弹出菜单..
因此,我正在寻找的答案是关于使用“状态”,例如暂停状态、游戏状态等。但我无法弄清楚这应该是什么布局或应该如何使用它。也不知道如何创建 MenuState 并且找不到任何地方的例子
使用 glut 和 freeglew
基本思想是在摄像机前创建一些带纹理的四边形,当用户点击屏幕时,将其转换为世界空间,并找出他们点击的是哪个四边形,以及点击了哪个按钮。您可能会发现正交投影是这里的方法。
确切的实现将取决于您如何与键盘和鼠标(GLUT、SDL 等)进行交互。
您可能需要考虑使用 GUI 框架,例如CEGUI、FLTK或类似的,尽管这通常是一项复杂的任务。
游戏状态是一种从用户通过游戏的过程中抽象出来的简单方法。它允许您将游戏的不同区域建模为 DFA 上的节点或使用堆栈。然后,您可以通过创建 GameState 对象继承的 api 来实现这一点。然后,您可以通过从该接口派生类来实现不同类型的游戏状态。
接口本身可以提供方法来允许在激活状态和“暂停”等类似情况时通知状态。
如果使用 DFA 管理状态,则有一个活动状态表示当前节点 DFA。然后状态可以根据对游戏的输入(单击菜单中的播放按钮等)选择要进入的新状态。
如果您使用堆栈管理游戏状态,情况会有所不同。首先,将菜单状态推到堆栈上,然后选择级别时,您也可以将其推入堆栈。当关卡结束时,状态从堆栈中弹出,用户返回主菜单状态。
一个简单的游戏引擎的例子在这里:https ://bitbucket.org/iwillspeak/thulium/src 。GameState
是游戏状态的基类。这些由GameStateFactory
. SampleState
是一个示例游戏状态实现。