基本的想法是在相机前面创建一些纹理四边形,当用户点击屏幕时将其转换为世界空间并找出哪个四边形,以及它们点击了哪个按钮.你可能会发现正交投影是这里的方式.
确切的实现将取决于您如何与键盘和鼠标(GLUT,SDL等)进行交互.
您可能需要考虑使用诸如CEGUI,FLTK或类似的GUI框架,因为这通常是一项复杂的任务.
游戏状态是从uesr通过游戏中抽象出来的简单方法.它允许您将游戏的不同区域建模为DFA上的节点或使用堆栈.然后,您可以通过创建GameState对象继承的api来实现此目的.然后,您可以通过从此界面中获取类来实现不同类型的游戏状态.
接口本身可以提供方法,以允许状态在其处于活动状态时以及何时"暂停"且类似时被通知.
如果使用DFA管理状态,则有一个活动状态表示DFA的当前节点.然后,状态可以根据游戏的输入选择要进入的新状态(按菜单中的播放按钮等).
如果您使用堆栈管理游戏状态,则会略有不同.首先,将菜单状态推入堆栈,然后在选择级别时,您也可以将其推入堆栈.当级别结束时,状态从堆栈弹出,用户返回主菜单状态.
这里有一个简单的游戏引擎示例:https://bitbucket.org/iwillspeak/thulium/src.GameState是游戏状态的基类.这些是由管理GameStateFactory.SampleState是一个示例游戏状态实现.