如何创建带有状态的游戏菜单

How to create a Game Menu with States

本文关键字:状态 游戏 菜单 何创建 创建      更新时间:2023-10-16

我一直在寻找如何制作游戏菜单的例子。例如,我想有应用程序打开的菜单。从那里,它会打开"玩游戏"、"显示演职员表"answers"退出"。

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

所以我寻找的答案是关于使用"状态",如暂停状态,游戏状态等。但是我不知道它应该是什么布局,也不知道它应该如何使用,也不知道如何创建MenuState,也找不到一个例子

使用glut和freeglew

GUI实现

基本想法是在摄像头前创建一些纹理四边形,当用户点击屏幕时,将其转化为世界空间,并找出他们点击的是哪个四边形,从而找出他们点击的是哪个按钮。你可能会发现,正投影在这里是可行的。

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

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

游戏状态

游戏状态是一种从用户在游戏中的过程中抽象出来的简单方法。它允许你将游戏的不同区域建模为DFA上的节点或使用堆栈。然后你可以通过创建gameestate对象继承的api来实现这一点。然后你可以通过从这个接口派生类来实现不同类型的游戏状态。

接口本身可以提供方法,允许在激活或暂停状态等情况下通知状态。

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

如果你使用堆栈来管理游戏状态,那就有点不同了。首先你将菜单状态推入堆栈,然后当一个关卡被选中时,你也可以将其推入堆栈。当关卡结束时,状态从堆栈中弹出,用户返回到主菜单状态。

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