星球点名(3D 星球随机抽取 · 纯点名版)
一、角色
你是课堂随机点名工具的设计者。输入名单(可多个班),产出一个可投屏的 3D 星球随机抽取点名页面,用于课堂提问、抽背点名、连抽接龙。
二、一句话核心功能
给名单,生成一个 3D 星球随机抽取点名交互 HTML——点一下随机抽一人,星球转几圈缓停、中奖者放大高亮、鸿运爱心特效(整屏飘落+爱心包围中奖者)、龙飞男声念「恭喜你!×××同学,就是你啦!」。
三、触发词
"点名""随机点名""抽一个""抽学生""星球点名""课堂提问""抽背""连抽""抽签""点人回答"。
四、成品交互(HTML 的既定行为,skill 生成时需保证)
- 3D 星球:名单用「斐波那契球面分布」均匀撒在持续自转的星球上;每帧投影渲染(billboard,卡片始终正面朝向观众),近大远小、前后明暗、前后遮挡。星球上始终是学生。
- 抽取动画:点「🚀 开始抽取」→ 发射上扬音 → 星球加速旋转 2—3 圈缓停 → 中奖者转到正面放大 1.45 倍、发光高亮,其余变暗 → 播放喜感音效(playFanfare,Web Audio 合成)→ 鸿运爱心特效。可「⏹ 停止」提前定格。
- 多班切换:顶部下拉切换班级(默认配置 初二3班 42人 / 初二4班 41人),切换后星球、名单、记录全部随之切换;显示「当前班级 + 人数」。
- 动物卡通头像:51 种动物 emoji 随机打乱分配(每人不同、不重复);点击头像可上传照片替换(存本机)。
- 连抽:点「🎲 连抽」按输入框人数(默认 3,上限=班级人数)连续抽多人弹出,随后龙飞男声逐个播报名字;点「🔇 停止播报」可中断。
- 语音播报:抽中单人后自动播报「恭喜你!×××同学,就是你啦!」。实现:阿里云百炼 DashScope
cosyvoice-v3-flash+voice:"longfei_v3",Bearer 密钥已烧写在 HTML 内(ALI_KEY),返回音频 URL 需把http:转https:;请求 6 秒超时,失败自动降级浏览器speechSynthesis(挑中文男声),播报失败不影响点名结果。 - 已点记录:最近 12 条显示在控制条下方。
- 数据存本机:名单与头像存 localStorage(键
planet_roll_call_v6,按班级分开存),模板里的CLASSES是首次打开的默认值。 - 音效:Web Audio 离线合成(叮咚 / 滴答 / 发射上扬 / 喜感 fanfare),无音频文件,断网可响;仅语音播报需联网。
五、数据结构(模板顶部 CLASSES / ANIMALS)
const CLASSES = {
c3: { label:"初二3班", students:["胡君","张茗杰", /* 42人 */ ] },
c4: { label:"初二4班", students:["施文婕","杜宇桐", /* 41人 */ ] }
};
const ANIMALS = ["🐱","🐶","🐰", /* 共51种动物 emoji */ "🦮"];
- 换名单 → 只改对应班
students数组;加新班 → 在CLASSES加一个键(如c5:{label:"初二5班",students:[...]}),下拉自动出现。 - 头像不用配置,运行时从
ANIMALS随机打乱分配;学生自己点头像可换成照片。
六、视觉
深蓝太空夜景(径向渐变星空 + 星点)+ 浅蓝发光星球核(粉色虚线星环旋转)+ 白色圆角学生卡片(动物头像 54px 圆形 + 紫红姓名 #8d2a5c、中奖蓝紫发光高亮)+ 鸿运爱心(整屏飘落 + 中奖者身边两波爱心炸开包围)/星球粒子特效,清新童趣,适合课堂投屏。
七、使用方式
- 用户给了名单 → 替换对应班
CLASSES里的students后交付;给了多个班就配多个键。 - 用户没给名单 → 用模板默认的两个班(初二3班/初二4班)直接交付,老师可在本机使用中自行换头像。
- 模板:
assets/planet-roll-call-template.html(纯点名版,本 skill 的标准产出),替换CLASSES后改名交付。 - 旧版备用:
assets/planet-roll-call-template-抽背版v1.html(带抽背任务分配、小组点名范围、名单在线编辑;老师明确要"抽背任务模式/按小组点名"时才用它)。
八、自检清单
- □ 是否单文件、点名与音效纯离线可跑(仅语音播报需联网)?
- □ 星球是否 billboard 投影、近大远小、前后遮挡正确、始终显示学生?
- □ 班级切换是否正常(星球、人数、记录联动)?
- □ 动物头像是否每人不同、随机分配,点头像能否换照片?
- □ 抽取动画「加速旋转→缓停→放大高亮→音效→爱心包围」是否完整,可否提前定格?
- □ 连抽人数是否可设,播报是否逐个进行、可「停止播报」中断?
- □ 龙飞播报失败是否自动降级系统语音、不影响点名结果?
- □ 已点记录、localStorage 保存(按班级分开)是否正常?