备考季的钟声已经敲到最紧要的关头------第十八届蓝桥杯青少组 STEMA 11 月省考报名今天(11/8)进入倒计时最后一天,11 月 9 日 16:00 正式截止、11 月 22 日开考(图形化组 90 分钟) ;中国电子学会 12 月图形化考级报名 9/23--12/2、统考 12/12--13;全国青少年信息素养大赛 2026---2027 赛季也正处在报名与基础能力评估窗口(复赛 2027 年 5--7 月、总决赛 7--8 月,5 大主题赛项覆盖图形化)。这三大标志性赛事的图形化考点高度重合,今天用一个原创项目「校园华容道大闯关」,把变量、列表、循环、条件、自制积木、广播六件套一次性串起来,一篇顶三篇备考。
注:华容道是经典滑块逻辑谜题,天然考察「二维网格 + 占用判定 + 状态机」,正是蓝桥杯图形化、信息素养大赛图形化方向、电子学会图形化考级共同偏爱的题型。
一、项目目标:校园华容道大闯关
背景设定:语文/历史老师想做一个课堂思维小游戏------棋盘上摆着「曹操(2×2 大方块)」和一群将领、士兵(不同尺寸的方块),底部中间留一个出口。玩家通过滑动方块,把曹操从棋盘上方挪到底部出口就算通关。这正好把「二维坐标、列表占用表、碰撞判定、状态切换」藏进图形化积木,是练手滑块逻辑题的绝佳项目。
项目目标 :
-
用 4 列 × 5 行的网格承载 10 个方块(1 个 2×2 曹操、1 个 2×1 关羽、4 个 1×2 竖将、4 个 1×1 兵);
-
点击选中一个方块,再朝四个方向推动一格;只有目标格全部为空且在棋盘内 才能移动;
-
每成功移动一步,步数 +1;曹操滑到底部出口(占据第 3--4 行、第 1--2 列)即广播「胜利」;
-
提供「重置」恢复初始布局,并提供最少步数参考体现关卡难度递增。
规则映射到考点 :棋盘占用用列表 存、坐标/步数/状态用变量 记、每帧重绘与遍历用循环 、越界/占用/胜利用条件 、移动/画盘/判定用自制积木 、选中/移动/胜利/重置用广播------六件套一个不少。
二、核心考点拆解(六件套全包)
| 考点 | 在本项目中的落点 |
|---|---|
| 变量 | 选中块编号 selected、步数 moves、游戏状态 state(等待/进行/胜利)、曹操目标坐标 |
| 列表 | 格子20 一维占用表:每个格子存占据它的方块编号(0 表示空);配合每个方块的私有变量 我的x/我的y/我的宽/我的高 |
| 循环 | 主循环「重复执行」每帧重绘棋盘;移动前「重复执行」遍历方块覆盖的所有格子做占用检查 |
| 条件 | 新位置是否越界?覆盖格是否被别的方块占?曹操是否到达出口?步数是否为 0?全部用「如果...否则」串起来 |
| 自制积木 | 画棋盘、尝试移动(编号,方向)、判定胜利、重置一局 封装复用,主脚本只负责「调度」 |
| 广播 | 点击只发「选中块 / 移动 / 重置」,方块角色监听后更新坐标;曹操到位广播「胜利」,播报员只听广播说话,逻辑与表现彻底分离 |
三、积木实现拆解(分步上手)
1. 棋盘与状态用「列表 + 私有变量」承载
新建列表 格子,长度 20(4 列 × 5 行,下标 = 行 × 4 + 列)。建关时把初始布局写进对应下标:
- 曹操 2×2 在左上角 (列1,行0),覆盖下标
(0,1)(1,0)(2,0)(3,0)即0*4+1=1, 0*4+2=2, 1*4+1=5, 1*4+2=6写入编号 1; - 4 个竖将(1×2)占据四角与两侧,关羽(2×1)横在中间一行;
- 末尾底部正中 (列1,行4)(列2,行4) 默认留空------这正是曹操最终要滑入的出口。
每个方块角色用私有变量 记自己的 我的x/我的y/我的宽/我的高,重绘时直接按这些数值用「图章 / 画笔」画出,无需每帧重算。
2. 移动逻辑:自制积木 尝试移动(编号, 方向)
这是全项目最核心的积木,思路与代码完全一致:
- 读取该方块的私有变量,按方向算出「新左上角坐标」
(nx, ny); - 越界判定 :
nx<0 或 ny<0 或 nx+宽>4 或 ny+高>5→ 直接判「此路不通」,不动; - 占用判定 :用「重复执行」遍历新位置覆盖的每个格子,只要有一个格子
格子[下标] ≠ 0 且 ≠ 自己的编号,就说明被别的方块挡住,不动; - 执行移动 :先把自己原来占的格子写回 0(清空),再把新位置所有格子写入选中编号,更新自己的
我的x/我的y,moves加 1; - 移动后调用
判定胜利。
💡 提分点:占用表
格子是「以空间换逻辑清晰」的经典做法,比每帧两两方块矩形相交判断更稳,蓝桥杯与电子学会考级都鼓励这种「列表表达二维状态」的写法。
3. 胜利判定:自制积木 判定胜利
曹操编号固定为 1。只要 曹操.我的x = 1 且 曹操.我的y = 3(即它占据了底部正中第 3--4 行、第 1--2 列,恰好压在出口上),就广播 胜利,状态切到「胜利」,弹出「恭喜通关,用了 X 步!」。
4. 重置与状态机
重置一局 把 格子 与所有方块私有变量恢复成初始布局、moves = 0、state = 进行中。所有按钮(选中、方向、重置)只负责广播,真正改数据的逻辑全部集中在方块角色与自制积木里------这就是「逻辑与表现分离」,比赛现场最不容易出 bug 的写法。
四、运行效果
- 开局呈现经典「横刀立马」布局:曹操居顶、四将分守、底部留两格出口;
- 点击方块高亮选中,按方向键(或点方向按钮)滑动;非法移动有「此路不通」轻提示,合法移动即时重绘并步数 +1;
- 当曹操顺利滑到底部出口,触发胜利动画与最少步数对比(经典横刀立马最少 81 步,可作为挑战目标);
- 一键重置回到初始局面,便于反复练习、刷最少步数。
五、进阶
1. 同构对照:Python 一步移动合法性判定
下面这段 Python 与图形化 尝试移动 自制积木逻辑同构,帮你把「列表占用表 + 越界/占用判定」从积木翻译成代码,反向加深理解:
python
ROWS, COLS = 5, 4 # 5 行 4 列
def can_move(board, pid, w, h, nx, ny):
"""判断编号 pid 的方块能否移动到左上角 (nx, ny)。
board: 长度 20 的一维占用表,0 表示空;w/h 为方块宽高。"""
# 1) 越界判定
if nx < 0 or ny < 0 or nx + w > COLS or ny + h > ROWS:
return False
# 2) 占用判定:遍历覆盖的每个格子
for r in range(ny, ny + h):
for c in range(nx, nx + w):
cell = r * COLS + c
if board[cell] != 0 and board[cell] != pid:
return False
return True
def do_move(board, pid, w, h, ox, oy, nx, ny):
"""执行移动:先清空旧位置,再填新位置。"""
for r in range(oy, oy + h):
for c in range(ox, ox + w):
board[r * COLS + c] = 0
for r in range(ny, ny + h):
for c in range(nx, nx + w):
board[r * COLS + c] = pid
2. 自动求解:BFS 状态搜索(信息素养/蓝桥杯拔高题)
把「每个方块的坐标」作为状态,用广度优先搜索(BFS)找出最少步数------这正是把滑块谜题升级成算法题的入口,蓝桥杯与信息素养大赛的「算法应用」方向都会青睐:
python
from collections import deque
def solve(start_occ):
"""start_occ: {方块编号: (x, y, w, h)}。曹操编号为 1,目标 (1, 3)。"""
goal = lambda occ: occ[1][0] == 1 and occ[1][1] == 3
q = deque([(start_occ, 0)])
seen = {tuple(sorted(start_occ.items()))}
while q:
occ, step = q.popleft()
if goal(occ):
return step
for pid, (x, y, w, h) in occ.items():
for dx, dy in ((1, 0), (-1, 0), (0, 1), (0, -1)):
nx, ny = x + dx, y + dy
board = build_board(occ)
if can_move(board, pid, w, h, nx, ny):
new = dict(occ); new[pid] = (nx, ny, w, h)
key = tuple(sorted(new.items()))
if key not in seen:
seen.add(key); q.append((new, step + 1))
return -1 # 无解
3. 考级 / 赛事提分点
- 电子学会图形化考级:熟练「列表表达二维网格」「克隆体私有变量」是二~三级必考;
- 蓝桥杯图形化组:现场常考「滑块/拼图类」题型,关键是把「移动合法性」拆成「越界 + 占用」两步条件;
- 信息素养大赛图形化方向:进阶可加「最少步数提示」「撤销上一步」「关卡编辑器(改初始布局)」,体现完整工程思维。
六、小结与互动
今天我们用「校园华容道大闯关」把图形化六件套跑了一遍:列表 记录棋盘占用、变量 追踪选中与步数、循环 遍历格子、条件 把关越界与碰撞、自制积木 封装移动与判定、广播解耦点击与表现。它同时覆盖了蓝桥杯图形化、信息素养大赛图形化、电子学会图形化考级三大赛事的共同考点,正值蓝桥杯 STEMA 11 月省考报名倒计时最后一天,赶紧照着搭一版练手吧!
互动时间:你能在几步内把曹操送到底部出口?经典「横刀立马」开局最少 81 步,欢迎在评论区晒出你的最少步数;如果想看我下一篇拆解「推箱子 / 拼图归位」类滑块题,也记得留言告诉我~
📚 免费少儿编程资料(夸克网盘领取)
以下资料来自夸克网盘分享,点击链接可直接保存;若需在 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
资料持续更新,关注获取最新分享。