《春日记》开发记录【3】

自己用Laravel写的小博客和CSDN的博客以后同步更新:
《春日记》开发记录【3】

层次模块化

为了不让代码最后变成大麻花,我们的一个重要工作就是解耦。
对于一个OO语言来说,我们可以用设计模式来解耦。
这里因为项目是比较简单的,所以为了提高效率,我只采用了层次化。
CPP因为不允许互相嵌套头文件,经常到导致互相引用比较困难。
这时层次化就显得更为重要了。

我们将程序的各个功能分割为若干模块,程序架构的每一层由若干个模块构成。
设计时我们对于模块只关心它的接口,即模块提供什么功能。
我自己的设计接口的方式是先想象上层的工作流。
就是当程序运行到上层模块时,我们需要依次让下层干什么。
比如,我们运行到一个场景中,就需要先从持久化模块读取数据,
然后通知绘图程序构建图元,然后再通知窗口绘制刷新。
这个时候我们就知道了持久化模块、绘图模块、窗口模块各自需要提供的功能。

架构模块的时候最好是画出架构图,然后列出各个模块的功能和接口。
这样做可以保证最后编码时我们只考虑当前模块,避免同时考虑太多导致思维混乱。

我的这个项目的架构图如下:

架构图

图中,Game向外提供整个游戏的运行接口。Scene类提供一个Scene接口,
所有继承该接口的类都可以被Game调用。不同的Scene提供不同功能,
有初始化Scene有brandScene等等。其下就是三个主要功能模块。
Audio负责读取并且解码音频,提供音频播放功能。
Frame负责创建回收窗口,并且绑定OpenGL上下文,提供鼠标输入功能。
Painter负责调用OpenGL绘制,读取TrueType字体即时构建字符纹理,
对上层提供基础图元Sprite。
Storage负责从加密文件中读取资源,并且负责解码TTF/PNG资源。
而Tween负责处理各种缓动动画。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值