覆盖的关键课题
介绍
可持续目标是联合国在2015年认证的17个目标。它们是每个人都需要共同努力的代办目标。
这个教程将会教导如何移除海洋的塑料污染,而这与第十四个目标"保护水下生物"。
每年都会有大量的塑料垃圾流入海洋,这会威胁到水下的生物。在这个程序中,你将会创建一个游戏来捕捉塑料垃圾。如果任何的塑料垃圾或者网触碰到任何海洋生物,那么游戏就会结束。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/ac10650c-e037-43d8-bf2d-1896e7e8b61b.gif" width="500" style="border-radius: 5px; border: 1px solid #29622d;">
步骤 1 - 改编一个模板项目
首先,请点击这个链接来打开程序模板:
https://play.creaticode.com/projects/2346d59cdaba3485820986ec
点击“改编”按钮来创建你自己的改编项目。需要注意的是,你需要登入才能够改编项目。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/ee042efb-618a-4687-aade-be1aafa3846e.png" width="400" style="border-radius: 5px; border: 1px solid #29622d;">
这个项目包含三个角色以及一个海底背景。
- “野生生物”角色包含鱼类以及其他海底野生生物的8个造型。.
- “塑料”角色包含塑料垃圾的四个造型:塑料袋、塑料杯、塑料瓶以及塑料碟。
- “网”造型包含一个可以用来捕捉塑料垃圾的网子。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/ae63bfa0-fd35-49df-ac57-f808c9be879a.png" width="480" style="border-radius: 5px; border: 1px solid #29622d;">
步骤2 - 重复地复制野生生物
首先,我们将会处理鱼的角色。在游戏开始之后,我们需要一直每三秒复制一个新的野生生物:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/96f59b98-3dc3-4ffa-b319-10382b679d6d.png" width="300" style="">
当你运行程序之后,你不会看见任何新的复制体,因为他们都和原有的角色重叠了。所以你需要把原有的角色拖拽到新的位置来看见复制体。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/8a35205f-14d0-4b67-93dc-f164240ba3bb.gif" width="480" style="">
步骤 3 - 把克隆的野生生物移动到左边
所有的野生生物会从左边移动到右边,所以我们会把他们的起始X位置设置成-220。要让他变得有趣,我们可以为它们设置一个随机的Y位置,但我们需要确保他们出现在舞台的下半部分。因此,我们可以使用-50到-170之间的数值。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/0c772425-9b88-4d0f-866e-f8c0f6dd6025.png" width="400" style="">
现在,我们可以看见复制体出现在左边:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/03b3b9c3-16ba-40c2-93c2-b88fd07baa08.gif" width="480" style="border-radius: 5px; border: 1px solid #29622d;">
步骤 4 - 切换到一个随机的造型
要让每个新的复制体展现一个不一样的造型,我们可以使用“切换造型”编程积木。需要注意的是,这个编程积木不仅允许你从列表中选择,也可以使用数字来作为它的输入方式。所以我们可以使用“随机选取”编程积木来产生一个1到8之间的随机数字。举个例子,当数字会是1时,那么这个复制体将会切换成造型号码1,也就是“金鱼”。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/52c336e1-05b9-40a0-93fc-d5b7f24f7847.png" width="400" style="">
现在,我们每次都会得到一个随机的野生生物:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/6c41b028-0030-452a-9b60-69e4a63027bc.gif" width="500" style="border-radius: 5px; border: 1px solid #29622d;">
步骤 5 - 隐藏原有的角色
原有的角色一直都被展示在舞台上。我们可以简单地隐藏它,以便所有的游戏逻辑都由复制体完成。需要注意的是,当原有的角色被隐藏起来时,它的复制体也会被隐藏,所以我们需要在复制体被生成之后显示它们:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/1d5ffb2e-3d77-4413-9e3e-4ce1ae45f5d4.png" width="900" style="">
现在,我们只会看得到复制体,并且把原有的角色隐藏起来:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/63662679-2fa4-4ba2-ab8d-aa866e5f6c10.gif" width="500" style="border-radius: 5px; border: 1px solid #29622d;">
步骤 6 - 让野生生物游泳
在每个复制体被生成之后,我们会让它们游到右边。我们可以一直地 把它们的X位置数值加1:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/4baf1431-8eeb-4e72-8472-ff67e80710bf.png" width="400" style="">
现在,我们会在海底得到一些正在游泳的野生生物:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/cb9a6a05-0a5e-4d9c-933f-3b58a1cc52ae.gif" width="500" style="border-radius: 5px; border: 1px solid #29622d;">
步骤 7 - 删除复制体
当一个复制体抵达舞台的右边时,我们需要删除它。一个很简单的方法就是使用就是使用“触碰舞台边缘”编程积木,就像这个样子:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/36a15ade-b63d-4362-a8d8-6cf162cd82ba.png" width="350" style="">
虽然如此,这个方法会有一些问题,因为复制体会在它们被生成的时候触碰到左边的舞台边缘,所以它们会直接被删除掉。要解决这个问日,我们可以检查复制体的X位置是否接近右边的舞台边缘:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/b63663cf-0f57-4bb8-a727-f551b9cfbfa0.png" width="450" style="">
现在,我们可以看见克隆体会在它们抵达右边的舞台边缘时被删除:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/1a2e5292-d9f6-47c7-9b58-d93f3c723d23.gif" width="500" style="border-radius: 5px; border: 1px solid #29622d;">
步骤 8 - 触碰网则游戏结束
在这个游戏中,玩家将会操控网来捕捉塑料垃圾,并且网不应该伤害任何野生生物。因此,一旦网意外触碰到任何一只野生生物,那么游戏就会结束。为了能够结束游戏,我们可以添加一个新的名为“游戏结束”的变量。
- 当游戏开始时,我们把“游戏结束”设置为0,这意味着游戏还没有结束。
- 当野生动物的任一克隆体碰到“网”角色时,我们把“游戏结束”设置为1。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/2063b2b0-404c-474b-a25d-d55bc5be7b0e.png" width="700" style="">
这是一个“游戏结束”变量的简单测试。它从0开始,并在鱼接触到网时被设置成1。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/71ee09c0-1e8a-4a38-9ce2-391570968dc3.gif" width="500" style="border-radius: 5px; border: 1px solid #29622d;">
步骤 9 - 重复直到游戏结束
当游戏结束时,我们应该停止创造新的克隆体,并冻结现有的克隆体。我们可以使用“重复执行直到”编程积木来替代“重复执行”编程积木,以便复制会在“游戏结束”变量变成1的时候停止。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/ac2a4ee8-d28f-4152-b264-58e49c957eb7.png" width="800" style="">
当我们测试游戏时,所有的复制体会在第一条鱼接触到网时被冻结:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/52cba4fa-b7d5-4f60-aa3e-ee9220c0501e.gif" width="500" style="border-radius: 5px; border: 1px solid #29622d;">
步骤10 - 把编程积木复制到塑料角色
现在,让我们开始为“塑料”角色进行编程。你会发现,因为塑料角色也创建很多会在舞台上移动得随机复制体,所以我们能重复使用野生动物角色中的大部分程序。关键的差异是移动的方向。
因此,我们可以复制“野生动物”角色中的3个堆栈的编程积木到“塑料”角色中。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/eb761cb2-b70f-437d-b794-8e93aee205bb.gif" width="1000" style="border-radius: 5px; border: 1px solid #29622d;">
步骤 11 - 修复塑料角色中的复制编程积木
虽然复制大量的编程积木感觉很不错,但是你也需要非常地小心,因为**程序中的大部分问题都来自于”复制粘贴“**。
我们需要小心的改变新的编程积木,以便塑料角色的复制体会随机地移动到底。这是一些你需要做出的改变:
- 让“塑料“角色每秒生成一个复制体,以便我们可以得到更多的塑料。
- 复制体只可以从四个造型中选择。
- 复制体应该去到舞台的顶端,并且X位置随机。
- 复制体应该向下移动,每一步的Y位置都减少两个单位。
- 如果复制体的Y位置低于特定数值,比如-150,那么我们将会删除它。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/e23d3172-e484-45ab-95a0-2f3ed9b7f110.png" width="800" style="">
作为测试,现在我们将会得到随机的野生生物和随机的塑料垃圾:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/122fc187-c90c-407b-8803-e9bdaeebc04f.gif" width="500" style="border-radius: 5px; border: 1px solid #29622d;">
步骤12 - 删除塑料垃圾的时机
我们也需要改变删除塑料角色复制体的方式。我们不应该在垃圾抵达底部的视乎删除它,因为真正的塑料垃圾会留在海洋的底部。而且,当塑料切除到”网“角色的时候,这意味着网已经收集了这个垃圾,所以我们应该删除这个复制体。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/b5d8efd0-043a-4856-9802-a534916312c2.gif" width="700" style="">
现在,塑料垃圾会在他们接触到”网“角色时消失:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/db73cc38-cc6a-4764-a56f-eadb33f034ca.gif" width="500" style="border-radius: 5px; border: 1px solid #29622d;">
步骤 13 - 如果垃圾接触野生生物,游戏结束
玩家的目标是为了预防塑料垃圾伤害野生生物,所以我们应该在垃圾接触任何的野生生物时把”游戏结束“设置成1:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/34cc93df-08e5-4298-a279-237caab52648.png" width="900" style="">
作为测试,当野生生物接触掉下来的垃圾时,游戏结束:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/cb0e0bb6-f071-4fe4-8890-ed7a2bb7d65b.gif" width="500" style="border-radius: 5px; border: 1px solid #29622d;">
步骤14 - 点击以移动网
现在,让我们改变”网“角色。我们可以使用很多方式来让玩家控制”网“角色,以移动它。让我们挑选一个简单的方法:当玩家点击舞台的任一地方时,我们把网移动到那里。我们可以使用"当按下鼠标按钮时”编程积木。
需要注意的是,它需要我们创建两个新的变量“x"以及”y“,并且我们需要从下拉式选项中选择他们。
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/08f1abd1-6be9-41a4-aa86-4324c9fa41d3.png" width="500" style="">
现在,游戏可以通过控制网的方式来进行:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/da4ca658-96ca-4818-8291-98d397f2bc1d.gif" width="500" style="border-radius: 5px; border: 1px solid #29622d;">
步骤 15 - 总共分数
因为所有游戏都会有一个努力的目标,让我们在玩家移除一个垃圾物体时奖励他们一分。我们可以添加一个新的变量”分数“,在游戏开始时把它设置成0,当有些塑料垃圾被移除时增加一分。这部分可以在”塑料“角色里完成:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/a2e59411-fb28-4286-8f0f-d536b5777cbd.png" width="900" style="border-radius: 5px; border: 1px solid #29622d;">
现在游戏已经完成了:
https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/ac10650c-e037-43d8-bf2d-1896e7e8b61b.gif" width="500" style="border-radius: 5px; border: 1px solid #29622d;">
创意点子
我们有很多办法,让你可以在这个程序里面创建更多。这里有一些点子的例子: