好的,我正在使用FLTK制作游戏。我有一个函数打印一个闪屏,它是我用按钮" Play"制作的Fl :: window的子类。和"规则"。当用户点击"规则"时,它会打印另一个Fl :: window子类,其中包含" Back"按钮和规则(显然)。我的问题是首先弄清楚当用户按下时如何显示原始启动画面。我知道我可以创建第二个相同的闪屏,当按下按钮时会弹出,但这意味着用户只能来自"规则"和"返回"一度。我希望它是一个循环,以便用户可以按"规则" - >"返回" - >"规则" - &gt ;"返回"和他/她一样多次。那有意义吗?有什么想法吗?
答案 0 :(得分:0)
通常每个gui都可以表示为嵌套状态机。如果您进入另一个屏幕(状态),则会销毁实际显示的窗口小部件或窗口并创建一个新窗口。如果有一个按钮,它会让您“返回”第一个状态,那么您只需执行相同操作:销毁实际的小部件或屏幕并再次创建第一个小部件或屏幕。很简单: - )
如果您进入SM的更深层次结构,则可以在已存在的高级状态上创建一个新窗口小部件。保留此子状态将删除此级别的所有小部件。更改子状态的级别只会破坏子状态的小部件,并在同一级别创建新的小部件。
在c ++中,使用类表示状态机非常容易。进入状态会创建一个类的实例,并让它破坏代表它的实例。
使用c ++ 11,您可以在联合上使用“new at”运算符,它“包含”您在应用程序级别中拥有的所有状态。工会保证,你已经预留了足够的内存,你根本不需要使用new / delete,这可能是没有MMU的小型系统的问题。我希望如果你使用fltk,你有一个小系统: - )
使用C ++ 03,你不能在联合中使用非平凡的类,所以c ++ 11在这里是一个真正的简化!
玩得开心!