2026蓝桥杯·全国青少年信息素养大赛·电子学会图形化考级:校园井字棋人机对战解析

引言

第十八届蓝桥杯全国青少年智能科技创新实践活动(原蓝桥杯青少组 STEMA 升级更名)省级活动正在 2026 年 10---12 月火热进行,8 城省级测评定档 11 月 7 日---12 月 26 日,本届主题为《星际拓荒纪元》。程序设计组 Scratch 分初级、中级,线下现场 80 分钟完成 3 道编程题,总分 800 分,裁判按运行效果客观评分。

与此同时,全国青少年信息素养大赛(教育部白名单,中国电子学会主办)图形化方向考纲强调逻辑思维与交互设计;电子学会 2026 年 12 月图形化考级(报名 9/23--12/2、12/13 统考)三级也明确要求列表、自制积木与条件判断的综合运用。

现场命题往往只给一个开放主题,要求限时做出"可运行、有交互、有 AI 对手"的完整作品。今天这道原创模拟题------校园井字棋人机对战,一道题把列表、循环、条件、变量、自制积木、广播六大考点全部用上,还能自然引出"如何让电脑不输"的博弈思维,是省赛前绝佳的综合练兵。


一、题目与项目目标

背景:星际拓荒小队的两名队员在舱内用一块 3×3 触控屏下井字棋(tic-tac-toe)打发时间。你要做一台"不会输"的棋艺教练机。

功能需求 :

  • 棋盘 :画出 3×3 共 9 个格子,行号 1--3、列号 1--3;

  • 落子 :玩家点击空格落"×",电脑自动落"○";

  • 判定 :每次落子后判定胜 / 负 / 平局,并在舞台显示结果;

  • 智能 :电脑不能随便乱下,要尽量不败(进阶可做到"永不输");

  • 重开:一键清空棋盘再来一局。


二、核心考点

  1. 列表 :用 1 个一维列表 board(长度 9)记录 9 个格子的状态(0 空 / 1 玩家 / 2 电脑);
  2. 变量 :current(当前落子方)、winner(0 进行中 / 1 玩家胜 / 2 电脑胜 / 3 平局)、selected(选中的格子下标);
  3. 循环:遍历 9 格重绘棋盘、遍历 8 条连线判定胜负;
  4. 条件:判断格子是否为空、是否轮到玩家、是否三连;
  5. 自制积木:封装"画棋盘""判胜负""电脑落子""重置"等;
  6. 广播:按钮只发广播(如"玩家落子""电脑思考""游戏结束"),由"裁判"角色统一处理逻辑,实现表现与逻辑分离。

三、解法拆解

(一)数据设计

复制代码
board = [0,0,0,0,0,0,0,0,0]

下标 0--8 对应格子:

复制代码
0 1 2
3 4 5
6 7 8

点击第 r 行第 c 列的格子,下标 = (r-1)*3 + (c-1)。

(二)胜负判定(8 条连线)

  • 横:0-1-2、3-4-5、6-7-8
  • 竖:0-3-6、1-4-7、2-5-8
  • 斜:0-4-8、2-4-6

自制积木「判胜负」遍历这 8 组下标,若某组三格都等于同一非零值,则该方获胜;9 格全满且无胜者则为平局。

(三)电脑策略(让电脑不输)

初级版 按优先级落子:

  1. 自己能连三就落子取胜;

  2. 玩家能连三就堵截;

  3. 否则先占中心(4),再占角(0 / 2 / 6 / 8),最后占边。

这套"攻防 + 占位"规则在数学上能保证井字棋"至少不败",是蓝桥杯中级评分里非常加分的"策略可见效"。

(四)逻辑与表现分离

把"落子""判定""电脑思考"拆成广播事件:玩家角色只负责点哪格发广播,裁判角色听广播改 board、重绘、判胜负、决定电脑落子。这样代码清晰、易调试,也是电子学会考级三级"事件与广播"考点的标准练法。


四、运行效果

  • 玩家点空格,"×"出现,广播"玩家落子";
  • 裁判判空、判胜负,未结束则广播"电脑思考";
  • 电脑按攻防占位规则落"○",再判胜负;
  • 出现三连则高亮连线并显示"你赢了 / 电脑赢了",满盘无连则"平局";
  • 点"再来一局"广播"重置",board 清零重画。

五、进阶(把作品从"能玩"做到"难赢")

1. 完美 AI:用极小化极大(Minimax)算法让电脑在 3×3 井字棋上"永不败"。Python 参考如下:

python 复制代码
# 井字棋 Minimax 完美 AI(电脑执 2,玩家执 1)
WIN_LINES = [
    [0, 1, 2], [3, 4, 5], [6, 7, 8],
    [0, 3, 6], [1, 4, 7], [2, 5, 8],
    [0, 4, 8], [2, 4, 6]
]

def winner(board):
    for a, b, c in WIN_LINES:
        if board[a] and board[a] == board[b] == board[c]:
            return board[a]
    return 0 if 0 in board else 3  # 0=进行中, 3=平局

def minimax(board, turn):
    w = winner(board)
    if w == 2:
        return 1       # 电脑赢
    if w == 1:
        return -1      # 玩家赢
    if w == 3:
        return 0       # 平局
    best = -10 if turn == 2 else 10
    for i in range(9):
        if board[i] == 0:
            board[i] = turn
            val = minimax(board, 3 - turn)
            board[i] = 0
            best = max(best, val) if turn == 2 else min(best, val)
    return best

def best_move(board):
    move, best = -1, -10
    for i in range(9):
        if board[i] == 0:
            board[i] = 2
            val = minimax(board, 1)
            board[i] = 0
            if val > best:
                best, move = val, i
    return move

把这段思路平移到图形化:用一个"评估当前局面对电脑有多好"的自制积木替代函数调用,逐格试落、递归评估,就能让电脑做出最优解------这正是蓝桥杯"算法应用"与全国青少年信息素养大赛"计算思维"方向共同看重的点。

2. 难度档位 :初级 = 随机 / 占位,中级 = 一步攻防,高级 = Minimax 完美防守;

3. 扩展棋盘 :4×4 连四胜(连线判定改为 4 连,递归深度增加,体验分更高);

4. 双人对战 + 悔棋 :增加"当前局历史栈"支持撤销;

5. 跨设备联机 :用云变量把 board 同步到两台设备,做成真正的"异地对弈"。


六、小结与互动

校园井字棋人机对战用最少的元素覆盖了图形化编程全部核心考点,又顺带把"博弈树 / Minimax"这颗算法种子种了下去。无论你是备战第十八届蓝桥杯程序设计组 Scratch、冲刺全国青少年信息素养大赛图形化方向,还是打磨电子学会 12 月图形化考级三级,它都是一道值得反复练的母题。

你在井字棋里还想过什么有趣的玩法?是加"悔棋"、做"联机对战",还是挑战 4×4 连四?欢迎在评论区聊聊,也可以把你的作品链接发来一起交流~


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

以下资料来自夸克网盘分享,点击链接可直接保存;若需在 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

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

相关推荐
青少儿编程课堂11 天前
2026蓝桥杯青少组:校园飞鸟穿越赛解析
蓝桥杯·scratch·少儿编程·图形化编程·蓝桥杯青少组
青少儿编程课堂12 天前
2026信息素养大赛:校园智能图书管理员解析
scratch·少儿编程·图形化编程·信息素养大赛·创意编程
青少儿编程课堂14 天前
2026蓝桥杯青少组:校园防疫大作战解析
蓝桥杯·scratch·少儿编程·图形化编程·蓝桥杯青少组
青少儿编程课堂20 天前
2026山东创意编程德州赛:校园冰壶挑战赛解析
scratch·少儿编程·图形化编程·创意编程·信息科技
青少儿编程课堂24 天前
2026深圳罗湖大创客节:校园跳绳挑战赛解析
scratch·少儿编程·图形化编程·创意编程·信息科技
青少儿编程课堂25 天前
2026山东创意编程烟台赛:校园糖果三消解析
scratch·少儿编程·图形化编程·创意编程·信息科技
青少儿编程课堂1 个月前
2026温州市创意大赛:校园弹珠迷宫解析
scratch·少儿编程·图形化编程·创意编程·信息科技
青少儿编程课堂1 个月前
2026山东创意编程滨州赛:校园守塔防御战解析
scratch·少儿编程·图形化编程·创意编程·信息科技
青少儿编程课堂1 个月前
2026益阳青少年机器人赛:校园太空采矿车解析
scratch·少儿编程·图形化编程·创意编程·信息科技