TS项目练习:贪吃蛇小游戏(三)
TS
项目练习:贪吃蛇小游戏(三)
- 现在正式开始
ts
代码的编写,基本上全部的编码流程都是通过类
来践行面向对象
编程思想
1. 食物类(food
)
- 在设计
类
之前,我们首先要了解一下这个类
到底有哪些属性
和方法
,食物的属性有:- 1. 自己本身的元素(它必须要有一个属性是指向自身的
div
的)
- 1. 自己本身的元素(它必须要有一个属性是指向自身的
- 食物的方法(功能)有那些?
- 食物被吃:判断蛇与食物的位置重合,因此我们需要一个方法来获取食物的
x
和y
坐标 - 食物的被吃后需要随机生成新的位置,这里同时规定蛇每移动一次就是
10px
,结合下来就是食物必须也是10的整数位置
- 食物被吃:判断蛇与食物的位置重合,因此我们需要一个方法来获取食物的
代码展示:
// 1. 定义食物的类(比较简单) |
结果展示
2. 计分板类(score-panel
)
- 属性:
- 分数: 记录分数,默认值0
- 等级: 记录等级,默认值1
- 获取要修改分数的
span
标签 - 获取要修改等级的
span
标签
- 方法
- 分数加分方法(每一次吃到食物,分数+1)
- 升级条件判断
- 等级加分方法
- 等级存在上限,例如10级
- 等级越高,蛇的移速越快
- 分数加分方法(每一次吃到食物,分数+1)
代码展示:
// 2.计分板类(比较简单) |
3. 蛇类(snake
)
属性:
- 获取蛇元素的属性
- 蛇头(用于指向移动位置)
- 蛇身
方法:
- 获取蛇头的坐标
- 设置蛇头坐标
- 增加蛇身
- 蛇身移动方法(遍历获取身体,让后一节身体等于前一节身体的坐标)
- 判断蛇头是否撞到蛇身上(遍历身体获取所有坐标后逐一判断即可)
代码展示:
class Snake{ |
4. 游戏控制类(gamecontrol
)
这个类用来控制游戏规则以及联合其他类实现联动
属性:
- 食物类引入游戏规则中
- 记分牌类引入游戏规则中
- 蛇类引入游戏规则中
- 蛇的移动方向
- 记录游戏是否结束标志位
方法:
- 游戏初始化方法:绑定键盘按键(获取当前移动方法)
- 蛇的移动:根据点击的键盘方向移动
- 设置
switch
分支通过判断键盘方向修改坐标值 - 检查蛇是否吃到食物:吃到食物,食物重置,蛇身+1,分数+1
- 开启定时器来实现蛇的自动移动并设置随着等级的提升而减少定时器的时间间隔
- 根据
蛇类
判断游戏是否结束
// 引入其他的类 |
最后执行打包命令即可生成浏览器可运行的文件
npm run build |
游戏成品展示
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0许可协议。转载请注明来自 肥林の仓库