-
面向人群:
- 有一定JavaScript基础 难度:
- 中
重要说明
百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计。我们尽力保证课程内容的质量以及学习难度的合理性,但即使如此,真正决定课程效果的,还是你的每一次思考和实践。
课程多数题目的解决方案都不是唯一的,这和我们在实际工作中的情况也是一致的。因此,我们的要求不仅仅是实现设计稿的效果,更是要多去思考不同的解决方案,评估不同方案的优劣,然后使用在该场景下最优雅的方式去实现。那些最终没有被我们采纳的方案,同样也可以帮助我们学到很多知识。所以,我们列出的参考资料未必是实现需求所必须的。有的时候,实现题目的要求很简单,甚至参考资料里就有,但是背后的思考和亲手去实践却是任务最关键的一部分。在学习这些资料时,要多思考,多提问,多质疑。相信通过和小伙伴们的交流,能让你的学习事半功倍。
任务目的
- 熟悉 HTML5 技术在游戏开发领域的应用
- 学习游戏核心玩法的设计,并在此基础上合理地管理和添加功能
- 熟练使用 JavaScript 解决一般性的算法问题
- 掌握游戏性能优化的一些方法
- 为第四阶段的游戏任务做准备
任务描述
- 基于任务46
- 在活动区域内设置若干守卫(敌人):每个守卫都有一个以自己为圆心的圆形视觉范围,该视觉范围不可穿过墙壁
- 如下图,若特工落入某个守卫的视觉范围内,该守卫会向特工方向连续发射子弹,发射之间有较短的时间间隔
- 特工被守卫子弹击中,关卡以失败而结束
- 特工脱离某个守卫的视觉范围,该守卫会停止射击
- 特工也可以射击守卫,如图,玩家点击屏幕上任意一个守卫,若特工与该守卫之间没有墙的阻隔,特工会向该守卫方向发射子弹(而非移动至守卫处)
- 守卫被特工子弹击中,该守卫从区域中消失
- 子弹均不可穿墙
- 对于频繁创建和销毁的子弹对象,可选择合适的回收机制进行内存优化,比如对象池技术
任务注意事项
- 请注意代码风格的整齐、优雅
- 代码中含有必要的注释
- 可选择用 Canvas(推荐)或 DOM 或两者结合的方式实现
- 可以使用 HTML5 游戏引擎
- 能够适应不同分辨率的手机
- 保证游戏关卡是可通的
- 保证游戏在移动端的流畅性
- 为增强游戏可玩性,守卫的视觉范围可对玩家不可见
- 可以合理使用第三方框架、类库
任务协作建议
- 如果是各自工作,可以按以下方式:
- 团队集中讨论,明确题目要求,保证队伍各自对题目要求认知一致
- 各自完成任务实践
- 交叉互相Review其他人的代码,建议每个人至少看一个同组队友的代码
- 相互讨论,最后合成一份组内最佳代码进行提交
- 如果是分工工作(推荐),可以按以下模块切分
- 特工相关功能
- 守卫相关功能
- 碰撞检测
- 子弹回收机制
在线学习参考资料
- MDN Canvas
- HTML5 游戏引擎列表
- JavaScript Object Pool
- Galaxian Style HTML5 Game (该教程包含碰撞检测、回收机制等相关技术)