蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会Scratch考级:校园连连看解析

备考季正酣------第十八届蓝桥杯全国青少年智能科技创新实践活动(原蓝桥杯青少组)省级活动 2026 年 10---12 月正在全国铺开,8 座城市的省级线下测评已定档 11 月 7 日到 12 月 26 日,本届主题"星际拓荒纪元",程序设计组别中的图形化创意编程分初级(U10)与中级(U14),统一 90 分钟现场上机、个人独立完成;与此同时,中国电子学会 2026 年 12 月青少年软件编程(图形化)等级考试报名仍在进行(9/23---12/2 16:00,统考 12/13:一级 14:00--15:00、二/三/四级 8:30--10:00,全国测试 12/10 含图形化);全国青少年信息素养大赛 2026---2027 赛季也已进入报名与基础能力评估窗口,复赛 2027 年 5---7 月、总决赛 7---8 月,5 大主题赛项覆盖图形化。这三大标志性赛事的图形化考点高度重合,今天用一个原创项目「校园连连看」,把变量、列表、循环、条件、自制积木、广播六件套一次性串起来,一篇顶三篇备考。

一、题目与项目目标

项目主题:校园连连看(图形化配对消除游戏)

语文老师想做一个课堂记忆配对游戏:舞台铺满带图案的方块,玩家依次点两个"图案相同"的方块,只要它们之间的连线转折不超过 2 次、且中间经过的格子都是空的,就"连通"消除这一对;全部消除即过关。

玩法规则映射到考点:

  1. 棋盘用列表存每个格子的图案编号(0 表示已消除/空);
  2. 每个方块是一个克隆体,私有变量记"我的行/列/图案";
  3. 玩家点击触发选中,用变量记"选中格 1、选中格 2、选中数、分数、剩余对数、关卡、游戏状态";
  4. 循环驱动主循环逐帧重绘、扫描胜利;
  5. 条件判图案相同、能否连通、是否全部消除、是否误点自己;
  6. 自制积木封装"生成棋盘 / 能否连接 / 消除一对 / 判定胜利 / 重置一关";
  7. 广播解耦"开始 / 选中第一格 / 选中第二格 / 连接成功 / 连接失败 / 过关 / 重置"------逻辑与表现分离。

六件套一个不少,而且"能否连接"这个核心判定本身就是一道极好的赛场算法题。

二、核心考点拆解(六件套全包)

考点 在本项目中的落点
变量 选中行1/列1、选中行2/列2、选中数(0/1/2)、分数、剩余对数、关卡号、游戏状态(0等待/1进行/2结束)
列表 棋盘行×列 存图案编号(0 空);克隆体创建时按"我的行×列数+我的列"写入对应下标
循环 主循环"重复执行"逐帧遍历所有克隆体重绘;生成棋盘时遍历成对放置;胜利扫描遍历全盘
条件 图案相同?中间格子全空?拐弯≤2?点击的是自己?剩余对数=0 胜利?误点已消除格拦截
自制积木 生成棋盘(关卡)、能否连接(行1,列1,行2,列2)、消除一对、判定胜利、重置一关、画棋盘
广播 开始·选中第一格·选中第二格·连接成功·连接失败·过关·重置;按钮只广播,管理员算逻辑,播报员只说话

三、解法与积木拆解

3.1 数据模型

  • 列表 棋盘 :长度 = 行 × 列,每个元素是该格的图案编号,0 表示空(已消除)。下标换算:下标 = 我的行 × 列数 + 我的列。
  • 克隆体私有变量 :我的行 / 我的列 / 我的图案 / 是否存活(1/0)。每个克隆体"当绿旗被点击"时按自己的行列定位到舞台坐标,并显示对应图案造型。
  • 全局变量 :选中数(已经点了几块)、选中行1/列1/选中行2/列2、分数、剩余对数、关卡号、游戏状态。

3.2 生成棋盘(成对放置,保证可解)

关卡启动时,把"图案种类"成对地塞进一个清单,打乱后依次填进 棋盘 列表,再按清单逐格生成克隆体。成对放置 + 全盘可连通判定兜底,保证本局至少有解。

小技巧:生成后跑一遍"是否还有可消的一对",若无可消则原地重排,避免出现死局。

3.3 核心算法:能否连接(≤ 2 次转折)⭐

这是整个项目最值钱的部分,也是蓝桥杯 / 信息素养图形化复赛里常考的"路径搜索"思想。

规则 :两图案相同的方块,若能用一条"经过的格子全为空(已消除)或棋盘外"且"拐弯次数 ≤ 2"的折线连起来,即可消除。注意:路径允许绕到棋盘外圈(边界外视为可通行空格),所以两个贴边的方块可以直接在外围绕连。

判定三步法(适合积木实现,直观不易错):

  1. 0 转折(直连):起点与终点同行或同列,且中间所有格子全为 0 → 连通。
  2. 1 转折(L 形) :存在一个拐角格 c,c 必须为空,且"起点→c"与"c→终点"都是直线、中间全空 → 连通。
  3. 2 转折(Z / U 形) :从起点沿所在行、列向四个方向"射线"延伸到第一个非空格之前(得到一整条可走空线,射线允许越过棋盘边界),对射线上每个空格 e,检查"e 与终点能否 1 转折连通"(套用第 2 步);只要有一个 e 成立 → 连通。

自制积木 能否连接(行1,列1,行2,列2) 就按这三步依次判定,任一步成立即返回"真"。

3.4 选中与消除逻辑

  • 点击克隆体 → 广播"选中第 N 格",管理员收到后:
  • 选中数 = 0:记下第一格,选中数 置 1,高亮;
  • 选中数 = 1:记下第二格,选中数 置 2,先判"两格图案相同且不是同一格";
    • 相同且 能否连接 为真 → 广播"连接成功",把两格 棋盘 值置 0、克隆体隐藏、剩余对数 -1、分数 +10、连击 +1;
    • 否则 → 广播"连接失败",取消高亮、选中数 复位 0。
  • 防抖闸门 :选中数 = 2 期间忽略一切新点击,等本次判定结算完才允许下一轮,避免连点错乱。

3.5 胜利判定与重置

主循环每帧扫描:剩余对数 = 0 且 游戏状态 = 1 → 广播"过关",游戏状态 置 2,播报"全部消除,进入下一关"。重置一关 自制积木清盘、剩余对数 复位、重新 生成棋盘(关卡+1),难度随关卡提升(图案种类变多、行列变大)。

3.6 广播解耦(逻辑表现分离)

按钮 / 克隆体只负责"广播事件",真正的计算都在一个"游戏管理员"角色里完成,播报员角色只"听广播说话"。这样换皮肤、加音效、改文案都不会动核心逻辑------这正是三大赛事现场命题最看重的工程素养。

四、运行效果

  • 开场:棋盘铺满彩色图案方块,提示"点击两个相同图案,连线不超过两次转折即可消除";
  • 点第一块:高亮描边;点第二块:若可消,两块播放缩小/爆炸特效后消失,分数 +10,连击数跳动;
  • 若不可消:短暂抖动提示,自动取消选中;
  • 全部消除:撒花特效 + "过关"字幕,自动进入更难的一关;
  • 状态栏实时显示分数、剩余对数、当前关卡。

五、进阶(把项目做厚,赛场更稳)

  1. 提示功能:遍历所有"图案相同且可连通"的方块对,找到一对就高亮闪烁(Python 同构见下)。
  2. 死局重排:每次消除后检测是否还有可消对,无则自动打乱剩余方块,避免卡死。
  3. 计时挑战 :加 剩余时间 变量,限时内通关拿星;超时则结算本局成绩。
  4. 最短连通演示:在 Python 版里记录 BFS 父指针,回放出"最少转折"的连线,帮助孩子理解最优路径。
  5. 双人对战:左右分屏各一棋盘,比谁先清空,锻炼状态机与并发逻辑。

Python 同构对照(核心连通判定 BFS,带方向状态最稳):

python 复制代码
def can_link(board, r1, c1, r2, c2, rows, cols):
    """board[r][c]==0 表示空,否则存图案编号。允许越界(边界外视为空,可绕行)。"""
    def at(r, c):
        if 0 <= r < rows and 0 <= c < cols:
            return board[r][c]
        return 0  # 棋盘外视为可通行空格

    from collections import deque
    dirs = [(-1, 0), (1, 0), (0, -1), (0, 1)]   # 上 下 左 右
    INF = 99
    # dist[r][c][d] = 到达(r,c)且最后方向为 d 时的最小拐弯数
    dist = [[[INF] * 4 for _ in range(cols)] for _ in range(rows)]
    q = deque()
    for d, (dr, dc) in enumerate(dirs):
        nr, nc = r1 + dr, c1 + dc
        if (nr, nc) == (r2, c2):
            return True
        if at(nr, nc) == 0:           # 只有空格才能继续走
            dist[nr][nc][d] = 0
            q.append((nr, nc, d, 0))
    while q:
        r, c, d, turns = q.popleft()
        for nd, (dr, dc) in enumerate(dirs):
            nr, nc = r + dr, c + dc
            if (nr, nc) == (r2, c2):
                return True          # 到达终点即成功,拐弯数已 ≤2
            if at(nr, nc) != 0:
                continue             # 中间格必须为空
            nt = turns + (1 if nd != d else 0)
            if nt > 2:
                continue             # 超过两次转折,剪枝
            if nt < dist[nr][nc][nd]:
                dist[nr][nc][nd] = nt
                q.append((nr, nc, nd, nt))
    return False


def gen_board(rows, cols, kinds):
    """成对放置:凑够 rows*cols/2 对,打乱后填盘,保证可解。"""
    import random
    pair_count = (rows * cols) // 2
    bag = []
    while len(bag) < pair_count:
        k = random.randint(1, kinds)
        bag += [k, k]
    random.shuffle(bag)
    return [bag[i * cols:(i + 1) * cols] for i in range(rows)]


def has_move(board, rows, cols):
    """提示 / 死局检测:是否存在任意一对可连通的相同图案。"""
    cells = {}
    for r in range(rows):
        for c in range(cols):
            v = board[r][c]
            if v == 0:
                continue
            for (r2, c2) in cells.get(v, []):
                if can_link(board, r, c, r2, c2, rows, cols):
                    return True
            cells.setdefault(v, []).append((r, c))
    return False

把 can_link 的"状态 = 位置 + 方向 + 拐弯数"思路平移回图形化,就是 能否连接 自制积木里"射线 + 单转折"判定的算法内核------这就是典型的算法思维从文本编程向图形化迁移。

六、小结与互动

「校园连连看」用一个经典休闲玩法,把图形化六大考点(变量 / 列表 / 循环 / 条件 / 自制积木 / 广播)全部串起来,其中"≤2 转折连通判定"更是把路径搜索、状态剪枝这些算法思想自然带进图形化课堂,特别契合蓝桥杯青少组图形化、电子学会 Scratch 考级与全国青少年信息素养大赛的命题口味。

今日三赛锚点回顾 :

  • 第十八届蓝桥杯(原青少组)省级活动 2026 年 10---12 月,8 城线下测评 11/7--12/26,主题"星际拓荒纪元",图形化 90 分钟现场上机;

  • 中国电子学会 2026 年 12 月图形化考级报名 9/23--12/2 16:00,统考 12/13,全国测试 12/10;

  • 全国青少年信息素养大赛 2026---2027 赛季复赛 2027 年 5---7 月、总决赛 7---8 月。

互动时间:你打算把连连看做成几行几列?图案用汉字、数字还是自绘造型?最想加"提示""计时"还是"双人对战"?评论区告诉我,下一篇可以专门拆解你选的进阶方向。也欢迎说说你在备赛蓝桥杯 / 信息素养 / 电子学会考级时遇到的图形化难题,一起拆解。


📚 免费少儿编程资料(夸克网盘领取)

以下资料来自夸克网盘分享,点击链接可直接保存;若需在 App 内打开,也可复制下方明文链接:

  1. 全国青少年信息素养大赛复赛集训题目Python&C++.docx
    https://pan.quark.cn/s/93995d3cb150
  2. 2024信息素养-智能算法应用挑战赛-复赛初中组题目7月7日.pdf
    https://pan.quark.cn/s/da97b5dbf75d
  3. Python背记手册.pdf
    https://pan.quark.cn/s/7568ae9ca92b
  4. Python课程
    https://pan.quark.cn/s/a94bf02d00c6
  5. 2024信息素养大赛图形化复赛集训题答案3-9
    https://pan.quark.cn/s/6ccab7ec3cbc
  6. 2025年03月份电子学会考级真题
    https://pan.quark.cn/s/4403c4228912
  7. 2025全国青少年信息素养大赛赛项说明
    https://pan.quark.cn/s/d9d0df4a9f29
  8. 青少儿信息素养大赛编程资料
    https://pan.quark.cn/s/4ab6bd83be8a

资料持续更新,关注获取最新分享。

相关推荐
kongdong20 分钟前
Hikyuu | RSI均值回归交易策略实现
算法·均值算法·回归·量化交易·交易策略·hikyuu
用户03321266636734 分钟前
如何使用 Python 将 JSON 转换为 Excel
python·excel
小王C语言37 分钟前
优选算法:分治-归并排序
算法
小小张说故事38 分钟前
Python 的切片到底切了什么:拆开 slice 对象、负步长和 __getitem__
python
草莓熊Lotso39 分钟前
【C++ 基于微服务的即时通讯系统】文件存储子服务实战:UUID生成、文件IO封装与全接口单元测试
开发语言·网络·数据库·c++·微服务·架构·单元测试
非优秀程序员11 小时前
第05章 播放器大战,暴风、快播与那一夜|《互联网产品恩仇录》
算法
用户9562562542916 小时前
跟做:Firecrawl 单页转 Markdown 再丢进沙箱总结
python·api
威哥爱编程16 小时前
模拟面试智能体开发实战 02:回答等半分钟,谁还愿意练?把服务端和流式输出搭起来
python·agent·harmonyos