C++/SDL 进阶游戏开发 —— 双人塔防游戏(代号:村庄保卫战 03)
C++、SDL
·
文章目录
五、GameManager游戏主体管理器实现
游戏主循环框架
5.1异常处理
在程序发生运行时的错误(注意:而不是编译期的错误),我们可以通过一些方式,将运行错误抛出,以便我们排查代码 bug
这些返回值,还是比较有用的,因为在初始化时,我们是需要知道哪些库初始化成功 or
失败了。因此,在我们的游戏开发中,我们是需要将这些情况进行考虑,以便我们处理异常代码
5.1.1定义运行时断言
一般来讲,程序是不会出现 SDL
、游戏窗口创建失败等库异常
的,但在出现这些问题后,及时的通过这些代码所抛出异常信息
,就可以很方便的使我们精确定位异常位置
初始化 SDL
初始化 IMG
,TTF
,MIX
库
错误纠正:
初始化音频库
5.1.2启用SDL - IME用户界面
5.1.3窗口与渲染器
创建运行窗口
创建渲染器
5.2游戏主循环
构造函数中:
5.2.1事件创建、拉取事件
错误纠正:
5.2.2主基调代码
也不要忘记返回值
5.2.3主函数
后续的主逻辑,基本上都在 GameManager
这个类中实现
5.3程序退出逻辑
析构函数中:
即使,我们不去写析构函数中的析构对象,程序运行结束后,也会自动关闭(或销毁)我们创建的这些资源库(或窗口、渲染器等)(整个线程进行结束,系统会回收这些运行程序资源),但我们养成这样的思维,每次资源申请完毕后,考虑其应在什么阶段去被释放,这是一个非常好的习惯。
在开发过程中,它可以避免掉很多类似 内存泄漏
等问题,一些资源的生命周期没有那么长,我们需要在程序内部把它释放掉 (eg:子弹销毁,或敌人死亡,我们就需要把其从游戏中移除掉,而不是当整个进程结束、整个游戏结束后,才将其消除)
所以,我们就需要养成这种习惯,对资源的释放时机多加观察(什么时候申请,以及什么时候释放,将来尽量 避免内存泄漏
这样的问题)
🌟 各位看官好,我是工藤新一¹呀~
🌈 愿各位心中所想,终有所致!
更多推荐
所有评论(0)