【scratch游戏制作案例及教程】猫狗大战(抓小偷)

不知道大家有没有这样的经历?在学校电脑机房上机时,电脑不能上网,而电脑里除了扫雷和纸牌外只有一个游戏,那么这个游戏就会变成班上最流行的游戏。这次介绍给大家的就是当时风靡全班的游戏——猫狗大战

游戏中有一只小狗和一只小猫,头顶是各自的血条,玩家控制小狗,抛出骨头,砸向另一边的小猫;电脑控制小猫,抛出鱼骨,砸向小狗。谁的血条先被消耗完,谁就输了。游戏方式为回合制。

为了不被动物保护人士殴打,这次我们把游戏改成抓小偷的游戏。

游戏制作步骤:

1.编写小猫脚本1——初始化小猫的大小和位置

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

2.编写小猫脚本2——鼠标选中小猫并长按实现视觉反馈

鼠标左键按住小猫,隐含了两个条件,即鼠标的坐标在小猫角色图片的坐标范围内,和鼠标左键被按下。

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

鼠标移到舞台区域内,右下角会显示鼠标此时的坐标值。

将鼠标移到小猫角色的坐标范围内,记录X坐标的最小值和最大值、Y坐标的最小值和最大值。本例中小猫的X坐标范围为[-220,-167]、Y坐标范围为[-125,-65]。脚本如下:

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

3.新建角色——小球

新建一个用于击打小偷的小球。

4.编写小球脚本1——初始化小球的大小和位置

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

5.新建角色——蓄力框

蓄力框需要绘制。

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

6.新建角色——蓄力条

蓄力条同样需要绘制。

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

7.编写蓄力框脚本1——初始化蓄力框位置

应该固定,不能乱跑,所以需要固定蓄力框的位置

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

8.编写蓄力条脚本1——初始化蓄力条位置

蓄力条的位置和蓄力框的位置一样,需要初始化

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

9.编写蓄力框脚本2——按住小猫时显示,松开鼠标隐藏

猫狗大战游戏中的蓄力框和蓄力条是按住小狗时才出现的,松开便消失了,所以本例中也实现这样的效果。

按住小猫的判定与小猫角色的脚本相似,为了节省工作量,可以将脚本复制过来。

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

在小猫脚本的基础上做个修改,实现按住小猫蓄力框出现,松开鼠标左键蓄力框消失。

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

10.编写蓄力条脚本2——蓄力条变长效果

蓄力条的变长需要用到“画笔”相关指令。

“画笔”类目中的“图章”指令,可以让角色的图样印拓在舞台上。

使用“图章”指令和“移动”指令,便可实现蓄力条变长的效果。

“清空”指令可以将所有留在舞台上的图章清除。

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

从演示效果看出以上程序还不够,蓄力条应该和蓄力框一样在按住小猫时出现,其他时候消失,同时,每次按住小猫开始时,位置应该从蓄力框最左侧开始变长。所以脚本应为:

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

11.编写小球脚本2——小球的抛出运动

小球被抛出的轨迹应该是抛物线,但是抛物线的方程有点复杂,大家可以尝试,本例中用圆弧代替。

现实中,绘制圆形最简单的方法是用圆规绘制,首选确定圆的半径,再选取圆心,最后转动圆规,绘制圆形。

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

用程序绘制圆形,最简单的方法是用正多边形逼近的方式绘制圆形。如何绘制一个圆形,可以查看之前的教程《【Scratch编程教程】画圆》。

绘到小球的脚本,小球从小猫手中抛出。首先有一个初始角度,之后每移动几步,角度向右转动几度,这样便可以形成一个圆弧的轨迹。

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

12.编写小球脚本3——加入力量值变量

游戏中的轨迹是与蓄力的多少相关的,所以需要增加一个“力量”变量。

(1) 力量值可以直接作为抛出轨迹正多边形的变长;

(2) 角度值随力量值变化,即当力量值为100时,角度值为20;当力量值为0时,角度值为80。所以角度值=80-(60/100)×力量值。

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

13.新建小偷角色

角色库中没有合适的小偷形象,感谢我们的美女画师为本游戏原创设计的小偷角色。

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

得意的小偷

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

被发现的小偷

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

扑街的小偷

据说小偷的形象是以笔者为原型的,大家自己脑补,哈哈~

14.编写小偷脚本1——初始化小偷大小位置和造型

将小偷角色调整到合适的大小,移动到舞台右侧街道上,造型为“得意的小偷”。

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

15.编写小球脚本4——广播消息

小球如果击中小偷,小偷角色是可以用“碰到…”模块判断的,但是小球如果没有击中小偷,是因为没有击球还是击球之后没打中,就不能用“碰到…”模块来判断了。

Scratch为不同角色之间的信息传递提供了“广播”的相关模块,位于“事件”类目中。

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

“广播(信息)”指令运行一次,便发出一次广播,其他角色脚本中由“当接收到(广播信息)”事件触发的脚本便运行一次。

所以,当小球碰到小偷时,发出一次“击中”广播;当小球碰到舞台边缘时,发出一次“没击中”广播。小球的脚本变为:

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

16.编写小偷脚本2——接收广播消息

如果小偷被击中,造型切换为“被发现的小偷”,说“哎呀”1秒钟,之后造型切换回“小偷”。如果小偷没被击中,造型不变,说“没打中!”1秒钟。

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

17.编写小偷脚本3——血量设定

反复这样打中和没打中,着实无趣,为了让美女画师画的“扑街的小偷”不浪费,必须要让小偷扑街。

本游戏设置小偷有3滴血,被打中一次血量减一,当血量为0时扑街。则小偷被球击中部分的脚本变为:

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

18.编写小偷脚本4——随机移动

没有小偷会傻到一直站着不动挨打。所以每击中一次,随机的换个位置,这游戏会变的更有趣。

让小偷不论击中还是没被击中,都换一个地方,让其在舞台右侧街道移动。

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

19.编写小偷脚本5——小偷逃跑

游戏编到现在,游戏的结局是一定会胜利的,小偷根本没有赢的可能。

那么设定一个变量——击球次数,当击球次数超过5时,小偷逃跑成功!则没击中部分的脚本变为:

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

击中部分的脚本中也要添加一条“变量 击球次数 的值增加1”的指令。

【scratch游戏制作案例及教程】猫狗大战(抓小偷)-少儿编程网

到此,本游戏基本框架编写完毕。

大家可以试着在本游戏的基础上去做进一步的挑战,如小偷角色的大小按透视原理近大远小、小球抛出按真正的抛物线轨迹运动而不是圆弧轨迹运动,等等。

*文章为作者独立观点,不代表少儿编程网立场
发表评论

2 条评论
  • 椅子 name 

    能发源码嘛? 邮箱18516307097@163.com

  • 沙发 scratch 

    “当接收到没击中”脚本后面隐藏功能块是不是可以加一个“停止全部”?

相关文章
【精选作品】如何通过Scratch让小猪跑起来?(内附火影粉丝巨献,必看)
【精选作品】如何通过Scratch让小猪跑起…
0基础的孩子应该怎样学习少儿编程?
0基础的孩子应该怎样学习少儿编程?
学完Scratch ,孩子到底能收获什么?
学完Scratch ,孩子到底能收获什么?
适合孩子学编程的教育游戏APP有哪些?
适合孩子学编程的教育游戏APP有哪些?
编程少年丨崔少天:幼儿园里学编程的6岁男孩
编程少年丨崔少天:幼儿园里学编程的6岁…
【Scratch游戏制作案例及教程】躲子弹游戏
【Scratch游戏制作案例及教程】躲子弹游戏
我还没有学会写个人说明!