返回

水果机小游戏制作要点,快来pick你的老虎机吧!

前端

老虎机,又称吃角子老虎,是一种以旋转滚轮来决定赢或输的游戏,通常是玩老虎机的游戏者投下硬币,然后旋转滚轮,滚轮停止后,依照各种图案组合是否符合预先设定的组合来决定输赢,是种赌博机器。根据界面设计的不同,老虎机可以分为古典老虎机、五轴老虎机、复合老虎机,不同种类的老虎机有不同的计算赔率方式。

那么自己如何制作一个老虎机呢?今天小编就来给大家介绍老虎机小游戏的一些实现要点,快来pick你的老虎机吧!

老虎机的整体外观样式还是比较好写的,对老虎机的外观布局如果有兴趣的话可以直接参考代码,小编就不一一介绍了。文章主要介绍的是老虎机中间三个小格子和机身动画的一些实现要点。(读者想实操的话也可以自己找一张背景图当作老虎机的背景,这里小编只是自己好奇而已所以就用各种基础布局和样式实现…)

现在我们就要做老虎机中间三个小格子的动画了,小编认为这是老虎机的核心部分。

首先我们先定义三个样式类来模拟老虎机的三个格子:

.slot-container {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;
}

.slot-item {
  width: 50px;
  height: 50px;
  margin: 0 10px;
  background-color: #fff;
  border: 1px solid #000;
  border-radius: 50%;
}

.slot-item-active {
  background-color: #f00;
}

接下来我们用 JavaScript 来模拟老虎机的转动动画:

const slotContainers = document.querySelectorAll('.slot-container');

const slotItems = document.querySelectorAll('.slot-item');

const startButton = document.getElementById('start-button');

let isSpinning = false;

startButton.addEventListener('click', () => {
  if (isSpinning) {
    return;
  }

  isSpinning = true;

  slotContainers.forEach((slotContainer) => {
    const slotItems = slotContainer.querySelectorAll('.slot-item');

    let index = 0;

    const interval = setInterval(() => {
      slotItems[index].classList.remove('slot-item-active');

      index++;

      if (index >= slotItems.length) {
        index = 0;
      }

      slotItems[index].classList.add('slot-item-active');
    }, 100);

    setTimeout(() => {
      clearInterval(interval);

      isSpinning = false;
    }, 3000);
  });
});

JavaScript 代码中,我们首先获取了老虎机中间三个小格子的容器元素 slotContainers 和小格子元素 slotItems

然后我们通过 addEventListener() 方法为开始按钮 startButton 添加点击事件监听器。

在点击事件处理函数中,我们首先判断老虎机是否正在转动。如果正在转动,则直接返回,防止重复点击。

然后我们通过 forEach() 方法遍历每个老虎机中间三个小格子的容器元素 slotContainer

forEach() 方法中,我们首先获取了当前容器元素中的小格子元素 slotItems

然后我们通过 setInterval() 方法创建了一个定时器,每隔 100 毫秒执行一次回调函数。

在回调函数中,我们首先将当前小格子元素 slotItems[index]slot-item-active 类名移除。

然后我们将 index 变量加 1。

如果 index 变量大于或等于小格子元素 slotItems 的长度,则将 index 变量重置为 0。

然后我们将 slotItems[index]slot-item-active 类名添加。

最后,我们通过 setTimeout() 方法在 3000 毫秒后清除定时器,并设置 isSpinning 变量为 false,表示老虎机停止转动。

这样,我们就实现了老虎机中间三个小格子的转动动画。