给孩子们准备的Scratch小游戏:接住小点

由 小石头编程 发表于 2024年04月22日
### 介绍 我们将在本项目中学习如何创建一个游戏,在游戏中,我们必须使彩色小点与控制器的正确部位相匹配。 ![](https://www.codxz.com/media/upload/2024042218173523.png) ### 能学到什么 - 物体碰撞的原理 - 游戏开发的思路 ### 资源准备 在本项目中, 会用到一个控制器和一些颜色小球,控制器的图如下: ![](https://www.codxz.com/media/upload/2024042218344676.png) 小球我们可以使用Scratch的画图工具来制作。 ### 开始制作 #### 1、创建一个控制器 让我们从创建一个控制器开始,控制器将用来收集小点。 我们添加一个角色,使用我们上面的控制器图,如下所示: ![](https://www.codxz.com/media/upload/2024042222471722.png) 接下来,我们给控制器添加旋转的代码,当按下向右方向键时,控制器向右旋转3°,代码如下: ![](https://www.codxz.com/media/upload/2024042222492342.png) 现在测试下,按下向右箭头,看控制器是不是向右旋转。 同样的,当我们按下向左箭头时,控制器应该向左旋转,所以我们需要添加如下代码: ![](https://www.codxz.com/media/upload/2024042222511285.png) #### 2、收集小点 让我们来添加一些小点,供玩家使用控制器收集。 首先我们需要添加一个叫"red"的角色,然后使用Scratch自带的画图软件绘制一个小红点,如下图所示: ![](https://www.codxz.com/media/upload/2024042222562131.png) 我们需要每隔几秒钟就要生成一个小红点,给小红点添加如下代码: ![](https://www.codxz.com/media/upload/2024042222585648.png) 我们需要小红点出现在下面的位置之一, ![](https://www.codxz.com/media/upload/2024042222591591.png) 这时,我们需要使用列表来存储起始位置,创建一个新列表,添加-180和180两个数字,如下所示: ![](https://www.codxz.com/media/upload/2024042223015113.png) 我们可以使用这个列表来随机四个起始位置的其中一个,给小红点添加一下代码: ![](https://www.codxz.com/media/upload/2024042223103589.png) 上面的代码选择 -180 或 180 作为 x 和 y 坐标,这意味着每个复制点起始于工作区的一个角。 测试代码,会看到大量红色小点出现在画面的各个角,并朝控制器缓慢移动。 ![](https://www.codxz.com/media/upload/2024042223112318.png) 下面,我们创建**生命**和**分数**的新变量,在游戏开始时将**生命**设为3,**分数**设为0。 然后当小红点碰到控制器时,如果颜色匹配,则分数+1,若颜色不匹配,生命-1。 代码如下: ![](https://www.codxz.com/media/upload/2024042223182895.png) 在控制器中,添加一下代码,当生命小于1时,游戏结束,停止所有代码。 ![](https://www.codxz.com/media/upload/2024042223202866.png) 现在测试我们的代码,检测是否正常运行。 #### 挑战1:更多颜色的小点 复制你的“red”小点角色两次,并将两个新子图命名为“yellow”(黄色)和“blue”(蓝色)。 ![](https://www.codxz.com/media/upload/2024042223220968.png) 编辑这些角色(包括他们的代码),以使每个彩色小点必须与控制器上的正确颜色相匹配。请记得测试项目,确保在恰当的时间获取分数和失去生命,并且游戏不会太过简单或太过困难! #### 挑战2:增加难度 让我们通过缓慢减少小点出现的间隔时间,来使游戏随着玩家存活时间延长而变得越发困难。 我们可以通过增加一个**延迟**的变量,在游戏开始时,将**延迟**设置一个较大的值,然后缓慢减小**延迟**的数值。 请注意,这与游戏计时器的工作原理十分相似! 最后我们在小点的脚本上使用这个变量,将在创建复制点之间等待一个随机秒数的代码移除,并用我们的新**延迟**变量替代它。 ![](https://www.codxz.com/media/upload/2024042223293459.png) 测试我们的新**延迟**变量,看小点之间的延迟时间是否缓慢减少。这对于3种颜色的小点通用吗?能否看到 **延迟** 变量的值正在减少? #### 挑战3:移动更快的小点 我们能否通过添加一个**速度**变量来完善我们的游戏,使得小点从一次移动1步开始,逐渐变得越来越快?其工作方式与上面使用的**延迟**变量十分相似,我们可以尝试实现一下。