3D游戏编程与设计作业五

编写一个简单的鼠标打飞碟(Hit UFO)游戏

  • 游戏内容要求:
    1. 游戏有 n 个 round,每个 round 都包括10 次 trial;
    2. 每个 trial 的飞碟的色彩、大小、发射位置、速度、角度、同时出现的个数都可能不同。它们由该 round 的 ruler 控制;
    3. 每个 trial 的飞碟有随机性,总体难度随 round 上升;
    4. 鼠标点中得分,得分规则按色彩、大小、速度不同计算,规则可自由设定。
  • 游戏的要求:
    1. 使用带缓存的工厂模式管理不同飞碟的生产与回收,该工厂必须是场景单实例的!具体实现见参考资源 Singleton 模板类
    2. 近可能使用前面 MVC 结构实现人机交互与游戏模型分离
实践内容
  • 游戏思想
    为了减少开销,提升游戏的运行速度,采用工厂模式对飞碟进行管理,飞碟的生产与回收由工厂来执行,剩下的场景管理,动作管理和上次牧师与魔鬼相同。

  • 游戏预制

    一共四种预制在这里插入图片描述
    其中,爆炸效果的具体设置如下:
    在这里插入图片描述

  • 游戏构架

    UML图(盗用的)如下:
    在这里插入图片描述
    具体部分如下:在这里插入图片描述
    部分详解:
    1. 飞碟数据DiskData:这个方法通过一个变量给游戏对象附加数据属性(分数),将作为Component挂载到一个 disk 游戏对象。
    在这里插入图片描述
    2. 飞碟管理员DiskFactory:这个方法负责接收场记的请求(直接被场记调用),对 disk 游戏对象产生回收。这里运用了工厂模式,减少了游戏对象创建与销毁成本,减少创建和销毁次数,使程序易于扩展。
    在这里插入图片描述
    3. 记分员Scorekeeper:负责根据游戏对象的DiskData组件中的变量score进行分数的累加,分数被场景直接访问,提供清零方法。
    在这里插入图片描述
    4. 抛出动作FlyDisk:继承了动作基类SSAction,接收速度级别参数,实现抛出Disk动作。
    在这里插入图片描述
    这里实现了飞行速度和飞碟的发射频率的改变以及随机性和总体难度随 round 上升的实现,但比较遗憾的是未能实现得分随颜色变化的要求。
    5. 其他部分与上次牧师与魔鬼作业大致相似,这里就不多说了。

    代码传送门
    演示视频

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值