【问题标题】:How to create a Game Menu with States [closed]如何创建带有状态的游戏菜单 [关闭]
【发布时间】:2013-03-02 11:30:08
【问题描述】:

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

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

所以我正在寻找的答案是关于使用“状态”,如暂停状态、游戏状态等。但我无法弄清楚这应该是什么布局或应该如何使用它。也不知道如何创建 MenuState 和在任何地方都找不到示例

使用 glut 和 freeglew

【问题讨论】:

  • 您是在问如何使用 opengl 绘制文本吗?这是一个你可以使用的函数stackoverflow.com/questions/538661/…
  • 好吧,是也不是,我问是因为我听到很多关于使用“状态”的信息,例如暂停状态、游戏状态等。但我无法弄清楚这应该是什么布局或应该如何使用它.. 并且无法在任何地方找到示例
  • 你是问如何停止游戏界面,显示一个菜单,当菜单消失后,重新启动游戏界面?
  • 是的,这将是“状态”之一

标签: c++ opengl glew freeglut


【解决方案1】:

界面实现

基本思想是在摄像机前创建一些带纹理的四边形,当用户点击屏幕时,将其转换为世界空间,然后找出他们点击的是哪个四边形,从而确定了哪个按钮。您可能会发现正射投影是要走的路。

具体实现取决于您与键盘和鼠标的交互方式(GLUT、SDL 等)。

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

游戏状态

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

接口本身可以提供方法,允许在状态处于活动状态以及“暂停”等类似情况时通知状态。

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

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

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

【讨论】:

  • 我正在使用 GLUT。但也许让问题更清楚一点.. 生病更新
  • 你知道这方面的任何例子吗?但是是的,你的答案正是我在说的
  • 我并不完美,但也许这可以帮助你:bitbucket.org/iwillspeak/thulium/src。看看 GameState.h 和 GameState.cpp
  • 似乎这不是一个问题.. 很糟糕,因为你应该得到答案的功劳......我认为关闭它的人不知道什么状态,所以他们投票关闭它。跨度>
  • @GlenMorse 没问题,很高兴我能帮上忙 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-01
相关资源
最近更新 更多