C++ 如何创建具有状态的游戏菜单

C++ 如何创建具有状态的游戏菜单,c++,opengl,glew,freeglut,C++,Opengl,Glew,Freeglut,我一直在寻找一个如何制作游戏菜单的例子。例如,我想让应用程序打开菜单。从那里,它将打开“玩游戏”、“显示信用卡”或“退出” 到目前为止,我看到的都是弹出式菜单 所以我要寻找的答案是关于使用“状态”,如暂停状态、游戏状态等。。但是我不知道这个布局应该是什么,或者它应该如何使用。也不知道如何创建菜单自定义,也找不到任何地方的示例 使用glut和freeglew实现GUI 其基本思想是在相机前面创建一些有纹理的四边形,当用户点击屏幕时,将其转换为世界空间,并找出他们点击的是哪个四边形,以及相应的按钮。

我一直在寻找一个如何制作游戏菜单的例子。例如,我想让应用程序打开菜单。从那里,它将打开“玩游戏”、“显示信用卡”或“退出”

到目前为止,我看到的都是弹出式菜单

所以我要寻找的答案是关于使用“状态”,如暂停状态、游戏状态等。。但是我不知道这个布局应该是什么,或者它应该如何使用。也不知道如何创建菜单自定义,也找不到任何地方的示例

使用glut和freeglew实现GUI 其基本思想是在相机前面创建一些有纹理的四边形,当用户点击屏幕时,将其转换为世界空间,并找出他们点击的是哪个四边形,以及相应的按钮。你可能会发现,正交投影是解决这个问题的方法

具体实现将取决于您如何与键盘和鼠标交互(GLUT、SDL等)

您可能想考虑使用GUI框架,比如,或者类似,尽管这常常是一个复杂的任务。 游戏状态 游戏状态是从uesr通过游戏的过程中抽象出来的一种简单方法。它允许您将游戏的不同区域建模为DFA上的节点或使用堆栈。然后,您可以通过创建游戏状态对象从中继承的api来实现这一点。然后,您可以通过从该接口中删除类来实现不同类型的游戏状态

接口本身可以提供方法,允许在激活状态和“暂停”状态以及类似状态时通知状态

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

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


下面是一个简单游戏引擎的示例:<代码>游戏状态是游戏状态的基类。这些由
GameStateFactory
管理
SampleState
是一个示例游戏状态实现。

您是否询问如何使用opengl绘制文本?这里有一个函数你可以很好地使用是和否,我问,因为我听到很多关于使用“状态”,如暂停状态,游戏状态,等等。。但是我想不出这个应该是什么布局,或者应该如何使用。。在任何地方都找不到一个例子,你在问如何停止游戏界面,显示菜单,当菜单消失后,再次启动游戏界面?是的,这将是我使用GLUT的“状态”之一。但也许可以把问题弄清楚一点。。我会更新的你知道这方面的例子吗?是的,你的答案正是我所说的,它并不完美,但也许这可以帮助你:。看看GameState.h和GameState.cpp这似乎不是一个问题。。因为你的答案值得表扬。。。我想关闭它的人不知道是哪个州,所以他们投票决定关闭它。@GlenMorse没问题,很高兴我能帮忙:-)