前言
临近期末,课程结课压力也比较大,很长时间也没有更新,这里记录下软件设计模式结课作业的大项目,基于pygame实现的坦克大战,采用面向对象设计思想,单例模式,工厂模式,模板方法模式
一、功能需求说明
主要功能模块:
- 射击模块:实现基础射击,基于游戏难度更改敌军射速功能
- 难度模板:实现简单,基础,困难不同难度不同敌军射速,移速,数量
- 玩家模板:实现玩家坦克建模,玩家姓名修改功能
- 敌军模板:实现敌军建模,敌军不同血量功能
- 场景模板:实现场景建模功能
主要字段信息:
- 敌军信息:敌军移速,敌军射速,敌军血量
- 玩家信息:玩家姓名,玩家血量
- 关卡信息:关卡数,关卡基础架构设计
二、技术架构
- 采用面向对象设计思想、清晰简洁的代码逻辑设计,实现坦克大战的基本功能;
- 基于pygame框架实现,可移植性高,几乎能在任何平台和操作系统上运行,能够轻松使用多核CPU(multi core CPUs),在命令行中,就可以使用pygame的某些函数来处理图片,获取游戏杆输入,播放音乐;
- 采用单例模式的设计思想实现游戏管理与初始化,提供了对唯一实例的受控访问,由于在系统内存中只存在一个对象,因此可以节约系统资源,因为本游戏需要频繁创建和销毁的游戏内对象,单例模式无疑可以提高系统的性能;
- 采用模板方法模式的设计思想,利用模板方法将相同处理逻辑的代码(场景模块)放到抽象父类中,提高代码的复用性,将不同的代码不同的子类中,通过对子类的扩展增加新的行为,提高代码的扩展性,把不变的行为写在父类上,去除子类的重复代码,提供了一个很好的代码复用平台,符合开闭原则;
- 采用工厂模式的设计思想,在TankFactory和SceneElementFactory类中包含必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅“消费”产品,通过这种做法实现了对责任的分割,提供了专门的工厂类用于创建对象;