今天,我们将学习如何在 Scratch 上制作一个简单的过马路游戏。在这个游戏中,目标是让你的角色安全地穿过一条拥挤的道路,而不被撞到。如果你成功地到达另一边,你就赢了!
这是一个非常受欢迎的游戏,玩家将控制一只鸡来避免被汽车撞到。你可能已经听过一千次"为什么那只鸡要过马路?"的笑话了。
所以在我们今天的游戏中,我们将尝试让一辆汽车安全地穿过马路,同时避免被愤怒的鸡们抓到。
## 探索如何在Scratch上制作公路类游戏
在我们今天制作的游戏中,我们将自己绘制背景,并使用大量 Scratch 代码中的“如果-那么”块来检查两个角色是否碰撞,以及允许我们使用键盘上的箭头键控制角色。
这里可以下载完整项目[点我下载轻松过马路](https://www.codxz.com/media/project/%E7%A9%BF%E8%B6%8A%E9%A9%AC%E8%B7%AF.sb3)
### 1、绘制背景
在“选择背景”下,我们将选择“绘制”。我们可以先在整个背景上画一个大的绿色矩形,然后为我们实际的道路画一个小一点的黑色矩形。现在我们需要画一些车道线。将线条的粗细设置为10;画好一条后,可以直接复制粘贴剩下的。我们需要画4条白色线条和2条黄色线条。
专业提示:如果您先画白色线条,然后再画黄色线条,则可以通过在白色线条上画黑色线条来轻松创建线条之间的空格!

### 2、选择角色
我们的游戏中将会有4只鸡(每条车道一只)和一辆横穿马路的汽车。Scratch 贴心地为我们提供了 4 种类型的鸡角色供我们选择。“Hatchling”角色只有一个外观,里面是一只刚从蛋里出来的小鸡。我们将选择该外观,然后删除蛋的部分以单独使用小鸡。

### 3、定制化你的角色
我们需要将所有鸡的大小调整到车道线内,缩小汽车并将其旋转到正确的方向。您也可以更改汽车的颜色,在这里,我们选择红色!另外,我们也不能忘记,这些鸡可不是开玩笑的。让我们画上眉毛来表示这一点。





现在我们已经把游戏准备妥当,是时候开始写代码了!
### 4、让小鸡动起来
让我们从刚孵化的小鸡开始。我们只想让它在点击绿色旗帜时自己左右移动。一个“移动”块、“碰到边缘就反弹”块和一个“重复执行”循环可以帮我们实现这一点。我们还需要将它的旋转样式设置为“左右翻转”,否则当它碰到边缘反弹时,小鸡会倒立过来。

### 5、让所有小鸡动起来
所有的小鸡的动作都差不多。我们可以通过单击并拖动要复制的代码到要复制到的角色图片上来复制角色之间的代码。我们将为所有小鸡分配相同的代码,除了每只小鸡的移动速度会略快于上一只。
我们将小鸡移动的步数设置的越多,它们移动得就越快,游戏也就越难!




### 6、使用箭头控制汽车
为了控制汽车,我们可以使用“如果-那么”块来检查某个箭头键是否被按下。如果是,我们将告诉汽车指向该箭头键的方向并移动几步。
我们必须确保将“如果-那么”块放在“重复执行”循环内,这样 Scratch 才知道要一直检查这些键是否被按下。如果我们想要汽车无论移动到哪里都面向同一个方向,我们可以将其旋转样式设置为“不可旋转”。

### 7、检测是否失败
如果一只鸡碰到我们的车,游戏就应该结束。让我们在我们的汽车中写一些代码来检查它是否触碰到任何一只鸡。
我们可以使用一些“碰到()?”感应块和一些“或”运算符块来进行检查。
如果我们的车碰到了鸡,我们将阻止汽车移动,播放一些声音并停止游戏。“停止该角色的其他脚本”块负责阻止汽车移动。“脚本”只是一个用于代码块的时髦说法。

### 8、检测是否胜利
既然我们可以输了,那么也必须能赢!让我们编辑我们的背景,在路的另一边画一条大红线。在我们的汽车角色中,我们将检查它是否接触到那条线的颜色,如果是,我们就知道它已经安全地到达了路的另一边。我们可以通过积极的音效来庆祝胜利,然后停止游戏。


我们已经让游戏运行起来啦!现在是给鸡增加动画效果的好时机!我们可以让游戏更易于重新开始游戏,并添加一些背景音乐。
### 9、让鸡动起来
我们可以使用“下一个造型”代码块来为任何角色添加动画,但前提是该角色拥有多个造型,并且这些造型能够被连贯地组合成动画。对于我们的雏鸡、母鸡和公鸡来说,就满足这个条件。我们将让它们依次循环播放各个造型,并使用“等待”代码块来控制动画播放的速度。我们还需要让这些鸡在抓到汽车时停止移动,这段代码需要添加到所有四只鸡的脚本中。



### 10、给车设置一个起始位置
当我们游戏中失败,再次点击绿色旗帜尝试重新开始游戏时,由于车子还停留在马路上,很可能会导致我们立即再次失败。我们可以通过设置汽车的 X 和 Y 坐标来控制它在点击绿色旗帜时移动到初始位置。
X 和 Y 坐标表示角色在项目空间中的位置。你可以试着移动角色,观察它的 X 和 Y 坐标如何随之变化。我们将把车移动到我们想要它开始的位置,然后记下它的 X 和 Y 坐标,并告诉它在点击绿色旗帜时移动到这个位置。

### 11、添加背景音乐
任何游戏必不可少的部分:一个符合游戏氛围的动听旋律。我们可以将这段代码添加到背景(Backdrop)中,因为它与任何特定角色都无关。如果我们在“重复执行”循环内使用“播放声音直到完成”代码块,它将一遍又一遍地播放我们的音乐。
作为可选的最终润色,我们可以通过广播来停止玩家获胜时的音乐。当我们广播一条消息时,我们可以将信号从一个角色发送到另一个角色以触发代码。我们将创建一个新的消息“胜利”(Win),并在我们的车子到达道路另一侧时广播它。当背景(Backdrop)接收到消息“胜利”时,它将停止播放音乐。


我们今天编写了有个有趣的游戏,但不能满足于此,后面让我们继续编写很酷的游戏吧!