🐵指尖猴全新升级
第24课:抽奖小程序
🎰

抽奖小程序

项目四:转盘转起来

📖知识引入

🎲需求脑洞
输入候选人名单,点按钮随机出一个:课堂抽人回答问题、和爸妈决定谁洗碗、抽周末去哪玩——超实用!
🎲核心是随机数
Math.random()产生0到1的小数,乘以数组长度再向下取整,就得到一个随机下标——这就是抽奖的骰子。
🌀动画锦上添花
用CSS动画让名字快速滚动再慢慢停下,「开奖」感拉满。动画代码让AI写,你负责说「要越来越慢」。
🚫防重复策略
抽中的人从名单移除(不重复抽);或者标记「已抽中」置灰(可控重复)。两种策略,看场景选。
🎉你的第一个游戏
随机+动画+音效组合出游戏感——这一课做出来的是真正「好玩」的小程序,成就感爆棚!
💡
Math.random()是你的骰子:随机数×长度取整=随机选项!

🔍3行代码的抽奖核心

luckyDraw() {
  const names = ['小明','小红','小刚','小丽']
  // 随机取一个下标
  const i = Math.floor(Math.random() * names.length)
  this.setData({ winner: names[i] })
  wx.vibrateShort()  // 震动一下,更有感觉!
}

随机数是怎么抽人的:

Math.random() → 0.7331… × 4(人数) → 2.93… Math.floor 取整 → 2 names[2] → 小刚中奖!🎉

滚动动画思路:
启动:每50ms随机换名字
        ↓ 快!
刹车:间隔越来越慢
        ↓ 慢…
定格:显示最终赢家
(定时器+减速,让AI写)

用途脑洞: 课堂抽人回答问题 ✅ 和爸妈决定谁洗碗 ✅ 抽周末去哪玩 ✅ 组队随机分队 ✅

🎯小测验

第1题:从4个人的名单里随机抽1人,正确的下标计算是?

第2题:想让抽奖「不重复抽中同一个人」,应该?

第3题:wx.vibrateShort()能给抽奖加什么效果?

📝本课知识点

  • ✓Math.random()是抽奖骰子
  • ✓随机数×长度取整得下标
  • ✓动画+震动让开奖有感觉
  • ✓移除或标记可防重复
  • ✓随机+动画=游戏感
第24课完成!继续探索下一课吧 🚀