【scratch游戏制作案例及教程】经典坦克大战

还记得曾经经典的坦克大战吗?还记得怎么玩吗?很有趣吧,玩这款游戏能勾起你的回忆哦!今天就让编程总动员(id:bczdywx)教大家怎么来制作这款经典的小游戏

有一天,突然想用scratch制作小时候玩过的坦克大战,打开scratch就搞起来。

【scratch游戏制作案例及教程】经典坦克大战-少儿编程网

先上一张图,因为时间问题,就制作了一个关卡,如果小伙伴们想完善,只需要在链表中添加砖块的坐标。

如果想现在体验一把,这是作品的链接: https://pan.baidu.com/s/1pKNcK9H 密码: vq6t

好,下面就来讲用scratch制作经典坦克大战的流程,以及制作过程中遇到的问题和一些小技巧。

添加场景

需要添加的场景,是图片中的黄色砖块、白色砖块、草丛、老家、坦克(玩家坦克,敌方坦克,在没有写逻辑时,它们是一样的),还有看不见的子弹。

在网上找素材,PS。

1.添加老家

【scratch游戏制作案例及教程】经典坦克大战-少儿编程网

将舞台场景分成13*13的方格,这是经典坦克大战的场景划分,老家位于底部中间的位置,在场景中的坐标为(x:0,y:-165),将老家大小调整成一个方格的大小,因为素材不同,大小设定也不同,我的素材,是将角色的大小设定为80。

2.添加黄色砖块

【scratch游戏制作案例及教程】经典坦克大战-少儿编程网

这是一块砖块?其实,这是由两块【scratch游戏制作案例及教程】经典坦克大战-少儿编程网这样的素材拼接在一起,为什么要这么做,后面会分析。

怎么添加呢,场景中那么多黄色砖块,难道要添加那么多个素材进来?使用过scratch的小伙伴脑海里都闪过两个字,克隆,是的,我们只需要添加一块【scratch游戏制作案例及教程】经典坦克大战-少儿编程网

这样的素材进来,然后通过克隆,让场景中出现很多黄色砖块。

克隆多少次,克隆完了怎么放到对应的位置,这里需要用到数据模块中的列表,新建一个列表,取名一定要有意义,看到名字就知道这个列表的用途。

列表新建好了,需要将所有黄色砖块的坐标添加到列表中。添加坐标,可以封装在一个方法中,也就是更多模块中,新建功能块,取名,要有意义。新建功能块可以让代码清晰整洁。还可以右击定义模块,对其进行编辑,选项里面有添加一些参数,该功能块就可以重复使用,减少代码量。

功能块新建好,开始将黄色砖块坐标添加到列表中。我这里是一列一列的从底部向上添加,这样可以使用for循环,减少代码量。

【scratch游戏制作案例及教程】经典坦克大战-少儿编程网

这是添加坐标的部分代码(完整代码可在作品链接中下载),这里说说为什么要新建砖块长、砖块宽、底部员坐标这三个变量。其实它们是常量,至始至终它们没有改变过。那么,它们有存在的意义吗?

答案是有的,为什么?这需要问产品经理。当然,我们现在就是这游戏的产品经理。这三个变量,在添加坐标的时候,使用了近百次。突然,我们发现砖块长不是36,或者你想把场景中的砖块变小一些。你只需要改变这三个变量,而不需要去更改下面的上百行代码。

坐标添加好了,那么克隆的次数就知道了,也就是列表的长度。

【scratch游戏制作案例及教程】经典坦克大战-少儿编程网

为了统一化管理砖块,我们将本体隐藏,场景中的砖块都是克隆出来的。这里的编程是存放坐标x的列表,动员是存放坐标y的列表,它们是一一对应的。

3.添加白色砖块【scratch游戏制作案例及教程】经典坦克大战-少儿编程网和草丛【scratch游戏制作案例及教程】经典坦克大战-少儿编程网的操作和添加黄色砖块一样,以后想拓展更多的关卡,只需要改变这三个素材中的坐标列表。

4.添加坦克【scratch游戏制作案例及教程】经典坦克大战-少儿编程网(注意:在ps素材的时候,要将素材的前方改成面向右边,因为游戏中向前移动,是向右边移动)

【scratch游戏制作案例及教程】经典坦克大战-少儿编程网

这是我方坦克的位置代码,这里使用变量,仍然是为了砖块大小位置变化,坦克位置也随之变化。敌方坦克的添加方式和添加我方坦克一样。

5.添加子弹(我方的和敌方的,总共需要添加4个,注意区分开),这里添加一个球的素材,然后缩小。位置随便,因为它是随着坦克移动的。

添加代码

1.添加我方坦克代码

【scratch游戏制作案例及教程】经典坦克大战-少儿编程网【scratch游戏制作案例及教程】经典坦克大战-少儿编程网

移动的步数,上下是砖块的宽,左右是砖块长的一半,和之前添加黄色砖块对应。

添加好之后,我们就可以操控我们的坦克。但坦克是不能穿过黄色砖块,白色砖块,老家,敌方坦克,和边缘。

【scratch游戏制作案例及教程】经典坦克大战-少儿编程网

在移动的后面加上判断,也就是当触碰到这些物体时,后退回来。

【scratch游戏制作案例及教程】经典坦克大战-少儿编程网

这段代码加在移动键的下面,可以实现坦克原地调整方向,代码里的“-90”,据上下左右键后面是不一样的。

添加好之后,我们又可以操控坦克,驰骋战场。测试发现,坦克有时会卡在一些地方,过不去。因为坦克太大,于是缩小,最后问题解决了,但坦克缩小得看不清。

这里说个小技巧,添加一个素材,作为坦克的移动,圆形素材是最好的选择,将坦克的代码复制到圆形素材中,圆形素材大小随便调整,但不能太小。将圆形素材的透明度设置成100(完全透明),坦克一直移动到圆形素材上,方向和圆形素材一致,坦克素材大小就可以随便调整了。这个小技巧可以解决带有棱角素材的碰撞问题。

【scratch游戏制作案例及教程】经典坦克大战-少儿编程网

这是坦克中的代码,角色可以移动 是圆形素材中广播出的消息,每次按上下左右键,圆形素材成功移动之后,会广播这个消息。如果使用永远重复,会很浪费资源。

我方坦克还会和什么发生碰撞?对的,还有敌方子弹。碰撞之后,需要将我方坦克切换成爆炸造型。

【scratch游戏制作案例及教程】经典坦克大战-少儿编程网

这是检测我方坦克是否碰撞到敌方子弹的代码,声音现在不需要加。在制作作品的过程中,先将基础逻辑编写完,特效声音都在最后加。

2.添加敌方坦克代码

将我方坦克素材中的代码,复制到对应的敌方坦克素材中,注意坦克素材和移动的圆形素材要一一对应。调整一下敌方坦克的出现位置。那么如何将它们设置成随机移动?

【scratch游戏制作案例及教程】经典坦克大战-少儿编程网

这是敌方坦克随机移动的部分代码,其实就是随机一个值,判断这个值的范围,在什么范围内执行什么操作。注意这个值的范围要大一些,这样你可以调整它的行为,比如,让它多向下移动。

别忘了将敌方坦克碰撞的子弹,改成我方的子弹,否则敌方坦克就可以相互打架了,想想还挺有趣的。

3.添加我方子弹的代码

子弹素材移动的代码和坦克素材移动的代码一样,都是跟随着圆形素材。

【scratch游戏制作案例及教程】经典坦克大战-少儿编程网

这是我方子弹的初始代码,大小调整好,要将它隐藏,发射的时候在显示。

子弹的发射我是用克隆方式实现的,也就是发射出去的子弹是克隆出来的,而子弹本体还在随着圆形素材移动。建议:射击类游戏,子弹都采用克隆的方式,这样可以控制发射子弹的颗数,而且不影响本体。

【scratch游戏制作案例及教程】经典坦克大战-少儿编程网

这是当按下空格键,子弹发射出去的代码。这里说一下“好吧,无语是否可移动”这个变量,看到它的名字是不是觉得很奇怪,它有两个梗,它的作用和我踩的坑。

它的作用是控制子弹的颗数,想连续发射几颗,只需要将这个变量的初始值设置成几。

【scratch游戏制作案例及教程】经典坦克大战-少儿编程网

这是子弹克隆启动的代码,为什么一开始要移动18步?是为了让子弹看起来是从坦克前方打出,而不是坦克素材的正中心。

说一说这里的坑,“好吧,无语是否可移动”这个变量,一开始我是定义为只适用于当前角色,也就是局部变量,发现克隆里面虽然能使用它,但不能改变它的值。只适用于当前角色的变量,克隆里面是不能使用的。

新建变量的时候,为什么要分使用于所有角色和仅适用于当前角色?新建仅适用于当前角色的变量,使用起来,效率会更高,所以,能新建仅适用于当前角色的变量,绝不新建使用于所有角色的变量。

4.添加敌方子弹的代码

将我方子弹代码复制进去,只不过碰撞的物体要改一下。

5.老家和黄色砖块需要添加碰撞子弹的代码,草地和铁砖块不需要。

【scratch游戏制作案例及教程】经典坦克大战-少儿编程网

这是老家触碰到子弹的代码,变量“连续碰撞”是为了防止老家二次碰撞子弹,就是说,老家爆炸一次之后,就不会再爆炸第二次。很多时候都需要变量来控制作品的事件。

说说变量的类型,在scratch中,我们经常将变量当做数字使用,变量的常用类型有Int(整数型)、string(字符串型,一串字母或者汉字)、bool(两种结果,true和false)等。

以上是经典坦克大战制作过程,有任何问题,欢迎评论留言讨论。

本文链接:【scratch游戏制作案例及教程】经典坦克大战

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:少儿编程网,谢谢!^^


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

4 条评论
  • 椅子 hunni 

    这个的源码可以分享一下吗链接已经失效

    • 儿童编程
      儿童编程 

      我们这边帮您看看

  • 沙发 小崔 

    哈哈,有意思!

相关文章
“少儿编程之父”米切尔教授:我们要像在幼儿园一样学习
“少儿编程之父”米切尔教授:我们要像在…
编程少年丨余疆海:个性十足却不失温度
编程少年丨余疆海:个性十足却不失温度
为什么大家都建议学习少儿编程要从Scratch开始?
为什么大家都建议学习少儿编程要从Scrat…
孩子学完各个阶段的编程课程能够参加哪些比赛?
孩子学完各个阶段的编程课程能够参加哪…
我的孩子从来没有接触过编程,0基础能不能学?
我的孩子从来没有接触过编程,0基础能不…
【精选作品】如何通过Scratch让小猪跑起来?(内附火影粉丝巨献,必看)
【精选作品】如何通过Scratch让小猪跑起…
Scratch是由麻省理工学院(MIT)设计开发的一款面向少年的简易编程工具,是适合于全世界儿童学习编程和交流的工具和平台