返回

ES6让你的手写辨色小游戏,一展身手!

前端

前言
犹记几年前,辨色小游戏在朋友圈风靡一时,挑战者们需在限定时间内,找到与其他矩形颜色不同的那个。近日,突发奇想,决定亲自手写一款类似的游戏,话不多说,先奉上Demo。

项目源码

此游戏基于ES6实现,兼容IE9及以上版本。

项目结构

该项目主要以js实现游戏功能,在html和css中,以下文件值得注意:

  • index.html:主HTML文件,包含游戏的整体结构和逻辑。
  • style.css:样式表,定义了游戏元素的外观。
  • script.js:包含了游戏的主要逻辑和功能。

游戏实现

1. 准备工作

首先,我们需要一个画布来显示游戏元素,因此我们在HTML中加入如下代码:

<canvas id="canvas" width="600" height="400"></canvas>

接着,我们用js获取这个画布元素并获取其上下文:

const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");

2. 创建矩形数组

接下来,我们定义一个数组来存储矩形的对象,每个对象包含矩形的颜色、位置和尺寸。

const rects = [];

for (let i = 0; i < 25; i++) {
  const rect = {
    color: randomColor(),
    x: Math.random() * (canvas.width - 100) + 50,
    y: Math.random() * (canvas.height - 100) + 50,
    width: 100,
    height: 100,
  };

  rects.push(rect);
}

其中,randomColor()函数用于生成随机颜色。

3. 绘制矩形

现在,我们利用fillRect()方法,在画布上绘制矩形:

for (const rect of rects) {
  ctx.fillStyle = rect.color;
  ctx.fillRect(rect.x, rect.y, rect.width, rect.height);
}

4. 随机改变一个矩形颜色

为了增加游戏趣味性,我们需要随机改变某个矩形颜色,为此,我们用setInterval()函数每隔一段时间执行一次以下代码:

setInterval(() => {
  const randomRectIndex = Math.floor(Math.random() * rects.length);
  rects[randomRectIndex].color = randomColor();
}, 1000);

5. 捕捉点击事件

当用户点击画布时,我们要检查他们是否点击到了与其他矩形颜色不同的矩形,如果是,则显示“成功”字样,否则显示“失败”字样。

canvas.addEventListener("click", (event) => {
  const clickX = event.clientX - canvas.offsetLeft;
  const clickY = event.clientY - canvas.offsetTop;

  for (const rect of rects) {
    if (
      clickX >= rect.x &&
      clickX <= rect.x + rect.width &&
      clickY >= rect.y &&
      clickY <= rect.y + rect.height
    ) {
      if (rect.color !== targetColor) {
        alert("失败!");
      } else {
        alert("成功!");
      }

      break;
    }
  }
});

6. 游戏结束判断

为了让游戏更具挑战性,我们设置了时间限制,当时间耗尽时,游戏结束,此时会显示最终得分。

const timer = 60;
let remainingTime = timer;

setInterval(() => {
  remainingTime--;

  if (remainingTime <= 0) {
    clearInterval(intervalId);

    alert(`游戏结束,你的得分是:${score}`);
  }
}, 1000);

7. 游戏逻辑补充

为了让游戏更有趣,我们加入了以下逻辑:

  • 当用户成功找到不同颜色的矩形时,其颜色会变成绿色,并伴有音效反馈。
  • 当用户点击到错误的矩形时,其颜色会变成红色,并伴有音效反馈。
  • 当时间耗尽时,所有矩形都会消失,游戏结束。

总结

通过以上步骤,我们完成了辨色小游戏的编写。本项目不仅可以帮助您熟悉ES6的语法和特性,还能让您领略游戏开发的乐趣。如果您对游戏开发感兴趣,不妨亲自动手尝试一下。