加入计分模块

新建 score.ts 文件

import { cvs_one, ctx_one } from "./init";


export default class Socre {
  fruitNum = 0;  // 吃到果实的数量
  doubleMode = 1; // 是否开启双倍模式
  total = 0;
  constructor() {}

  // 进行一轮计分,回到初始状态
  reset(){
    this.total += this.fruitNum * 10 * this.doubleMode;
    this.fruitNum = 0;
    this.doubleMode = 1;
  }

  // 渲染分数到界面上面去
  draw(){
    const w = cvs_one.width;
    const h = cvs_one.height;
    ctx_one.save()
    ctx_one.fillStyle ='white' // 设置画笔颜色
    ctx_one.textAlign = 'center' // 设置对齐方式
    ctx_one.fillText(this.total.toString() , w * .5, h - 50)
    ctx_one.fillText(this.fruitNum.toString(), w * .5, h - 80)
    ctx_one.restore()
  }
}

并在 init.ts 中通过 new 初始化它,并导出。因为我们需要在 game-loop 里面使用它。具体代码我就不写了,因为太简单了,没必要又复制一个文件代码过来,实在不知道看完整源码吧。

在 game-loop.ts 里面添加计分逻辑

因为需要判断果实类型,所以需要从 fruits.ts 里面拿到枚举,当大鱼没有吃到果实的时候,与小鱼碰撞不会生效。

Last updated