## 👋 项目介绍
欢迎来到今天的Scratch小游戏创作之旅!我们将一起制作一个名为「小球进球大挑战」的小游戏。在这个项目里,你将操控一个小球(Ball)使用键盘方向键移动,避开蓝色边界墙,努力到达终点——Goal!当小球碰到Goal时,屏幕上会出现“You win!”的胜利提示!
这个项目不仅画面简洁明快,而且非常适合初学者学习Scratch的基本操作,比如角色控制、碰撞检测和事件处理等。准备好了吗?让我们一起动手做起来吧!🌟
## 🎯 你将学会
* 如何用方向键控制角色移动
* 怎样设置角色初始位置和方向
* 如何检测两个角色之间的接触
* 使用颜色传感器判断是否碰到特定颜色
* 利用无限循环让程序持续监听状态变化
## 🛠️ 开始制作
### 第一步:创建新项目并设置舞台
首先我们要打开Scratch软件,创建一个全新的项目。接着我们要为这个游戏设置一个酷炫的舞台背景。
**操作步骤:**
1. 打开Scratch编辑器,创建一个新项目。
2. 删除默认的白色背景。
3. 点击“选择背景”按钮,在素材库中找到并添加背景 `backdrop2`。

---
### 第二步:添加所有角色
接下来我们需要把游戏中需要用到的角色都加入进来:一个是主角小球(Ball),另一个是终点目标(Goal)。这两个角色都需要有自己的外观。
**操作步骤:**
1. 点击左下角的“选择一个角色”按钮;
2. 在角色库中搜索并添加角色 `Ball`;
3. 再次点击“选择一个角色”,搜索并添加角色 `Goal`;
4. 确保每个角色都有正确的初始造型。

---
### 第三步:Ball 初始化位置与方向
为了让每次游戏开始的时候小球都能出现在固定的位置上,我们需要给它设定好初始坐标和面向方向。
**操作步骤:**
1. 点击角色 `Ball`,进入它的脚本页面;
2. 按照下面代码实现进行拖拽积木;
**代码实现:**
```scratch
when flag clicked
go to x: (-205) y: (147)
point in direction (90)
```
**逻辑解析:**
这段代码确保了每次点击绿旗后,小球都会回到屏幕左侧上方的一个固定起点,并且朝右站立。
记得检查坐标的正负值,避免小球出现在画布外哦!

---
### 第四步:Goal 检测胜利条件
现在我们来实现游戏的核心玩法之一:当小球接触到Goal时显示获胜信息。
**操作步骤:**
1. 切换到角色 `Goal` 的脚本区;
2. 拖入 `when flag clicked`;
3. 加入 `forever` 循环;
4. 在循环内部放入 `if` 条件判断;
5. 设置判断条件为 当碰到小球时;
6. 若满足,则显示文字 `say [You win!]`。
**代码实现:**
```scratch
when flag clicked
forever
if <touching [Ball v]?> then
say [You win!]
end
end
```
**逻辑解析:**
这段代码利用无限循环不断检测小球是否触碰到了Goal。一旦发生接触,就会触发“你说赢了”的反馈!
注意不要忘记选择正确的角色进行编程;同时确认名字拼写一致,比如 `Ball` 必须完全匹配。

---
### 第五步:Ball 上下左右移动控制
接下来是最激动人心的部分啦!我们要通过键盘的方向键来控制小球移动。
**操作步骤:**
1. 回到角色 `Ball` 的脚本区;
2. 分别为四个按键创建对应的事件:
- 向上键 (`up arrow`):方向为 0°,前进 10 步
- 向下键 (`down arrow`):方向为 180°,前进 10 步
- 向右键 (`right arrow`):方向为 90°,前进 10 步
- 向左键 (`left arrow`):方向为 -90°,前进 10 步
**代码实现:**
```scratch
when [up arrow v] key pressed
point in direction (0)
move (10) steps
when [down arrow v] key pressed
point in direction (180)
move (10) steps
when [right arrow v] key pressed
point in direction (90)
move (10) steps
when [left arrow v] key pressed
point in direction (-90)
move (10) steps
```
**逻辑解析:**
每次按下方向键,小球会先转向对应方向,再向前走10步,从而实现了灵活的操控体验。

---
### 第六步:Ball 碰撞蓝色边界反弹机制
为了增加游戏难度,我们在地图边缘设置了蓝色边框作为障碍物。当小球碰到这些蓝线时,它应该自动弹回来一段距离。
**操作步骤:**
1. 继续在角色 `Ball` 的脚本区工作;
2. 新增一条 `when flag clicked` 事件;
3. 下方嵌套一个 `forever` 循环;
4. 在循环内放入 `if` 判断,检测是否碰到颜色 `#1505ff`;
5. 若成立,则执行 `move (-10) steps` 让小球倒退10步。
**代码实现:**
```scratch
when flag clicked
forever
if <touching color (#1505ff)?> then
move (-10) steps
end
end
```
**逻辑解析:**
这个机制模拟了物理世界里的“碰撞反弹”。只要一碰到蓝色墙体,小球就立刻被推回原路,防止越界。
---
### 第七步:运行演示并查看结果
终于到了见证奇迹的时刻!让我们点击绿旗运行整个项目,看看小球能不能顺利通关吧!
**操作步骤:**
1. 点击右上角的绿色旗帜图标;
2. 使用键盘方向键操控小球移动;
3. 观察是否能够正常响应指令;
4. 测试小球是否能在触达Goal时显示出“You win!”;
5. 查看小球是否会因碰到蓝色边界而反弹。

---
## 🚀 挑战一下
你已经掌握了基本的游戏制作方法,那不如试着挑战一下自己:
🎯 **任务建议:**
- 尝试更换不同的背景图片和角色造型,打造属于自己的版本;
- 增加计时器功能,记录玩家完成的时间;
- 设计更多种类的障碍物,提升游戏复杂性和趣味性。
发挥你的创意,做出独一无二的作品吧!
---
## 🎉 结语
恭喜你完成了这次精彩的Scratch冒险旅程!从零开始一步步构建了一个可玩性强的小游戏,是不是成就感满满呢?
希望你能继续深入探索Scratch的世界,解锁更多的编程技能,创造出更棒的作品!如果你喜欢这类教程,别忘了关注我们,还有更多精彩内容等着你哦 😊
Keep coding, keep creating! 💻✨