当前位置:首页 > 编程实例 > Scratch少儿编程:怎样制作保卫萝卜小游戏(二)

Scratch少儿编程:怎样制作保卫萝卜小游戏(二)

项目简介

在少儿编程网上一讲做了保卫萝卜的第一讲,主要介绍了如何生成地图以及如何做妖怪的轨迹,用的主要是自定义积木和克隆的技术!今天我们开始要放炮塔打妖怪了。

360截图177202228810497.png

项目重点

看到没有,今天的程序要点有这几个:

1:炮塔部分,其中的关键点是炮塔的炮口能始终跟着第一个妖怪在变化。

2:子弹部分,子弹是有射程的,也就是妖怪进入到了射程范围,子弹才会发射。妖怪被杀光或者是离开射程范围子弹就会停止发射。

3:妖怪部分,妖怪被子弹打到会消失。

课外知识

链表:在scratch里也翻译成列表。也是变量的一种,但是是一组变量。相当于一个队列。通常用在同一类的变量组。

举个例子吧,比如今天天气如何?晴天?阴天?多云?雷阵雨?等等,这些就可以看成一组变量,因为都是描述天气的。再比如今天是星期几?周一到周日,7个变量,也可以看成有关周几的一组变量。这样的例子很多,比如都有哪几门功课?公园里都有哪些花?家里有哪些家具?这些都可以看成一组组的变量。

开发思路

我们来看少儿编程网程序部分:

首先是地图发生了一些变化,小编把整个地图都填满了方块,一个是实心的,也就是通道,空心的位置可以放置炮塔,或是一些其他的物体。另外上次讲座里面方块不是正方形,是个长方形,编程的时候就会看着复杂一些,小编这次把它调整成正方形了,这样大家好看懂程序。

img

pic1.png

pic2.png

就是先用造型2画一遍,然后再用造型1画轨道。


pic3.png

这段代码不用讲了,很简单,可以在少儿编程网找到相关案例


我们主要看炮塔的程序。

炮塔的程序主要有两个重要部分:

1:始终面向第一个妖怪。

2:在妖怪接近到一定距离开始发射子弹。


如何做到面向妖怪呢?这里面就有点难度了,因为我们不是面向妖怪这个角色,而是面向妖怪的克隆体,Scratch可没有这个命令,也就是没有办法直接面向克隆体,那怎么办呢?CC想了个办法,安排了个新的角色,ball,也就是小球,让这个角色始终跟着第一个克隆体,这样,炮塔只要面向这个ball的角色,那么不就始终面向妖怪的克隆体啦。

而射程这块相对简单,也就是用炮塔的x和y坐标,跟妖怪的x和y坐标进行计算。坐标这块基础课程已经有了。很简单,x的坐标差的平方加上y的坐标差的平方就等于两个点之间距离的平方。跟计算直角三角形一样。如果距离的平方小于30000,那么就在射程内了。就发射子弹。

pic4.png

这个隐藏的ball角色就是用来做炮塔的瞄准目标了,我们看看它的代码:

imgpic5.png

很简单,只要它始终移动到妖怪克隆体的坐标上就行了。看到没,这两个角色的关键点都是确认好妖怪x和妖怪y的数值,也就是第一个妖怪克隆体的动态坐标。这个我们一会集中讲。


先看看子弹的代码:

imgpic6.png

子弹的造型很酷吧,小编在网上下的,同时一点点把白色的背景擦掉的,还是花了点小功夫。


子弹的代码大家应该能看懂,如果跟着少儿编程网的小编一直学,又平常自学的朋友,应该对子弹的做法不陌生了。小编做的复杂的原因是在细节的处理上。


比如:1、子弹碰到舞台边缘要消失。2、子弹碰到妖怪要等待一点点时间再消失,是因为妖怪检测到子弹的碰撞也要消失,所以留一点点时间差。3、克隆体先移动几步再显示是让子弹看起来都是从炮塔的炮口出来的,而不是从炮塔的中心点出来。

pic7.pngimg

好了,其他的几个角色讲完之后,最关键的就是妖怪的角色的程序了,我们来看看跟上次的程序有什么不一样。

imgpic8.png

看,复杂了不少。怕大家看不清,我们一点一点来看。


这个妖怪的部分的程序跟上一讲的主要区别就是要确定妖怪克隆体的位置,也就是活着的第一个妖怪的坐标,记得,是活着的,死了的妖怪就不需要了。那么怎么实现呢?在这里小编引入了链表的概念,通过链表把每一个克隆变量的编号记录下来。而要攻击的目标妖怪始终是链表中的第一个妖怪。一旦这个目标妖怪被消灭掉,这个克隆体要消失,同时链表中对应的记录也要消失。然后目标始终是链表中第一项对应的克隆体。大家明白这个思路没有?没明白多看几遍,自己好好想想这里面的逻辑。


我们来一段一段看代码,首先是涉及克隆体链表的部分,具体内容可以参照少儿编程网的说明案例。我们为了区分每一个克隆体,在这里引入了私有变量‘妖怪编号’,对于这部分如果不清楚的可以查小编之前有专题将克隆体编号的帖子。通过妖怪编号,我们就可以区分开每一个克隆体。


同时创建一个妖怪队列的链表,把所有的妖怪编号存了进去,代表每一个妖怪克隆体。

pic9.pngimg

其他的程序,上一讲都讲过了,不再重复,关键看克隆体的部分。


首先是碰到子弹的情况,碰到子弹要删除克隆体,那么在删除克隆体前,要做的事情是:

  1. 把这个克隆体在妖怪队列里对应的那一项删掉。

  2. 将目标妖怪设定为妖怪队列里面的第一个。

  3. 如果这是最后一个妖怪,也就是妖怪队列里就剩一项了,那么把炮塔的方向设定到妖怪的起点。以准备消灭下一波妖怪。

如果没有碰到子弹,那简单了,就是先判断一下,你这个克隆体是不是目标妖怪,如果是,那么就把你的坐标给到妖怪x和妖怪y。确定目标妖怪的位置。

imgpic10.png

其他的小细节小编就不一一介绍啦,比如开场的倒计时画面,无非就是几个造型的变换。很简单。

结尾部分

好了,今天的课程就讲到这里,下次少儿编程网小编会进一步跟大家一起设计多个炮塔的情况,大家可以先自己考虑一下,如果出现多个炮塔,那么这个程序的逻辑又会发生什么变换呢?


除特别注明外,本站所有文章均为趣味编程网-少儿编程_儿童编程学习班教育指定趣味学习网站!原创,转载请注明出处来自http://airboxs.com/post/14.html