2026全国青科赛:校园五子棋人机对战解析

赛事锚点:全国青少年科技教育成果展示大赛(编程梦想家·图形化编程赛项)

题型:原创图形化项目题(五子棋人机对战)| 适配:图形化编程入门到进阶

引言

全国青少年科技教育成果展示大赛(简称"青科赛")由中国下一代教育基金会主办,是教育部公布的面向中小学生的全国性竞赛活动之一。其中的「编程梦想家」专项赛明确设有图形化编程赛项,评分以"步骤完整度 + 实际运行效果"为准,非常看重作品的趣味性、逻辑性与原创性。

今天我们就以一道贴合该赛项的原创图形化真题为例,拆解如何用图形化积木从零做出一个能人机对战的五子棋小游戏:玩家执黑先手,电脑执白自动落子,任意一方率先连成 5 子即获胜。下面从项目目标、核心考点、积木拆解到进阶挑战,一步步讲透。

一、项目目标(题目)

原创图形化项目 「校园五子棋人机对战」,要求实现:

  1. 采用 9×9(或进阶到 15×15)棋盘,交叉点为落子位;
  2. 玩家执黑先手,点击棋盘落子;电脑执白,按规则自动落子;
  3. 任意一方在横、竖、左斜、右斜四个方向率先连成 5 子即获胜;
  4. 棋盘下满仍无人连成 5 子,判平局;
  5. 提供「重新开始」按钮,可一键重置对局。

二、核心考点

考点 在本项目中的体现
列表 用一维列表 board(长度 81)记录 81 个交叉点的状态:0=空、1=黑、2=白
变量 current(当前落子方)、winner(胜负标志)、turn(回合数)、aiX/aiY(电脑候选落子点)
循环 遍历棋盘做五连判定;遍历候选点评估电脑落子得分
条件 落子合法性(必须是空位)、四方向连子计数、胜负与平局分支
自制积木 画棋盘、生成棋子(克隆体)、判五连、电脑落子、重置棋盘,每个动作封装成一个带参积木
广播 开始游戏 / 玩家落子 / 电脑落子 / 分出胜负 / 重开,解耦各个功能模块

三、解法拆解(积木 + 文字流程)

1. 数据建模

  • 建立列表 board,长度 81,全部初始化为 0
  • 新建克隆体角色「棋子」,给它两个私有变量myColor(1 黑 / 2 白)和 myIndex(所在交叉点序号 0~80)。
  • 交叉点序号换算:第 r 行第 c 列 → index = r * 9 + c

2. 玩家落子流程

当舞台被点击时:

  1. 用鼠标坐标计算出「最近的交叉点」对应的 index
  2. 条件判断 :如果 board[index] = 0(该点为空)才允许落子,否则忽略点击;
  3. board[index] 设为 1,生成一枚黑色棋子克隆体,广播 玩家落子
  4. 调用"判五连"积木,若黑方连成 5 子 → 广播 分出胜负winner = 1

3. 五连判定(重点)

思路:以刚落下的棋子为中心,向横、竖、主对角、副对角四个方向各延伸统计同色连续数,任一方向达到 5 即胜。下面给出对应的 Python 伪代码,逻辑可直接映射到图形化积木:

python 复制代码
# board: 长度 81 的一维列表,0空 1黑 2白
# 方向:横(1,0) 竖(0,1) 主对角(1,1) 副对角(1,-1)
DIRS = [(1, 0), (0, 1), (1, 1), (1, -1)]

def check_win(board, index, color):
    r, c = index // 9, index % 9
    for dr, dc in DIRS:
        cnt = 1                      # 含当前落子
        # 正方向延伸
        nr, nc = r + dr, c + dc
        while 0 <= nr < 9 and 0 <= nc < 9 and board[nr * 9 + nc] == color:
            cnt += 1
            nr += dr
            nc += dc
        # 反方向延伸
        nr, nc = r - dr, c - dc
        while 0 <= nr < 9 and 0 <= nc < 9 and board[nr * 9 + nc] == color:
            cnt += 1
            nr -= dr
            nc -= dc
        if cnt >= 5:
            return True
    return False

4. 电脑 AI(三档策略)

电脑落子不靠随机,而是按优先级决策,难度可随进阶逐步提升:

  1. 第一优先(进攻):遍历所有空位,若存在某点落白后能连成 5 → 直接落在该点;
  2. 第二优先(防守):遍历所有空位,若玩家在该点落黑后能连成 5 → 堵截该点;
  3. 第三优先( heuristic 评分):在已有棋子周围 8 邻域里,对每个候选空位打分------越靠近中心、相邻同色越多得分越高,选最高分点落子。

对应评分逻辑的 Python 伪代码:

python 复制代码
def ai_move(board):
    # 1) 自己能赢直接赢
    for i in empties(board):
        board[i] = 2
        if check_win(board, i, 2):
            return i
        board[i] = 0
    # 2) 否则堵玩家
    for i in empties(board):
        board[i] = 1
        if check_win(board, i, 1):
            board[i] = 0
            return i
        board[i] = 0
    # 3) 否则选评分最高的邻域点
    best, best_score = None, -1
    for i in neighbor_empties(board):
        s = score_point(board, i, 2)      # 中心权重 + 连子数
        if s > best_score:
            best, best_score = i, s
    return best

5. 重置对局

收到 重开 广播时:把 board 全部填回 0,删除舞台上所有「棋子」克隆体,把 current 设回玩家、winner 设回 0,回到黑方先手。

四、运行效果

  • 打开程序,棋盘居中显示,提示"轮到你(黑方)";
  • 玩家点击交叉点落下黑子,电脑几乎瞬间落下一枚白子;
  • 一旦任意一方连成 5 子,屏幕中央弹出"黑方获胜 / 白方获胜",并高亮获胜的五连;
  • 点击「重新开始」,棋盘清空,进入下一局;
  • 棋盘下满无五连时,提示"平局"。

五、进阶挑战

  1. 升级 AI:引入更完整的评分函数(活四 > 冲四 > 活三 > 活二),让电脑学会"既要进攻也要防守";
  2. 悔棋功能:用历史列表记录每一步落子,支持玩家回退一步再走;
  3. 模式切换:增加"人机对战 / 双人对战"开关,满足不同练习场景;
  4. 禁手规则:为黑方加入"禁三三、禁四四、禁长连"规则,更贴近正规比赛;
  5. 棋盘扩容:把 9×9 升级到 15×15,并优化棋子渲染与判定性能。

六、小结与互动

这道题把列表存状态、变量记局面、循环做判定、条件分支、自制积木封装、广播解耦六大图形化核心考点串成了一条完整的项目线,正好对应青科赛编程梦想家图形化赛项"看运行、看逻辑"的评分取向。建议同学们先在 9×9 小棋盘把流程跑通,再逐步加 AI 与进阶功能。

👉 你最喜欢用五子棋练哪一个考点?或者你还想看哪种图形化真题拆解(接水果、闯关、答题......)?欢迎在评论区留言,下一篇就写它!


本文为原创图形化项目解析,非真实赛题原文,仅供练习参考。


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

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

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

相关推荐
青少儿编程课堂5 天前
2026北斗杯电力巡检挑战赛:电网巡检车解析
scratch·少儿编程·图形化编程·创意编程·信息科技
青少儿编程课堂9 天前
2026杭州科学与工程大赛:校园雨水收集站解析
scratch·少儿编程·图形化编程·创意编程·信息科技
青少儿编程课堂10 天前
2026青岛创意编程大赛:海底寻宝大冒险解析
scratch·少儿编程·图形化编程·创意编程·信息科技
青少儿编程课堂11 天前
2026通信科技创新大赛:月球基地信号接力解析
scratch·少儿编程·图形化编程·创意编程·信息科技
青少儿编程课堂22 天前
用积木拼出一首歌:图形化编程搭一个会作曲的音乐编曲台
少儿编程·图形化编程·创意编程·音乐编程
码学堂1 个月前
图形化编程(Scratch OJ)自动测评
scratch·gesp图形化编程·图形化编程自动测评
qdprobot3 个月前
AIcam智能ESP32视觉摄像头体识万物
人工智能·esp32s3·图形化编程·mcp·mixly小智ai
李老师讲编程3 个月前
中国电子学会图形化2020.12月Scratch三级考级题
算法·scratch·信息学奥赛·图形化编程·scratch素材
星卯教育tony4 个月前
CIE中国电子学会2026年3月c++ Python scratch 机器人真题试卷含参考答案
c++·python·scratch·电子学会