Day44 ( 游戏设计 ) Flappy Bird

Flappy Bird

教学原文参考:Flappy Bird

这篇文章会介绍,如何在 Scratch 3 里使用连续背景、变数、定位、座标、重复、侦测碰到其他角色...等积木,实作 Flappy Bird 小游戏。

相关文章参考:定位重复侦测碰到其他角色

角色设定

在角色编辑区,删除猫咪角色,加入「飞行的猫咪」角色,接着使用「上传」,加入一张连续背景的图片和一张水管的图片,上传後将背景命名为「背景-01」和「水管」 ( 参考:Scratch 角色设定 )。

连续背景可先使用范例图片:连续背景水管

Scratch 3 教学 - Flappy Bird

积木程序原理 ( 猫咪 )

Flappy Bird 的游戏方式,是在按下键盘空白键时,让角色不断在舞台中跳耀,首先将猫咪移到图层最上层、定位到舞台正中间,接着新增一个名为 y 的变数,使用「重复无限次」、「如果...那麽...否则」积木,判断是否按下空白键,如果按下空白键,就设定 y 为 10,如果没有按下空白键,就让 y 模拟重力加速度不断改变 -2,最後透过角色 y 的改变,就能够做到按下空白时,猫咪不断往上跳,没有按空白,猫咪往下自由落体的效果。

Scratch 3 教学 - Flappy Bird

完成後,点击绿旗,不断按压空白键,就可以看到猫咪在画面中上下跳动。

Scratch 3 教学 - Flappy Bird

接着为猫咪角色新增第二组绿旗点击程序,使用「重复无限次」、「如果...那麽...否则」积木,判断碰到舞台边缘或碰到水管角色,就让猫咪说出「呀!!!!」的文字。

Scratch 3 教学 - Flappy Bird

完成後,点击绿旗,除了可以看到猫咪在画面中上下跳动,碰到舞台边缘的时候,猫咪就会说话。

Scratch 3 教学 - Flappy Bird

积木程序原理 ( 背景 )

将第一张背景图定位在舞台的左边,定位座标使用 (-238,0)使用 -238 的原因为了和第二张背景图接合 ( 如果刚好 240 可能会造成移动切换时出现空隙 ),接着使用重复无限次判断图片位置,如果图片的 x 座标移动到小於 -462,就让图片的 x 座标移动到 462

宽度 480 的图片,抵达左右边缘极限的座标为 -465 和 465,此处使用的 -462 和 462,是针对这张背景图片所调整出不会有空隙的数值,如果使用是不同的图片,可能有些微的变化。

Scratch 3 教学 - Flappy Bird

在角色区域,复制这个背景成为一个新的角色,修改名称为「背景-02」,这样程序就可以一并复制。

Scratch 3 教学 - Flappy Bird

将「背景-02」定位在舞台的右边,定位座标使用 (238,0),其他程序不需修改。

Scratch 3 教学 - Flappy Bird

完成後,点击绿旗,背景就会不断往左移动,看起来就像猫咪不断往前飞。

Scratch 3 教学 - Flappy Bird

积木程序原理 ( 水管 )

因为画面中会不断出现水管,所以水管角色采用「分身」的方式进行,一开始先隐藏本尊,然後每隔一秒建立分身,就能够让水管每隔一秒不断出现。

Scratch 3 教学 - Flappy Bird

分身建立後,显示分身,新增一个「位置」变数,随机设定为 1 或 2,如果是 1,将分身定位在右边上方,如果是 2,将分身定位在右边下方 ( 高度使用 200~240 的随机数,让出现的高度不相同 ),接着使用「重复无限次」、「如果...那麽...否则」积木,让水管不断往左移动,当移动到最左边时,就删除分身

Scratch 3 教学 - Flappy Bird

完成效果

所有角色的程序都完成後,点击绿旗,就能够开始进行猫咪的 Flappy Bird 的游戏。

Scratch 3 教学 - Flappy Bird

范例解答

范例解答:Flappy Bird

延伸练习

如果已经熟悉了Flappy Bird的原理,还可以尝试更多好玩的作法:

  • 加上「计算碰撞次数」的机制。( 解答 )
  • 加上「计时」的机制。( 解答 )

关於我

大家好,我是 OXXO,是个即将迈入中年的斜杠青年,如果对我有点兴趣(笑,可以与我联系,一起来做点有玩又有创意的东西吧!


<<:  # Day29--在某些commit之间再加些commit:我就是欲求不满,我就是强迫症!

>>:  Day44 ( 电子元件 ) 触碰开灯 ( 类比讯号 )

灵异现象 - 我改了档名它就换了一个档案格式耶

灵异现象 - 我改了档名它就换了一个档案格式耶 Credit: 乔瑟夫ChillSeph 灵感来源:...

[NestJS 带你飞!] DAY24 - Authentication (下)

上一篇已经处理好注册与登入的部分,但一个完整的帐户机制还需要包含 登入後 的身份识别,为什麽登入後还...

见习村27 - First non-repeating character

27 - First non-repeating character Don't say so mu...

资安学习路上-网站常见漏洞与 Injection的爱恨情仇4

SQL Injection 承接上次所提,透过万用字串' or 1=1--,可不须验证,盗用其他人帐...

[Day 4] -『 GO语言学习笔记』- GO语言架构介绍

如本日主题,今天要来介绍一下Go语言的程序码架构,以下内容摘录自『 The Go Workshop ...