又到了备赛季!第七届山东省青少年创意编程与智能设计大赛(烟台市赛)正在火热报名中,创意编程线上赛将于 10 月 18 日开赛。这次我们不讲算法,来做一个小朋友们都爱玩、又最能练逻辑的经典图形化项目------校园糖果三消。它把「列表存棋盘、克隆体渲染、循环驱动、条件判定、自制积木封装、广播解耦」六大图形化考点全部串了起来,是创意编程赛里非常吃香的原创作品方向。

以下为原创练习项目,不照搬任何真实赛题,仅按典型题型与考点设计,供备赛参考。
一、项目目标(题目)
设计一个「校园糖果三消」小游戏:
- 舞台是一个 8×8 的糖果棋盘,每格随机生成一种颜色的糖果(共 6 种颜色)。
- 玩家点击两颗相邻 的糖果进行交换;若交换后横排或竖排出现 3 个及以上同色,则消除并得分,上方糖果下落补齐、顶部补新糖。
- 每消除一组得 10 分,连锁(下落后再成三连)额外加连击分;限时 60 秒,时间到结算总分。
- 若全盘没有任何可消除的相邻交换,则自动重新洗牌,保证「有解可玩」。
二、核心考点
| 考点 | 在本项目中的体现 |
|---|---|
| 列表 | 用一维列表(长度 64)存整盘糖果的颜色编号;用「行×8+列」做下标映射。 |
| 循环 | 主循环每帧刷新倒计时;消除后遍历棋盘让糖果下落、遍历检测三连。 |
| 条件 | 判相邻、判三连、判边界越界、判计时归零、判是否还有可消除步。 |
| 变量 | 分数、连击、剩余秒数、选中行列、交换中标志、当前颜色等。 |
| 自制积木 | 封装「画棋盘 / 生成糖果 / 交换两颗 / 检测三连 / 消除并下落 / 重新洗牌 / 重置」。 |
| 广播 | 解耦「开始 / 选中第一颗 / 选中第二颗 / 三连消除 / 无可行重排 / 时间到 / 重置」。 |
三、积木拆解与实现思路
3.1 数据模型:列表存棋盘
建一个列表 棋盘,初始 64 项,每项用 1~6 的随机数代表颜色。所有坐标换算统一为:
下标 = 行 × 8 + 列
点击舞台时,用「鼠标所在 x/y 除以格子大小」反推出行、列,再算出列表下标,这样列表和画面就一一对应。
3.2 画面绘制:克隆体 + 自制积木
用一个「糖果」角色,配合 当作为克隆体启动时 根据 棋盘[我的下标] 切换造型(6 种颜色造型)。自制积木 画棋盘 负责:
- 依次遍历 0~63,对每个下标「创建克隆体」;
- 克隆体读出自己对应的行、列,移动到对应坐标;
- 根据列表里的颜色编号切换造型。
关键点:棋盘数据只在列表里改,画面永远由列表重绘,避免「画面和逻辑对不上」的经典 bug。
3.3 主循环:下落与刷新
消除后,被消位置变空(记为 0),需要让上方糖果「掉下来」:
重复 执行 (从底行往上):
如果 本格 == 0:
从上方逐格把糖果往下搬一格
顶部空位 用 新的随机颜色 补齐
这一步用「列内从下往上扫描」的循环实现,是整个项目里循环用得最巧的地方。
3.4 判定逻辑:条件分支
交换两颗后,调用 检测三连:对每一格,向右看连续同色是否 ≥3、向下看连续同色是否 ≥3。只要有一处成立就算「可消除」。
- 能消除 → 进入消除下落流程,分数 +10 × 连击,
连击自增; - 不能消除 → 把两颗换回去,提示「这步不行哦」。
3.5 解耦:广播
把「玩家操作」和「游戏逻辑」分开,避免一个脚本越写越乱:
- 点第一颗 → 广播
选中第一颗(记下行列); - 点第二颗 → 广播
选中第二颗(判相邻,相邻才交换); - 交换后 → 广播
三连消除/无可行重排; - 计时器归零 → 广播
时间到,停止一切交互,弹出结算。

四、运行效果
- 开局:8×8 彩色糖果棋盘铺满,右上角显示倒计时 60 秒、当前分数 0。
- 交互:点两颗相邻糖果,能消的「啪」地消失、上方掉落补位、分数跳动;不能消的自动换回。
- 连锁:一次交换若引发连续三连,连击数累加,分数滚雪球上涨,成就感拉满。
- 结算:时间到弹出「本次得分 XX,连锁最高 X 连」,点按钮可一键
重置重开。
五、进阶:三消检测算法(Python 思路)
图形化里「检测三连」是核心,下面给出等价的 Python 思路,方便你理解判定逻辑、也方便转成其他语言:
python
def find_matches(board, rows=8, cols=8):
"""返回需要消除的下标集合(横/竖连续 >=3 同色)"""
to_clear = set()
# 横向检测
for r in range(rows):
run_start = 0
for c in range(1, cols + 1):
same = c < cols and board[r * cols + c] == board[r * cols + run_start] and board[r * cols + c] != 0
if not same:
if c - run_start >= 3:
for k in range(run_start, c):
to_clear.add(r * cols + k)
run_start = c
# 纵向检测
for c in range(cols):
run_start = 0
for r in range(1, rows + 1):
same = r < rows and board[r * cols + c] == board[run_start * cols + c] and board[r * cols + c] != 0
if not same:
if r - run_start >= 3:
for k in range(run_start, r):
to_clear.add(k * cols + c)
run_start = r
return to_clear
# 调用:matches = find_matches(棋盘);若 matches 非空则可消除
进阶可以再加:① 预判「全盘是否还有可消除步」,没有就自动洗牌;② 特殊糖果(四连生成「爆炸糖」、五连生成「同色清屏糖」);③ 关卡模式:限定步数内冲目标分。
六、小结与互动
「校园糖果三消」把图形化六大考点揉进一个完整可玩的作品里,逻辑清晰、画面直观、最容易在创意编程赛里拿高分。备赛烟台市赛的同学,建议先把「列表↔坐标映射」和「下落补齐」这两块练熟,再往上加连锁和特殊糖。
你打算给自己的三消加什么新玩法?是限时冲分、还是关卡闯关?欢迎在评论区聊聊你的创意,关注我,下篇带你拆解更多少儿编程比赛原创项目!
📚 免费少儿编程资料(夸克网盘领取)
以下资料来自夸克网盘分享,点击链接可直接保存;若需在 App 内打开,也可复制下方明文链接:
- 全国青少年信息素养大赛复赛集训题目Python&C++.docx
https://pan.quark.cn/s/93995d3cb150 - 2024信息素养-智能算法应用挑战赛-复赛初中组题目7月7日.pdf
https://pan.quark.cn/s/da97b5dbf75d - Python背记手册.pdf
https://pan.quark.cn/s/7568ae9ca92b - Python课程
https://pan.quark.cn/s/a94bf02d00c6 - 2024信息素养大赛图形化复赛集训题答案3-9
https://pan.quark.cn/s/6ccab7ec3cbc - 2025年03月份电子学会考级真题
https://pan.quark.cn/s/4403c4228912 - 2025全国青少年信息素养大赛赛项说明
https://pan.quark.cn/s/d9d0df4a9f29 - 青少儿信息素养大赛编程资料
https://pan.quark.cn/s/4ab6bd83be8a
资料持续更新,关注获取最新分享。