2026济南市青少年科技节:校园点球大战解析
济南市青少年科技节「机器人工作室联赛」设有线上 Scratch 设计比赛(申报时间 9 月 1 日—10 月 15 日),鼓励小学生用图形化编程创作有趣、可交互的作品。下面这道原创项目题,既贴合赛事「创意设计」导向,又能把图形化编程的核心考点串成一条完整主线。
一、题目与项目目标
项目目标:校园点球大战
还原一场 5 轮制的校园点球大战。玩家扮演射手,每轮选择射门方向(左 / 中 / 右)与高低角度;守门员会按一定概率随机扑救某个方向。足球以动画飞出后,程序实时判断是否进球并计分;5 轮结束后自动结算胜负,并支持「攻防切换」让玩家也能当守门员。
这个题目不需要复杂素材,纯用角色、造型与积木就能完成,非常适合作为图形化编程的练习与参赛作品。
二、核心考点
| 考点 | 在本题中的体现 |
|---|---|
| 列表 | 用「轮次结果」列表记录每一轮是「进」还是「失」,用于赛后回放与连击统计 |
| 变量 | 我方得分、对方得分、当前轮次、射门方向、扑救方向、足球坐标与速度、是否进球标志 |
| 循环 | 「重复执行」监听按键、「重复直到」等待比赛结束、「重复」驱动足球逐帧飞行的主循环 |
| 条件 | 判断是否进球(球落点 x 与守门员 x 是否重合)、是否轮到玩家射门、是否打满 5 轮、比分是否提前决出 |
| 自制积木 | 封装「画球场」「守门员扑救(方向)」「射门动画(方向,角度)」「进球庆祝」「重置比分」等带参数的积木 |
| 广播 | 用「开始射门 / 扑救 / 进球 / 丢球 / 换边 / 比赛结束 / 结算」解耦射手、守门员、记分牌三个角色 |
三、解法与积木拆解
1. 角色与舞台
- 射手:固定在球前,点击方向键或绿旗后进入「待射」状态。
- 守门员:沿球门左右移动,收到「扑救」广播后按参数方向做一次扑救动作。
- 足球:用单一角色配合坐标变量实现飞行(也可用克隆体做残影特效)。
- 记分牌:用「变量」与「列表」显示实时比分和轮次。
2. 变量与列表初始化(绿旗按下时)
把「我方得分 / 对方得分 / 当前轮次」清零,「是否进球」设为 0,并清空「轮次结果」列表。这一步是很多新手漏掉的点——不初始化,第二轮开始就会带着上一场的比分,导致逻辑混乱。
3. 射门与扑救的判定逻辑(核心)
守门员扑救方向是一个「随机数」:让它在 1、2、3 中等概率出现,分别对应左、中、右。玩家射门方向同样用 1/2/3 编码。
判断是否进球的规则用一句话概括:
当「射门方向 ≠ 扑救方向」时进球;若方向相同,则守门员扑出。
为了体现「角度」的进阶维度,还可以在方向相同的基础上,再比较高低角:即使方向相同,若玩家选了守门员够不到的「上角」,仍有概率破门。下面用一段 Python 伪代码把判定逻辑讲清楚(图形化里对应一串「如果…否则」积木):
import random
def judge(shoot_dir, shoot_high, save_dir, save_high):
# shoot_dir/save_dir: 1=左 2=中 3=右; *_high: True 表示打上角
if shoot_dir != save_dir:
return "GOAL" # 方向不同必进
# 方向相同:只有打上角且守门员没预判到上角才进
if shoot_high and not save_high:
return "GOAL"
return "SAVE"
for round in range(1, 6):
save_dir = random.randint(1, 3)
save_high = random.choice([True, False])
# 玩家输入 shoot_dir / shoot_high ...
result = judge(shoot_dir, shoot_high, save_dir, save_high)
print(f"第{round}轮: {result}")
4. 用广播解耦三个角色
不要把所有逻辑塞进一个角色。用广播把流程拆开:
- 射手射门 → 广播「开始射门」;
- 足球角色收到后播放「射门动画(方向,角度)」;
- 同时广播「扑救」,守门员执行「守门员扑救(扑救方向)」;
- 动画结束后,由记分牌角色根据「是否进球」广播「进球 / 丢球」并更新变量与列表;
- 5 轮满后广播「比赛结束 → 结算」。
这样每个角色只关心自己收到的消息,后续想加音效、加统计都只改对应角色,不会牵一发动全身。
5. 自制积木封装(带参数)
画球场:一次画好草地、球门、中点圈,绿旗时调用。守门员扑救 (方向):传入 1/2/3,让守门员滑行到对应位置并做一个扑救造型。射门动画 (方向, 角度):传入射门参数,用「重复」循环逐帧更新足球 x/y,模拟抛物线。进球庆祝/重置比分:复用的小积木,减少重复代码。
四、运行效果
- 绿旗启动,舞台显示 0:0 与「第 1 轮」。
- 玩家选方向(←/↓/→ 或点击三个按钮),足球飞出,守门员随机扑救。
- 进球:记分牌 +1,弹出「GOAL!」并播放欢呼;丢球:守门员做出扑救动作。
- 打满 5 轮后弹出结算面板:显示最终比分、每轮结果列表与胜负。
- 点「换边」可切换攻防,体验当守门员的乐趣。

五、进阶玩法
- 难度递增:守门员从「完全随机」升级为「有 30% 概率预判玩家常用方向」,考验策略。
- 连击与计时:连续进球触发「连击加成」,并加入 10 秒思考倒计时,紧张感拉满。
- 历史排行榜:用「列表」保存最近 5 场比分,赛后对比自己的最佳战绩。
- 双人本地对战:轮流操控射门与守门,适合课堂小比赛。
- 音效与特效:进球加欢呼音、扑救加鼓点,用「播放声音」积木提升沉浸感。
- 角度维度:把方向从 3 档细分为 3×2(左/中/右 × 上/下角),判定逻辑只需在
judge里多比较一个维度。
六、小结与互动
这道「校园点球大战」把列表、变量、循环、条件、自制积木、广播六大图形化核心考点串成了一条完整主线:用列表记账、用变量记状态、用循环驱动动画、用条件判定胜负、用自制积木消除重复、用广播解耦角色。它既是一份可直接投稿济南市青少年科技节 Scratch 设计比赛的原创作品,也是日常练习计算思维的好素材。
你最喜欢用图形化做哪类小游戏?点球大战、迷宫探险,还是音乐编曲?欢迎在评论区聊聊你的创意,下一篇我们挑一个做成完整拆解。
📚 免费少儿编程资料(夸克网盘领取)
以下资料来自夸克网盘分享,点击链接可直接保存;若需在 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
资料持续更新,关注获取最新分享。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)