用图形化编程做一个“少年探险闯关”小游戏:方向键控制、碰撞检测与多关卡串起完整项目

备赛方向:全国青少年红色文化传承与实践创新大赛(Scratch 科目,教育部白名单)。本文原创一个"探险闯关"小游戏项目,串起方向键控制、碰撞检测、变量计分、列表存关卡、广播切换与自制积木六大考点,适合作为图形化赛项作品雏形。

一、项目目标

我们要做一个可以在电脑上用键盘玩的闯关小游戏:

  • 舞台是一张"探险地图",上面散布着若干个打卡点 (收集目标)和若干障碍物(陷阱)。
  • 玩家用**方向键(↑↓←→)**控制小探险家在地图里移动。
  • 走到打卡点上就收集成功,得分 +10 ;碰到障碍物扣 5 分并把主角弹回起点。
  • 当本关所有打卡点都收集完,再走到终点旗帜处,就广播"过关",自动进入下一关。
  • 三关全过,游戏胜利;分数低于 0 则游戏失败。

这个项目把"操控 + 规则 + 进度"三类逻辑都练到了,是图形化赛项里非常能打的一类作品。

二、核心考点

考点 在项目中怎么用
方向键 / 事件 "当按下↑键"等四类事件,驱动主角移动
碰撞检测 "碰到颜色 / 碰到角色"判断墙壁、陷阱、打卡点
变量 得分关卡剩余打卡点 三个变量贯穿全程
列表 用列表按顺序存放三关的"打卡点数量",实现多关卡配置
广播 初始化过关失败 三类广播协调主角与背景
自制积木 封装 初始化关卡(关号)重置主角,避免重复堆积木

三、文字流程图

复制代码
绿旗被点击
  └─ 广播 [初始化]
        ├─ 主角:移到起点,得分=0,关卡=1
        └─ 背景:读取列表第1项,布置本关打卡点
循环检测(主角脚本,重复执行):
  ├─ 若 按下 ↑ 键 → y 增加 5
  ├─ 若 按下 ↓ 键 → y 减少 5
  ├─ 若 按下 ← 键 → x 减少 5
  ├─ 若 按下 → 键 → x 增加 5
  ├─ 若 碰到 [墙壁颜色] → 退回上一位置(碰壁不动)
  ├─ 若 碰到 [打卡点] → 隐藏该打卡点,剩余打卡点-1,得分+10
  ├─ 若 碰到 [陷阱]   → 得分-5,广播[重置主角]
  └─ 若 剩余打卡点=0 且 碰到 [终点旗帜] → 广播[过关]
收到 [过关]:
  ├─ 关卡 +1
  ├─ 若 关卡 > 3 → 显示"通关啦!"
  └─ 否则 → 广播[初始化](进下一关)
收到 [失败](得分<0):显示"再试一次"

四、积木拆解(分模块)

模块 A:主角移动 + 碰壁检测

复制代码
当 绿旗 被点击
广播 [初始化 v]
重复执行
  如果 <按键 [向上箭头 v] 按下?> 那么
    将 y 坐标 增加 (5)
  结束
  如果 <按键 [向下箭头 v] 按下?> 那么
    将 y 坐标 增加 (-5)
  结束
  如果 <按键 [向左箭头 v] 按下?> 那么
    将 x 坐标 增加 (-5)
  结束
  如果 <按键 [向右箭头 v] 按下?> 那么
    将 x 坐标 增加 (5)
  结束
  如果 <碰到颜色 [#5A3A22] ?> 那么   // 墙壁棕色
    将 x 坐标 增加 ((0) - (本步x))
    将 y 坐标 增加 ((0) - (本步y))
  结束
end

小技巧:移动前先把"本步位移"存进变量,碰到墙壁就反向抵消,主角就"卡"在墙外,不会穿墙。

模块 B:收集打卡点 + 计分

复制代码
当 绿旗 被点击
重复执行
  如果 <碰到 [打卡点 v] ?> 那么
    隐藏
    将 [剩余打卡点 v] 改变 (-1)
    将 [得分 v] 改变 (10)
    播放声音 [叮 v]
  结束
end

每个打卡点角色都要有这一段,靠"碰到就隐藏 + 计数 -1"实现收集。

模块 C:过关与多关卡(自制积木)

复制代码
定义 初始化关卡 (关号)
  将 [关卡 v] 设为 (关号)
  将 [剩余打卡点 v] 设为 (列表的第 (关号) 项)
  显示所有打卡点
  广播 [布置地图 v]

当 接收到 [过关 v]
  将 [关卡 v] 改变 (1)
  如果 <(关卡) > (3)> 那么
    说 [通关啦!] (2) 秒
  否则
    初始化关卡 (关卡)
  结束

列表 每关打卡点数 = [3, 4, 5],代表三关分别有 3、4、5 个打卡点,改一个数就能调难度。

五、运行效果

  • 第一关 3 个打卡点,熟悉方向键;第二关 4 个,加入更多陷阱;第三关 5 个,路径更绕。
  • 主角走到打卡点会"叮"一声并消失,分数实时上涨。
  • 三关全清后屏幕弹出"通关啦!",整个流程闭环。
  • 若连续踩陷阱把分数扣到负数,立刻弹出"再试一次",引导玩家重来。

六、进阶挑战

  1. 加计时器 :用 计时器 变量记录通关用时,分数里扣时间分,做出"竞速榜"。
  2. 随机地图:把打卡点坐标放进列表,每关用"在 1 到 N 间取随机数"重新布置,每次玩都不一样。
  3. 敌人巡逻:加一个左右来回移动的角色,碰到就扣分,引入"克隆体 + 移动"让游戏更有挑战。

七、小结与互动

这个项目用方向键控制 + 碰撞检测 撑起"玩"的部分,用变量 + 列表 撑起"规则与进度",再用广播 + 自制积木把各角色协调起来------六个考点一个不少,却比单纯做"数据展示类"作品更有看点。

你在图形化比赛里还做过什么好玩的闯关游戏?卡在"碰壁穿墙"或"多关卡切换"哪一步?评论区聊聊,下篇我们拆解一个"自动寻路"的小项目。


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

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

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

相关推荐
wzdark25 分钟前
多维数组在算法设计中的存储映射问题4
算法
步行cgn1 小时前
Spring 注入 Map 集合详解
数据库·python·spring
傲世仙尊1 小时前
System V 进程间通信详解:共享内存、消息队列与信号量(CSDN博客)
linux·开发语言·c++
今儿敲了吗1 小时前
03停用词过滤
笔记·python
cvby1 小时前
C++11
开发语言·c++
Phil3231 小时前
多智能体不是越多越好:Google《Towards a Science of Scaling Agent Systems》论文深度解读
算法
6Hzlia1 小时前
【Classic 150 刷题计划】 LeetCode 26. 删除有序数组中的重复项 | C++ 快慢双指针经典模板
c++·算法·leetcode
李可以量化2 小时前
Tornado 部署公域网络安全与防护(上)
python
风跟我说过她2 小时前
SQL 一键转经典 Chen 风格 ER 图:开源 CLI + 在线工具 + Agent Skill
数据库·python·sql·开源·开源软件
huang5791472 小时前
基于滑动窗口的流式数据算法优化思路3
算法