两个游戏参考:

Flappy Bird

编程竞赛 2020下半学年安排 - 图1

  1. 登入好好搭搭网站,打开“创作模板——Scratch”
  2. 删除角色。弹球游戏中没有小猫角色,右键单击小猫角色,删除。
  3. 新建角色——从角色库中选取“动物”中的“Parrot”角色
  4. 编写小鸟脚本1——改变小鸟大小
  5. 编写小鸟脚本2——小鸟的初始位置
    小鸟一直在舞台偏左的位置上下运动。初始位置可以通过鼠标拖动,调整到合适位置。
  6. 编写小鸟脚本3——小鸟的上下运动
    Flappy bird游戏中小鸟的运动方式是,当玩家每触摸一次屏幕时,小鸟向上飞行一段距离,当玩家不触摸屏幕或手指一直不离开屏幕,小鸟都会自动的向下飞行。
    Scratch目前并不支持触摸屏,所以本游戏的操控改为空格键操作。
    先实现小鸟的自动下落:
    此时会发现,小鸟的头是朝下的:
    让小鸟的头始终朝右,有两种方法:
    方法一:修改角色信息的“旋转模式”
    方法二:使用修改角色坐标的方式,移动角色。
    方法二能直接在脚本中看到,可读性更佳,推荐。
    小鸟自动下落的速度设定为 -6 比较合适。
    接下来编写当按下空格键时,小鸟向上运动的程序。
    因为小鸟自动下落的脚本也会反复执行,所以要实现按下空格键时,小鸟能向上运动,必须Y坐标增加的值的和为正。
  7. 新建柱形障碍物角色——从角色库中选取“物品”中的“Paddle”角色
  8. 编写障碍物脚本1——改变障碍物大小
    这类脚本大家都很熟悉了,不多说。
  9. 编写障碍物脚本2——障碍物的运动
    障碍物是呈竖直状态的,所以首先要转动90度。打开角色信息发现其“旋转模式”是第三种,需先改成第一种。
    障碍物最初处在舞台最右边,所以X坐标为240,Y坐标为一定范围内的随机值(160~260)。
    障碍物持续按一定速度往左移动,移到左边缘时隐藏,重新移动回最右边,显示,如此往复。
    这里不用障碍物“碰到边缘”为条件触发隐藏,因为障碍物一直都是贴着边缘的,所以用障碍物的X坐标为条件来判断是否到达舞台的最左边。
    接下来,制作下半部分的障碍物。可以通过再新建一个障碍物角色实现,也可以用克隆的方式实现,本例中用克隆方式制作。
    (克隆体脚本参见:是男人就撑30秒)
    克隆体的脚本
  10. 编写障碍物脚本3——得分判定
    可以利用障碍物触碰舞台最左边来进行得分判定。
  11. 编写小鸟脚本4——扇翅膀效果
    小鸟向上运动时,切换为另一个造型,可制作出扇翅膀效果
  12. 编写小鸟脚本5——死亡判定
    小鸟碰到障碍物时,说“GAME OVER!”,头朝下跌落,然后停止全部。
    至此,Flappy Bird的基本框架和脚本编写完毕。

https://www.kidscoding8.com/51606.html

飞机大战

【玩家飞机】
第一个角色当然是玩家自己的飞机啦~
我们点击“从本地文件中上传角色”的按钮,选取“玩家”素材图片,点击打开,就新建了一个玩家飞机角色。
刚载入的角色图片比较大,需要把它缩小一些。我们点击界面上方的“造型”标签栏,进入造型编辑界面,(Scratch有点小问题,有时候进入造型界面时,角色图片会莫名其妙的消失,这时候可以点击下图的紫色圈起来的按钮,重新导入图片)。
如何缩小角色图片呢?首先,我们要让图片“转换成矢量编辑模式”,点击如图按钮:
然后单击图片,会出现编辑框,可用鼠标拖动编辑框边缘调整大小(拖动时按住键盘shift键,可以按比例缩放):
缩放完成后,别忘了点击“设置造型中心”按钮,然后点击飞机的中心位置,把中心点设置准确。
接下来我们在这个角色的造型界面,继续导入一张图片“破坏”,这是我们的飞机角色死亡时的图样。
同样需要进行缩放和设置中心点的操作(可以参考刚才飞机造型的操作步骤噢)。
这样,玩家飞机角色的造型部分就制作好了~
接下来要搭积木了。咱们切换回“脚本”界面,首先拖动“事件”模块下的“当小绿旗被点击”积木块。
当游戏开始时,我们第一步先要设定角色的初始状态,咱们使用“外观”分类下的“将造型切换为_”积木块,通过这个下拉菜单选择“玩家”造型。然后再使用“外观”分类下的“显示”积木块让它显示出来(因为有可能在上一局游戏结束时,这个角色因为死亡被隐藏了,所以这里要先让它显示)。
接下来我们需要在“数据”分类下建立两个变量,一个命名为“分数”,一个命名为“玩家生命值”,并把分数设置为0,生命值设定为100。
参考如图操作,分别新建“分数”变量和“玩家生命值”变量:
使用“数据”分类下的“将变量
的值设定为”积木块,分别将分数变量设置为0,生命值变量设定为100。
我们希望让玩家飞机在“存活状态下”跟随鼠标移动。首先需要使用一个循环来进行逻辑控制,我们选择“控制”模块下的“重复执行直到_
”积木块。
“直到”的条件是什么呢?我们想一想哈:所谓“玩家存活”,不就是“玩家生命值大于零”吗?那循环结束的条件,不就是“玩家生命值小于零或等于零”嘛。
我们使用“数字和逻辑运算”分类下的“”、“<”、“=”积木块,搭出如下条件“( < 0 ) 或 ( = 0 )”:
然后在“数据”分类下找到“玩家生命值”变量,把它拖入条件的两个空格中。
循环过程中,需要让角色跟随鼠标移动,我们可以使用“移到”的积木块,在积木块的下拉菜单中选择“鼠标指针”。
这样飞机就会跟随鼠标移动啦~
接下来我们来思考,当玩家飞机死亡之后,循环结束了,需要执行什么呢?
我们很容易想到“将造型切换为破坏的画面”,然后“隐藏”。
先这么做,使用“外观”分类下的“将造型切换为_
”,选择“破坏”造型,然后再使用“外观”分类下的“隐藏”积木块。
但是这么做会出现一个问题:造型刚切换,马上就隐藏了,玩家根本来不及看见这一幕。我们可以使用“控制”分类下的“等待秒”,填写“0.3”就行,将这个积木块插入“切换造型”和“隐藏”的中间。最后还要在“隐藏”积木块后面设置“控制”分类下的“停止全部”积木块,让整个游戏停止。
这样玩家的飞机角色就制作好啦~
【玩家子弹】
接下来我们制作“玩家飞机的子弹”角色。
第一步同样是“从本地文件中上传角色”,选择“玩家子弹”图片(如下图),然后按刚才玩家飞机角色的相关步骤,调整角色大小,设置角色中心点。这里小编也不罗嗦啦。接下来直接来搭建代码。
首先是拖动“事件”分类下的“当小绿旗被点击”积木块。大家都很熟悉这一步,小编不截图啦,为大家节约一些流量~
然后我们先让角色“隐藏”,在“外观”分类下找到“隐藏”积木块,接上去。如图:
接下来我们要思考:咱们的角色会发射很多很多的子弹,怎么办呢?我们可以使用Scratch的“克隆”机制,让子弹角色不停的克隆自己,诞生出很多很多的子弹。
首先我们选择“控制”模块下的“重复执行”积木块,然后在重复执行的内容中,拖入“等待
秒”积木块,改成“等待0.3秒”。相当于让它每隔0.3秒循环一次。
接下来最关键的就是拖入“克隆”积木块,选择“自己”。让它每次循环都克隆一颗子弹。
在角色克隆自己之后,我们要通过“控制”模块下的“当作为克隆体启动时”积木块,对它的克隆体进行控制。
子弹在出现时,需要移动到玩家飞机的位置。我们先使用“动作”分类下的“移动到__
”积木块,选择“玩家”角色。
接下来我们使用“外观”分类下的“显示”积木块,让它显示出来,大家对这个积木块已经很熟悉了吧,刚才才用过,此处就不重复写了。
然后我们需要让子弹重复向上移动,直到上部边缘。我们先使用“控制”分类下的“重复执行直到__”积木块。
在“直到”后面的条件中,我们选择“侦测”分类下的“碰到
”积木块,选择“边缘”。
在循环过程中,每次让子弹的y坐标增加2,使用“动作”分类下的“将y坐标增加”,填入数字“2”。
当子弹碰到边缘后,从循环中出来,我们要让子弹消失。我们选择“控制”分类中的“删除本克隆体”积木块。
咱们来看看效果吧~
【敌人角色】
接下来需要做“敌人”角色,像刚才制作“玩家”角色一样,从本地文件中上传角色,选择“敌人”图片(如下图),点击上传。然后调整角色大小、设置角色中心点。详见刚才“玩家”角色的操作截图。
和子弹一样,敌人飞机同样需要“不停的克隆自己”。我们直接复制子弹的代码,把它放到“敌人”的代码中去,再进行修改。咱们把复制到“敌人”里的积木块,等待时间改成“0.8”秒,克隆的对象改成“自己”。
接下来,我们拖出“控制”分类下的“当作为克隆体启动时”,来搭建具体的敌人飞机克隆体的控制积木。
咱们首先要让飞机移动到屏幕上方边缘的任意位置出现。也就是说,我们要让它的Y坐标等于180,X坐标则是从-240到240的任意数值,然后让它“显示”出来。
先选择“动作”分类的“移到x:
y:”,将y值填入180。
接下来使用“数字和逻辑运算”分类中的“在
间随机选择一个数”,填入“-240”和“240”,把它拖入“x”后的空格中。
移动到位置后,我们让它显示。使用“外观”分类下的“显示”积木块。此处不再赘述。
我们希望它从顶部往下移动,移到底部,这样我们可以让它进行循环180次,每次y坐标减小2个单位。
使用“控制”分类下的“重复循环
次”,填入180。
接下来使用“动作”分类下的“将y坐标增加”,填入“-2”。
在循环结束后,我们需要让敌机消失,可以选择“控制”分类下的“删除本克隆体”。
咱们可以先看一看效果:
大家发现,敌人的飞机会随机出现,然后往下飞行,飞到底部就消失了。
接下来需要处理的就是敌机“被玩家子弹击中”或“撞到玩家飞机”的情况。
我们拖入两个“如果
那么”积木块到循环里面(每次循环都要判断,所以在循环里面)。
在“侦测”分类中分别拖出两个“碰到?”,放到两个“如果那么”的中间,分别通过下拉菜单选择“玩家”和“玩家子弹”。
无论是碰到玩家还是碰到子弹,敌机死亡,都可以得分。所以我们拖出两个“数据”分类下的“将变量的值增加”,选择“分数”,数值填入“1”。
当敌机碰到玩家时,玩家的生命值会减少。我们选择“数据”分类下的“将变量的值增加”,选择“玩家生命值”,数值填入“-10”,拖入“如果碰到玩家那么”的里面。
在处理完分数和生命值之后,我们需要让敌人消失,可以选择“控制”分类下的“删除本克隆体”,分别拖到两个“如果__那么”的里面。
这样敌机也制作完啦,我们看看效果吧~
最后我们更换背景图片,就完成了今天的“飞机大战V1.0”~
再来看看完成品的效果吧~~
下节课,小编将继续带大家完善“飞机大战”游戏,增添更多有趣的功能,制作V2.0版本~