第七届山东省青少年创意编程与智能设计大赛(滨州市赛)正在报名中,创意编程项目线上赛定于 10 月 18 日开赛,图形化编程是其中面向小学生的核心赛项之一。这类赛题越来越喜欢考查「能跑起来的小游戏」------既要逻辑完整,又要看得见效果。
今天我们用一个原创图形化项目 校园守塔防御战 来拆解这类题的通用套路:如何用列表、循环、条件、变量、自制积木和广播,搭出一个结构清晰、可扩展的塔防小游戏。无论你参加的是滨州赛、还是其他省市的图形化创意编程赛,这篇拆解都能直接套用。

一、项目目标(题目)
校园守塔防御战:校园里出现了成群的「捣蛋气球」,沿着固定路线冲向教学楼(基地)。玩家在空地上建造防御塔,塔会自动朝最近的敌人发射「水弹」,击中后敌人扣血、被消灭后获得金币;敌人抵达基地则扣生命值。守住基地、撑过若干波,即获胜。
这个题目把图形化编程的核心考点几乎一网打尽,又足够有趣,非常适合作为赛前练习作品。
验收标准(评分要点):
-
敌人沿预设路径点连续移动,不瞬移、不穿墙;
-
建塔消耗金币,金币来自击杀敌人;
-
子弹自动追踪、命中判定准确;
-
波次推进、胜负判定明确;
-
变量、列表、广播分工清晰,便于讲解。
二、核心考点
| 考点 | 在本项目中的作用 |
|---|---|
| 变量 | 金币、基地生命、当前波次、选中的塔类型、分数 等全局状态 |
| 列表 | ① 路径点坐标表(每个点存 x、y);② 敌人属性表(生命、速度、当前路径索引);③ 已建塔列表 |
| 循环 | 重复执行 驱动敌人沿路径前进、子弹飞行、波次计时 |
| 条件 | 判敌人到终点扣血、判敌人生命≤0 消失加金币、判金币够不够建塔、判波次结束 |
| 克隆体 + 私有变量 | 每个敌人和每颗子弹都是克隆体,用「仅适用于当前角色的变量」记自己的坐标、速度、血量 |
| 自制积木(带参数) | 封装「画地图」「生成敌人」「发射水弹」「敌人受击」「过关庆祝」「重置一局」,参数传坐标/数值 |
| 广播 | 解耦各模块:开始、生成敌人、建塔、敌人到达、敌人阵亡、波次完成、游戏结束、重置 |
小提示:图形化赛项最忌「所有逻辑堆在绿旗下」。用广播把「生成---移动---攻击---判定」拆成松耦合的模块,评委一眼就能看出你的工程素养。
三、解法与积木拆解
1. 数据建模(列表 + 变量)
- 建一个二维列表
路径点,每行存一对坐标,例如120,80、260,80、260,200......代表敌人要经过的拐点。敌人只需「朝当前目标点走,到了就切换到下一个点」。 - 全局变量:
金币=100、基地生命=10、波次=1、选中塔=1、分数=0。 - 每个敌人克隆体有私有变量 :
我的生命=30、我的速度=2、我的路径索引=1、我的x、我的y。
2. 敌人移动(循环 + 条件 + 私有变量)
敌人克隆体的主逻辑:
当作为克隆体启动时:
将「我的路径索引」设为 1
重复执行:
将「我的目标点」设为 路径点 的第 (我的路径索引) 项
面向 (我的目标点) 方向移动 (我的速度) 步
如果 <距离 (我的目标点) < 5>:
将「我的路径索引」增加 1
如果 <我的路径索引 > 路径点 的行数>:
广播 (敌人到达)
删除此克隆体
这样敌人永远沿着折线匀速前进,到终点触发「敌人到达」广播,由基地模块统一扣血。
3. 建塔与攻击(变量 + 条件 + 自制积木)
点击空地建塔:
当角色被点击:
如果 <金币 >= 50>:
将 (金币) 增加 (-50)
广播 (建塔 并带上 本角色 x、y)
否则:
说「金币不足」2 秒
防御塔收到「建塔」广播后,用带参数自制积木 发射水弹 (目标x) (目标y) 朝最近敌人持续生成子弹克隆体;子弹克隆体用私有变量记自己坐标,每帧朝目标飞,命中(距离<阈值)就广播 敌人受击 并带 敌人编号。
4. 广播解耦(关键架构)
把所有「副作用」收到广播监听里,主循环只负责推进,互不耦合:
敌人到达→ 基地模块:将 基地生命 增加 -1;若基地生命 <= 0广播游戏结束。敌人阵亡→ 结算模块:将 金币 增加 10、将 分数 增加 1;删除该敌人克隆体。波次完成→ 波次模块:将 波次 增加 1、延时后广播下一波生成敌人。游戏结束/过关→ 统一跳到重置自制积木清场。

四、运行效果
- 开局基地生命 10、金币 100,第一波 5 个气球从左侧入口出发;
- 在路径旁空地点击建塔,塔自动锁定最近敌人开火;
- 击杀获得金币,金币够了继续补塔,形成「击杀---赚钱---扩塔」的正循环;
- 撑过第 3 波且无气球抵达基地,弹出「过关庆祝」;若有气球冲进教学楼,基地生命归零则「游戏结束」。
整个流程节奏清晰,变量面板实时可见,非常适合现场演示与讲解。
五、进阶(用代码对照思路,更好讲清逻辑)
图形化里「敌人沿路径走」「波次生成」的本质,其实就是下面这段逻辑。理解它,你能把同一套思路迁移到任何路径类游戏:
python
# 敌人沿路径点移动(与上面积木一一对应)
def move_enemy(e, waypoints):
target = waypoints[e.idx] # 当前目标拐点
step_toward(e, target, e.speed) # 朝目标走 speed 步
if dist(e.pos, target) < 5: # 到达拐点
e.idx += 1
if e.idx >= len(waypoints): # 走完全程
base_hp -= 1 # 广播「敌人到达」
return None # 删除该敌人
return e
# 波次推进
def next_wave(wave):
for _ in range(3 + wave): # 第 wave 波生成 wave+3 个敌人
spawn_enemy()
进阶方向:① 给塔加「射程」「攻速」两种私有变量,做出减速塔、速射塔的区别;② 敌人加 类型(普通/快速/坦克),对应不同生命与速度;③ 用列表记录「已建塔坐标」,防止在同一格重复建塔;④ 加入 BFS 自动寻路,让敌人能绕开你临时摆放的障碍物------这就从「固定路径」升级成了「动态策略塔防」。
六、小结与互动
校园守塔防御战 用一个项目串起了图形化编程的全部主干考点:列表存数据、变量记状态、循环推进程、条件做判定、自制积木封装复用、广播解耦模块。它结构干净、效果直观,是冲击滨州赛图形化赛项、以及各类创意编程赛的优质练手题。
你参加过哪里的图形化创意编程赛?最想做哪类小游戏(塔防 / 跑酷 / 益智 / 模拟经营)?欢迎在评论区聊聊,我可以挑高热度的主题再出一篇完整拆解。
本文为原创图形化项目解析,转载请注明出处。更多少儿编程赛事真题与项目拆解,持续更新。
📚 免费少儿编程资料(夸克网盘领取)
以下资料来自夸克网盘分享,点击链接可直接保存;若需在 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
资料持续更新,关注获取最新分享。