我一直对我正在处理的程序的基本结构有疑问。我是一个非常缺乏经验的程序员,试图自学使用多种状态的程序的基础知识。
现在,我有一个非常简单的游戏式程序,它带有一个游戏循环,将事件、逻辑和渲染重定向到我的 StateManager 类,它将状态推送和弹出到 . StateManager 类然后将事件、逻辑和渲染重定向到向量的 back() 上的任何状态。这个想法是为程序的每个阶段(在这种情况下是一个简单的游戏,包括启动画面、菜单、游戏玩法、死亡画面等)提供各种不同的状态......
但是,我是一个非常新手的编码员(尽我所能去学习),而且我从第一个状态课程开始就遇到了我的程序的一个基本问题......
我制作的第一个类是 SplashScreenState。基本概念是有一个状态,基本上只显示一系列“启动屏幕图像”(例如,假设为 3),每次用户按下一个键,它切换到下一个图像,并且最后(当它没有启动画面图像循环时)切换到下一个状态(菜单状态)。
我的问题是我很难弄清楚如何构建它。最初,我错误地将每个不同的初始屏幕图像视为 SplashScreenState 的一个实例。但是,我认为这样做是不正确的,因为从技术上讲,所有 3 个启动画面都是同一个“状态”的一部分。
所以现在我有两个主要问题:
第一个问题是我不确定如何/在哪里存储所有启动画面图像。如果我想在程序启动时在 3 个不同的屏幕图像之间循环,我应该让它们都成为 SplashScreenState 类的成员吗?或者简单地为“currentImage”设置一个类成员是否更聪明,并且每次用户点击一个键时,它都会运行一个 load() 函数将下一张图像加载到 currentImage 指针中?制作图像数组或矢量并循环浏览它们会更好吗?我只是不确定...
我的第二个问题是 SplashScreenState 的 eventhandling() 。我知道我希望屏幕上的图像像这样改变;*image1 -> image 2 -> image 3 -> changeState(menuState).. 这样每次用户按下键盘上的一个键时,它就会切换到下一个启动画面,直到最后一个启动画面,然后它会改变状态到主菜单。我也不确定最好的方法是什么。我应该为每个初始屏幕创建一个枚举并通过它们递增(直到它改变状态的最终屏幕)?我还认为,如果我确实将所有各种屏幕存储在一个数组中,那么我可以轻松地递增它们,但是那会不会优化,因为所有屏幕都必须始终存储在内存中?
无论如何,我知道这个问题可能是非常基本和愚蠢的,但不幸的是,这就是我现在所处的位置!我没有接受过任何正规的编程教育,而且我一直在自学,所以我真的非常感谢这个网站上提供的所有帮助和专业知识!^^
谢谢!