友情提示:380元/半年,儿童学编程,就上码丁实验室。
不知道大家有没有这样的经历?在学校电脑机房上机时,电脑不能上网,而电脑里除了扫雷和纸牌外只有一个游戏,那么这个游戏就会变成班上最流行的游戏。这次介绍给大家的就是当时风靡全班的游戏——猫狗大战
游戏链接:猫狗大战
游戏中有一只小狗和一只小猫,头顶是各自的血条,玩家控制小狗,抛出骨头,砸向另一边的小猫;电脑控制小猫,抛出鱼骨,砸向小狗。谁的血条先被消耗完,谁就输了。游戏方式为回合制。
为了不被动物保护人士殴打,这次我们把游戏改成抓小偷的游戏。
点击链接试玩:抓小偷游戏(需PC端打开)
因为上周录制的视频用了如上图的舞台背景,导致GIF图片过大,无法上传到微信公众号上,导致上周本系列教程停更,为了阅读体验,以下教程只好删除舞台背景。
游戏制作步骤:
-
登入好好搭搭网站,打开“创作模板——Scratch”
-
这次终于不用删除可怜的小猫了,这次我们选他为主角
3.编写小猫脚本1——初始化小猫的大小和位置
4.编写小猫脚本2——鼠标选中小猫并长按实现视觉反馈
鼠标左键按住小猫,隐含了两个条件,即鼠标的坐标在小猫角色图片的坐标范围内,和鼠标左键被按下。
鼠标移到舞台区域内,右下角会显示鼠标此时的坐标值。
将鼠标移到小猫角色的坐标范围内,记录X坐标的最小值和最大值、Y坐标的最小值和最大值。本例中小猫的X坐标范围为[-220,-167]、Y坐标范围为[-125,-65]。脚本如下:
5.新建角色——小球
新建一个用于击打小偷的小球。
6.编写小球脚本1——初始化小球的大小和位置
7.新建角色——蓄力框
蓄力框需要绘制。
8.新建角色——蓄力条
蓄力条同样需要绘制。
9.编写蓄力框脚本1——初始化蓄力框位置
应该固定,不能乱跑,所以需要固定蓄力框的位置
10.编写蓄力条脚本1——初始化蓄力条位置
蓄力条的位置和蓄力框的位置一样,需要初始化
11.编写蓄力框脚本2——按住小猫时显示,松开鼠标隐藏
猫狗大战游戏中的蓄力框和蓄力条是按住小狗时才出现的,松开便消失了,所以本例中也实现这样的效果。
按住小猫的判定与小猫角色的脚本相似,为了节省工作量,可以将脚本复制过来。
在小猫脚本的基础上做个修改,实现按住小猫蓄力框出现,松开鼠标左键蓄力框消失。
12.编写蓄力条脚本2——蓄力条变长效果
蓄力条的变长需要用到“画笔”相关指令。
“画笔”类目中的“图章”指令,可以让角色的图样印拓在舞台上。
使用“图章”指令和“移动”指令,便可实现蓄力条变长的效果。
“清空”指令可以将所有留在舞台上的图章清除。
从演示效果看出以上程序还不够,蓄力条应该和蓄力框一样在按住小猫时出现,其他时候消失,同时,每次按住小猫开始时,位置应该从蓄力框最左侧开始变长。所以脚本应为:
13.编写小球脚本2——小球的抛出运动
小球被抛出的轨迹应该是抛物线,但是抛物线的方程过于复杂,大家可以尝试的去挑战。本例中用圆弧代替。
现实中,绘制圆形最简单的方法是用圆规绘制,首选确定圆的半径,再选取圆心,最后转动圆规,绘制圆形。
用程序绘制圆形,最简单的方法是用正多边形逼近的方式绘制圆形。
为了讲解如何绘制一个圆形,使用空的模板,插入一个角色“Pencil”,配合“落笔”指令,绘制多边形。
先绘制我们比较熟悉的正四边形:
绘制正十边形
正十边形是不是比正四边形更像一个圆了?如果绘制正30边形呢?
为了画笔轨迹不超出舞台范围,边长改为30
这个正30边形是不是已经很像一个圆了?
会到小球的脚本,小球从小猫手中抛出。首先有一个初始角度,之后每移动几步,角度向右转动几度,这样便可以形成一个圆弧的轨迹。
14.编写小球脚本3——加入力量值变量
游戏中的轨迹是与蓄力的多少相关的,所以需要增加一个“力量”变量。
(1) 力量值可以直接作为抛出轨迹正多边形的变长;
(2) 角度值随力量值变化,即当力量值为100时,角度值为20;当力量值为0时,角度值为80。所以角度值=80-(60/100)×力量值。
15.新建小偷角色
角色库中没有合适的小偷形象,感谢我们的美女画师为本游戏原创设计的小偷角色。
得意的小偷
被发现的小偷
扑街的小偷
据说小偷的形象是以笔者为原型的,大家自己脑补,哈哈~
16.编写小偷脚本1——初始化小偷大小位置和造型
将小偷角色调整到合适的大小,移动到舞台右侧街道上,造型为“得意的小偷”。
17.编写小球脚本4——广播消息
小球如果击中小偷,小偷角色是可以用“碰到…”模块判断的,但是小球如果没有击中小偷,是因为没有击球还是击球之后没打中,就不能用“碰到…”模块来判断了。
Scratch为不同角色之间的信息传递提供了“广播”的相关模块,位于“事件”类目中。
“广播(信息)”指令运行一次,便发出一次广播,其他角色脚本中由“当接收到(广播信息)”事件触发的脚本便运行一次。
所以,当小球碰到小偷时,发出一次“击中”广播;当小球碰到舞台边缘时,发出一次“没击中”广播。小球的脚本变为:
18.编写小偷脚本2——接收广播消息
如果小偷被击中,造型切换为“被发现的小偷”,说“哎呀”1秒钟,之后造型切换回“小偷”。如果小偷没被击中,造型不变,说“没打中!”1秒钟。
19.编写小偷脚本3——血量设定
反复这样打中和没打中,着实无趣,为了让美女画师画的“扑街的小偷”不浪费,必须要让小偷扑街。
本游戏设置小偷有3滴血,被打中一次血量减一,当血量为0时扑街。则小偷被球击中部分的脚本变为:
20.编写小偷脚本4——随机移动
没有小偷会傻到一直站着不动挨打。所以每击中一次,随机的换个位置,这游戏会变的更有趣。
让小偷不论击中还是没被击中,都换一个地方,让其在舞台右侧街道移动。
21.编写小偷脚本5——小偷逃跑
游戏编到现在,游戏的结局是一定会胜利的,小偷根本没有赢的可能。
那么设定一个变量——击球次数,当击球次数超过5时,小偷逃跑成功!则没击中部分的脚本变为:
击中部分的脚本中也要添加一条“变量 击球次数 的值增加1”的指令。
到此,本游戏基本框架编写完毕。
大家可以试着在本游戏的基础上去做进一步的挑战,如小偷角色的大小按透视原理近大远小、小球抛出按真正的抛物线轨迹运动而不是圆弧轨迹运动,等等。
欢迎在留言区回复您宝贵的意见。提出您的创意,我们帮你实现!