You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Simon游戏中实现Div高亮/透明度变更的问题求助

解决Simon游戏中元素亮起的问题

嘿,别怀疑自己的代码!你已经搞定了控制台输出和随机序列生成,这已经迈出了很大一步。元素亮起的问题其实核心就是给目标元素添加高亮样式,延迟后移除,不管是自动播放序列还是用户点击,逻辑都是相通的,咱们一步步来解决:

第一步:先搞定通用的「高亮函数」

首先写一个可复用的函数,用来让指定元素完成“亮起-恢复”的动画,这样不管是用户点击还是序列播放都能用:

// 通用高亮函数:接受元素选择器和动画完成后的回调
function flashColor(colorSelector, callback) {
  // 添加高亮类(需要你在CSS里定义这个类的样式)
  $(colorSelector).addClass('highlight');
  // 延迟300ms后移除高亮类,模拟亮起效果
  setTimeout(() => {
    $(colorSelector).removeClass('highlight');
    // 如果有回调,动画完成后执行(用于序列的依次播放)
    if (callback) callback();
  }, 300);
}

对应的CSS样式(必须要有,不然看不到效果):

/* 示例高亮样式,你可以根据自己的设计调整 */
.highlight {
  opacity: 0.7; /* 半透明效果 */
  box-shadow: 0 0 20px #fff; /* 白色发光效果 */
}

第二步:实现用户点击时的元素亮起

假设你的颜色div是类似这样的常规结构:

<div class="color-buttons">
  <div class="color red"></div>
  <div class="color blue"></div>
  <div class="color green"></div>
  <div class="color yellow"></div>
</div>

给每个颜色按钮绑定点击事件,调用高亮函数:

// 用户点击颜色按钮时触发高亮
$('.color').click(function() {
  // 获取当前点击的元素的颜色类名(比如red/blue)
  const clickedColor = $(this).attr('class').split(' ')[1];
  // 调用高亮函数
  flashColor(`.${clickedColor}`);
  // 这里可以添加记录用户选择的逻辑,比如push到userSequence数组
  // userSequence.push(clickedColor);
});

第三步:实现序列自动播放的依次亮起

你已经有了随机生成的gameSequence数组(比如['red', 'blue', 'green']),这里要注意不能用普通循环——循环会瞬间执行所有操作,看不到依次亮起的效果,得用递归或者队列的方式:

// 播放游戏序列的函数
function playSequence(sequence) {
  // 用递归逐个处理序列中的元素
  function playNext(index) {
    if (index >= sequence.length) {
      // 序列播放完成,可以开启用户输入
      return;
    }
    const color = sequence[index];
    // 高亮当前颜色,完成后递归处理下一个
    flashColor(`.${color}`, () => {
      playNext(index + 1);
    });
  }
  // 从第一个元素开始播放
  playNext(0);
}

// 调用示例:比如你的随机序列是gameSequence
// playSequence(gameSequence);

一些关键提醒

  • 确保你的颜色div有明确的类名或ID,这样jQuery能准确选中它们
  • 调整setTimeout的延迟时间(比如300ms),找到适合游戏节奏的速度
  • 如果序列播放还是有问题,检查gameSequence数组里的元素是否和你的div类名完全匹配(比如大小写、拼写)

别担心,你已经离完成不远了,先把高亮的逻辑跑通,再逐步整合其他功能就好!

内容的提问来源于stack exchange,提问作者Dee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:29:24