2026蓝桥杯青少组图形化真题:校园飞机大战解析(全国青少年信息素养·电子学会图形化考级)

一、引言

蓝桥杯全国青少年智能科技创新实践活动(第十八届起由原"蓝桥杯青少组"升级更名,省级活动 2026 年 10---12 月进行中、全国级活动 2027 年 4 月举办,主题"星际拓荒纪元")的程序设计组别里,图形化(Scratch 方向)始终是最热门的赛道之一;与此同时,全国青少年信息素养大赛算法应用主题赛(图形化方向)、电子学会 2026 年 12 月软件编程等级考试(图形化科目,报名 9/23 已开启、12/13 开考)也都在密集备考期。

这三类标志性赛事的图形化考题,有一个共同偏好:把"列表 + 循环 + 条件 + 变量 + 自制积木 + 广播"六大核心考点,塞进一个能跑起来的小游戏里。本期带来一道原创图形化项目「校园飞机大战」,正好把上述考点串成完整闭环,适合用来练手与复盘。

二、项目目标(原创题)

玩家操控一架校园战机,用左右方向键移动,空格发射子弹消灭不断从顶部落下的敌机;子弹击中敌机得分,敌机撞到战机或越过底线则损失生命,生命耗尽游戏结束;限时内击落越多分数越高。

核心需求拆解:

  • 战机左右移动,并做左右边界判定;
  • 空格发射子弹(用克隆体实现,向上飞行);
  • 敌机持续从顶部生成并下落(每个克隆体用私有变量记速度与坐标);
  • 子弹与敌机做碰撞判定,命中即得分;
  • 敌机撞到战机、或敌机越过底线,扣减生命;
  • 60 秒倒计时,归零或生命耗尽触发结算;
  • 用广播把"发射 / 击落 / 被撞 / 结束"解耦,做到逻辑与表现分离。

三、核心考点

  1. 列表(Lists):登记场上敌机编号、得分记录等,便于遍历碰撞与统计;
  2. 循环(Loop):主循环实时刷新战机位置、生成敌机、检测碰撞;
  3. 条件(If):边界、碰撞、越线、游戏状态(进行中 / 结束)的判定;
  4. 变量(Variables):坐标、分数、生命、剩余时间、状态闸门;
  5. 自制积木(My Blocks):把"生成敌机 / 发射子弹 / 检测碰撞 / 结算"封装成带参数的积木,代码更清晰;
  6. 广播(Broadcast):开始游戏、击落敌机、被撞、游戏结束、结算,各模块只听广播办事。

四、积木拆解(解法)

1. 角色与数据结构

  • 战机角色 :用变量 x 控制左右,方向键改 x;
  • 敌机克隆体:私有变量「我的速度」「我的血量」「我的x」;
  • 子弹克隆体:私有变量「我的x」「我的y」;
  • 列表 敌机列表:记录场上敌机编号,用于碰撞遍历。

2. 主循环(战机控制 + 边界)

复制代码
当 ⚑ 被点击
  设置 [状态 v] = [进行中]
  重复执行:
    如果 <按下 [左移 v] 键?> 那么 将 x 改变 (-8)
    如果 <按下 [右移 v] 键?> 那么 将 x 改变 (8)
    如果 <(x) < (-220)> 那么 将 x 设为 (-220)   // 左边界
    如果 <(x) > (220)> 那么 将 x 设为 (220)     // 右边界
    如果 <按下 [空格 v] 键?> 那么 广播 [发射子弹 v] 并等待
  end

3. 敌机生成(自制积木,带参数)

复制代码
定义 生成敌机 (速度)
  创建 敌机 的克隆体
  // 以下在「敌机」角色「当作为克隆体启动时」执行:
  将 [我的速度 v] 设为 (速度)
  将 x 设为 (在 (-200) 到 (200) 间随机选一个数)
  将 y 设为 (180)
  重复执行:
    将 y 改变 (我的速度 * -1)              // 向下落
    如果 <(y) < (-160)> 那么
      广播 [敌机越线 v] 并等待
      删除此克隆体
    end
  end

4. 碰撞判定(自制积木,遍历敌机)

复制代码
定义 检测碰撞 (子弹x) (子弹y)
  重复执行 (敌机数量) 次:
    如果 <<(abs(子弹x - 敌机x)) < (30)> 且 <(abs(子弹y - 敌机y)) < (30)>> 那么
      广播 [击落敌机 v] 并等待
      将 [分数 v] 改变 (10)
      删除此克隆体
    end
  end

5. 广播解耦(逻辑与表现分离)

  • 广播 发射子弹 → 子弹角色收到后克隆自己、向上飞;
  • 广播 击落敌机 → 敌机角色播放爆炸特效、加分;
  • 广播 被撞 → 战机闪烁、生命 -1;
  • 广播 游戏结束 → 停止全部脚本、显示结算面板。

6. Python 逻辑对照(仅参考,正文中英文代码保留)

python 复制代码
import random

class PlaneGame:
    def __init__(self):
        self.enemies = []      # 敌机列表
        self.bullets = []      # 子弹列表
        self.score = 0
        self.lives = 3
        self.time_left = 60

    def spawn_enemy(self, speed):
        self.enemies.append({"x": random.randint(-200, 200),
                             "y": 180, "speed": speed})

    def hit(self, bx, by):
        """子弹 (bx,by) 与敌机矩形重叠则击落,返回是否命中"""
        for e in self.enemies:
            if abs(bx - e["x"]) < 30 and abs(by - e["y"]) < 30:
                self.score += 10
                self.enemies.remove(e)
                return True
        return False

# 每帧:敌机 y 减小模拟下落;越线 (y < -160) 则扣生命

这段代码与上面的图形化积木一一对应:列表对应 enemies,循环对应"重复执行",条件对应 abs(...) < 30 的矩形重叠判定。

五、进阶玩法

  • 多血敌机:敌机分 1/2/3 滴血,击中三次才击落,用变量「我的血量」递减;
  • Boss 关:每 30 秒出现一个横向移动的 Boss,需要集火同一目标;
  • 道具系统:随机掉落加速 / 护盾 / 双发,用列表登记道具类型与坐标;
  • 难度曲线:随时间缩短敌机生成间隔、提升下落速度,制造紧张感;
  • 双人对战:左右分屏两名玩家,比谁在限时内击落更多。

六、小结与互动

「校园飞机大战」把列表、循环、条件、变量、自制积木、广播六大图形化核心考点,收进一个能跑、能玩、能计分的小游戏里------这正是蓝桥杯青少组程序设计组、全国青少年信息素养大赛算法应用主题赛(图形化方向)、电子学会图形化考级反复考查的命题套路。建议先把主干(移动 + 发射 + 碰撞 + 结算)跑通,再逐个加进阶功能。

互动:上面五个进阶玩法里,你最想看哪一个的详细积木拆解?留言告诉我,下期出续篇。也欢迎说说你在蓝桥杯 / 信息素养 / 电子学会图形化考级备战中遇到的真题,我们一起拆解。


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

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

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

相关推荐
在世修行2 小时前
智学文枢:理科分析引擎
python·ai·pyside·理科教学
广州智造2 小时前
Radioss中破坏模型FAILTAB1的详细介绍
数据库·人工智能·算法·机器学习·仿真软件·radioss
开开心心就好2 小时前
证件照排版打印工具,免费可自定义尺寸
服务器·开发语言·算法·随机森林·pdf·音视频·散列表
lisw052 小时前
导数与机器学习优化!
算法·机器学习·数学建模
方知我2 小时前
01FastAPI基础入门
人工智能·python
CodeYp20192 小时前
第16讲:set 和 map 的使用
开发语言·c++·set·map
海绵宝宝转agent2 小时前
leetcodehot100个人题解
java·笔记·学习·算法
傲世仙尊2 小时前
vector起步与底层-三个指针迭代器失效与为模板升级内置类型
c++
DreamLife☼3 小时前
Agent与大语言模型的集成
windows·python·语言模型