哈喽,大家好,我们今天要做一个打僵尸的小游戏,那我们来看一下在做这个游戏之前,我们需要做一个怎样的准备工作。 首先我们看到我们的角色列表区呢,他需要三个角色,一个主角,一个僵尸,以及主角的子弹。我们来看一下他的造型啊,那老师的主角呢是画成这样的,老师 觉得啊,用原型当做小人啊,比较像像一个人。所以说你们如果小朋友想去呃制作的话,你们可以跟老师不一样, 你们可以发挥自己的想象力去创造一个属于你们自己的主角。那么僵尸的话,他这个角色造型啊,我设计成跟主角是一样大小的,这样一会看起来会更加合理一点。所以说如果说 一样的,你们可以发挥自己们想象力去制作你们属于你们自己的主角和僵尸啊。最后一个就很简单,就是子弹啊,同样的子弹的造型也可以根据你们自己的想象力去制作。那我们来看一下主角的任务, 主角的话他需要完成什么的任务呢?上下左右移动,包括呢,他会面向你的鼠标啊,进行一个发射啊, 是他的枪头啊,始终会指着你的鼠标,对不对?让我们来看一下,在开始的时候按下小绿棋之后,那我们要给主角呢定一个位置,那主角我要我是定在了呃左边的中心点的位置,所以呢,我是定的 这个坐标,这个坐标呢也是你们根据自己喜欢的位置,他的出生点可以自己进行一个改变, 好重复循环。那我们知道枪头要始终啊面向我们的鼠标指针,所以我把这个面向鼠标指针呢放在了重复循环里。 接下来是很简单的,如果按下上键,那么将 y 坐标增加二,按下下键啊,将 y 坐标增加负二, 如果按下右键啊,将 x 坐标增加二,如果按下左键,将 x 坐标增加负二啊,这个我们都知道,上下移动呢,改变的是 y 坐标左右移动,改变的是 x 坐标 右边。这段程序有什么用啊?我们建立了一个变量,叫做主角的血量,这个主角的血量就是我们主角拥有的血量,我的初始值呢设为了十,那你们可以 根据自己的难度啊,进行一个调整。那如果碰到了僵尸啊,碰到了僵尸,我们就会将主角的血量呢减小一, 那么我放了一个音效啊,放了一个音效,然后呢等待零点二秒,一定要等待个时间,如果不等待时间的话会怎么样?一碰到僵尸,他就会疯狂的减小血量啊,导致啊一瞬间就死掉了,所以说这个等待时间是很有必要的。 我们知道计算机他运行的速度是非常快的啊,你碰到僵尸之后,他在那一秒内就运行了非常多次,所以你的血量会减到,呃,非常小,非常小啊,导致出现一些不必要的 bug。 那么最后如果血量小于一了,那么我们停止全部脚本,这个时候你已经输掉这局游戏了啊,所以停止全部脚本。那我们来看一下僵尸的程序有什么? 主角程序到这里了,僵尸的程序,僵尸的程序,我们用到了一个克隆体的概念,他的本体是不需要做什么事情的,本体呢,是隐藏的本体,唯一要做的事情就是不断的去克隆自己啊,我是每隔一秒克隆出了自己, 然后呢,我想让每一个克隆出来的僵尸呢?嗯,有五滴血,就说你需要攻击他五次他才会消失,所以呢,我建立了个僵尸血量这个变量,那么建立这个变量的时候小朋友们一定要注意的是什么? 建立变量的时候一定要点上,仅适用于当前角色啊,仅适用于当前角色啊,如果你没有点上的话会出现 bug 的啊,仅适用于当前角色好,当作为克隆体启动之后,我们首先让他定位,我不想让他, 他就说有可能说如果说你定位在随机位置,这个僵尸有可能一出现啊就出现在什么你主角的位置啊,这样的话有点不太合理啊,一出现就把你的呃主角攻击到了,那就不行。所以说呢,我攻我让他出现的有一个区域,就是说在右边这一小半区域, 所以我将它的 x 坐标呢定位在了六十到两百之间的随机数, y 坐标呢,定位在那个负一百五到一百五之间的随机数。好出现之后出现,出现一定要放一个显示, 然后重复循环。我们知道僵尸要干什么来攻击我们的主角,所以他要始终面向我们的主角进行一个移动,那又不能移动的太快啊,这样我们就攻击啊,攻击不死他,他就就已经到达我们主角的位置了。所以说我每次移动了两步啊,始终面向主角移动两步,这个步 也可以随随着你们自己设计的火力啊进行一个调整,如果碰到子弹,如果碰到子弹,我们知道僵尸要扣血,对不对?僵尸要扣血,每次扣一滴血。然后呢,老师放了一个音效, 音效可以根据你们自己喜欢自己更改啊,我这里还放了一个,就是在这里为了避避免跟旁边的程序进行一个呃 冲突,我就放在旁边了,就是当作为客轮内启动时重新玩。如果碰到子弹时候,我还有一个东西要变,就是说攻击到之后,我的亮度产生了变化,就特效上发生了一些变化,让你感觉到啊,这个僵尸我已经被攻,已经被攻击到了。那什么呢? 我刚开始出现的时候,克隆体出现的时候,我的特效是零,如果碰到子弹了啊,我将这个亮度呢,变成三十啊,零点 一秒钟之后又恢复原状啊,又将亮度特效设为的零啊,这是让我们的僵尸啊,被攻击到之后有一个特效的转变。 最后啊,如果说这个僵尸小于了一,就是血量小于了一啊,我们就可以把它删除掉了。 那如果说,呃,不设置任何的限定的话,这样是一个无尽版的游戏。所以说呢,老师不想让这无穷无尽的去攻击这个僵尸,我给了一个目标的僵尸数量,于是我又建立了个变量,叫做目标僵尸数量, 那这个目标僵尸数量,也就是说我们需要攻击的僵尸的数量,我设定了三十,比如说,呃,杀完三十个僵尸之后,我们的游戏就结束了,就你取得胜利了,那这个三十也是同样的,根据你们小朋友 自己喜欢的啊数量去设定,那么我们僵尸血量小于一的时候,目标数量叫减一,那么三十就会减一,一直到什么时候呢?直到如果目标 僵尸数量小于一了,说明你杀完所有的僵尸了,叫停止全部脚本,那这个游戏你就胜利了。那我们还有一个程序没有讲的就是子弹,子弹怎么被发射出来?看一下子弹程序,子弹比较简单, 本体一样,不需要做任何事情,他要做的事情就是去克隆住自己,但是呢,他跟僵尸不一样的就是他不是主动的在克隆自己,而是说 你需要按下某种键啊,那老师设定了按下的是啊,鼠标键啊,如果按下鼠标,那么克隆自己这个火力呢?根据你这个等待的时间,如果说你呃时间越短, 你这火力就会越越越大,如果说你时间越长,你的火力就会越小。嗯,我是零点一秒,因为老师僵尸出现的速度也比较快,所以零点一秒啊,当这个子弹被克隆出来之后 啊,我有个子弹发射的声音啊,子弹发射声音你们可以自己去更改,然后呢,要知道这子弹要从哪里出现?因为我们是发射子弹,所以我们的子弹一定要从主角身上啊,主角身上,所以定位到主角一道主角。 然后呢,因为我们的主角啊,他始终呢是面向我们的鼠标指针的啊,如果说我们的主角他不是面向鼠标指针的,我们就要用到这个了,用到这个让他面向主角的 啊,方向的方向啊,因为啊,主角是面向鼠标指针的,所以我们不需要用到这个了,我们只需要把字单一按面向鼠标指针就可以了啊,让他面向鼠标指针 进行一个发射啊,定位好之后就可以让子弹显示了,宠物循环移动十步,这个十步就是你子弹发射的一个速度啊,他的移动过中的那个速度,如果碰到舞台边缘啊,子弹如果打中了舞台边缘,需要消失掉, 如果碰到僵尸啊,等待零点零一秒删除子可能体,这个等待零点零一秒很必要,因为我们知道子弹碰到僵尸之后啊, 僵尸需要消失,子弹也需要消失啊,如果不放这个零点零一秒呢,有可能子弹先消失了,僵尸判定不到碰到子弹啊,有可能僵尸先消失了, 那个子弹碰不判定不到碰到僵尸啊,会导致出现不必要的 bug, 所以这个零点零一秒一定要放上啊,粘住此刻龙体,那么这个游戏啊,就简简单单的就做完了,小朋友们学会了吗?
粉丝260获赞1943

僵尸功能完成了,一出来就感受到了被豌豆支配的恐惧,你也可以编程做出自己的特效,如果你是第一次看这个系列,请留意。接下来我将跟大家一起编程,从零开始做一个植物大战僵尸游戏。没有编程基础, 知道什么是编程的小伙伴也可以通过视频感受一下什么是图形化编程。欢迎大家一起来编程,体验编程的乐趣,改编后还可以参加编程比赛哦。编程逻辑较为复杂,也设计一定的数学和物理知识,建议点赞收藏,反复观看。 上一集我们实现了种植豌豆射手以及植物冷却的功能,本集我们会完成三个功能点,第一个是修复植物的一些 bug, 没有种下的时候,豌豆射手就可以发射子弹,向日葵多了的时候产生的位置有所偏差,阳光跳跃的功能做一些优化。第二个大的功能点 是僵尸的产生以及移动。第三个功能点,僵尸呢,有自己的血量。话不多说,开始编程。首先打开我们上一次的作品,不知道怎么获取素材的伙伴们请从主页查看置顶的视频。 接下来我们首先修复一下植物的小 bug, 第一个呢是我现在如果点了这个植物卡片,还没有种下的时候,他也会发射子弹,对不对?我们把这个功能呢给他优化一下。 我们能看到对于向日葵和豌豆射手来说呢,都一样,我这个地方呢,一旦种下之后呢,就开始让他重复执行的去切换造型并且发射子弹了,并没有做一个判断,那我怎么知道他有没有种下呢?我们之前是不是有一个列表啊?叫植物种植情况, 我们在这个列表里面详细记录了每一个网格里面他有没有种下植物,我们可以利用一下这个列表,当我鼠标挪到这个地方的时候,我就去检查检查他有没有种下,种下之后我才让他发射子弹。那也就要求 我们需要把这个植物的行和列这个信息呢及时的存起来。之前我们是按下鼠标才去计算的,对不对?我们把这一段代码呢给他拿出来, 把这个代码呢放在移到鼠标后面。好,一边移变鼠标,我就一边去计算了,我们把这个说话呢拿出来测验一下,点击绿旗。 好,这个初始画成空,我点一下这个卡片,是不是我挪到这个地方都能判断出来我在哪一个网格呀?好,有了这个基础,我在种下的时候呢,在这 这个地方重复执行的时候。好,豌豆射手,向日葵都一样,我加一个判断,如果我的当前行和列,把这个拿出来复制一下。呦呵,成效, 如果我植物种植情况的这个网格里面不等于空的话,我才能去种植物,那不等于怎么做呢?再加一个不成立,等于空,不成立,那就是不等于空。复制一下。好,首先呢我们把向日葵的给它套进去, 然后把豌豆射手的也套进去,豌豆射手是这一段,向日葵是这一段, 我们接下来测验一下。好,哎,出现了一个小 bug, 我点了豌豆 之后是不是出现了向日葵啊?我们先看一看,只有种下去之后他才发色,这个功能完善了,又出现一个新 bug, 没关系,好,当他是向日葵的时候呢,一出来我们立马给他切换一下造型, 豌豆射手也是一样,如果我克隆出来,豌豆射手,立马先给他换一下造型就好了,把这个隐藏起来, 点一下豌豆射手,看他是不是并没有摇晃,只有当我种下去之后,他才开始摇晃,向日葵也是一样,种下去之后他才产生阳光。 好,那另外一个 bug 呢,是我们向日葵种的多了之后呢,有同学发现了他的位置呢,可能有所偏差。好,这个是为什么呢?我们可以观察一下我们阳光的 x 坐标,这个地方,他种下之后呢,并没有及时的删除,反而越增加越多。好,那是呢, 在这个地方啊,把这个阳光的向日葵的坐标记录的时间呢,稍微有点提前了,我们应该让他做好克隆准备之后, 克隆的一瞬间,把这个列表呢给他记录下来,那这样的话,克隆体一旦产生,他就立马呢又把它删除了,这个地方会是一个动态变化的,我们来试一试, 多种几个好,看到没有?这个地方呢,它产生之后立马就又消失了,这样的话呢,就不容易冲突 好多种几个,哎,也是一样,各自在各自的位置产生,没问题。那然后呢,这个阳光我们是不是让他垂直跳跃了啊?有同学说他应该往前跳跃一下,没问题,我们找到阳光这个地方之前,我 我们只控制了他的歪坐标啊,这个地方呢,我们可以给他加一个 x 坐标,让他的 x 坐标呢往前每一次增加。二,说话的这个我们可以给他去掉了,再放到一边,说不定以后还要用列表隐藏起来,抽烟一下, 看这次产生阳光,应该有一个往前跳跃的效果,哎,这样的话效果是不是就比较理想了? 好的,接下来我们来完成今天的主要的功能,僵尸的移动和雪亮。我们先来观察一下僵尸里面的造型, 好,我们会发现这个僵尸造型里面,他的胳膊,身体以及他的头部那是分开的,有这个专门的脑袋的造型, 也有专门的帽子的造型啊,这些都是分开的,所以我们在做的时候呢,就需要用克隆体把身体的每一个部分克隆出来啊,跟我们以前的这个呢 就不太像,这个里面呢帽子,身体和胳膊是在一起的啊,这个等待呢比较简单,比较好做。那我们这个僵尸的主角呢,要稍微麻烦一点,大家要挑战一下。 好,当然这里也有他倒下的效果,我们一个一个来尝试啊。首先我们来把头部,身体和胳膊都克隆出来,要克隆三个, 我们直接在当律师被点击下面来做啊,当律师被点击的时候,我直接先换成嗨的,找到嗨的一,然后克隆自己好位置呢,给他固定一下。我们先放在零零位置啊, 然后再换成身体,也就是沃克造型,沃克一,然后再换成还有一个胳膊,这个胳膊呢是 arm。 当每一个克隆体出来的时候,我们呢先让他显示出来,加一个显示, 那当然这个本体呢,我们可以让他隐藏起来点一下哦。这三个是不是都出来了,但是他们的位置你有没有发现他们的中心点和位置呢?都是有区别的, 有的胳膊的中心点在这里,身体的中心点在这里,所以呢我们需要针对性的给他调节一下,我们加一个判断语句,如果他的造型名称是头的话,我们怎么办?身体的话我们怎么办?找到找 造型名称,我们以身体为基础,去把头呢给他位置做一个调整,让头往下挪一点,胳膊往下挪一点,往右挪一点,跟我们的这个身体呢相互配合,所以呢,当这个克隆体启动的时候,如果造型名称等于前面这个 僵尸太的一的话,我那怎么办呢?我把他的位置呢给他做一个调整,首先他应该往下挪一挪,把歪坐标给他增加负二十四, 然后呢稍微往右偏一点点,把 x 坐标呢给他增加五,那同样的复制一下,对于我们的胳膊造型 a r m 一,我也去调整一下他的位置,他的歪坐标呢应该再往下一点, x 坐标呢往 右一点,好,我们再来测验一下,好,先把他们点红点消失,好,我们看到这时候,哦,这个 m 是不应该有 m 一的?好,我们来看一看,这样的话位置是不是差不多了,但是前后顺序不一样,我们让脑袋呢移到最前面来, 给脑袋加一个移到最前面,调整之后吧,移到最前面来,是胳膊也要移到最前面来。 哎,这时候这个僵尸头身体和胳膊是不是就都有了?然后呢我们来看一看他的位置,我们把它显示出来, 他不能在零零位置,是不是出现的时候应该在我们的网格里面呀?我们每一个网格都是有自己坐标的,还记不记得好,每一行都有他的歪坐标,我们应该让僵尸呢站在这个位, 但是刚才我们能发现,对于这个行走的僵尸来说,他的中心点在这个位置,所以也不太对,我们来试验一下啊,比如说我想让他挪到第三行,我让他挪到 y 坐标的第三行,好,是不是应该挪到中间这个地方啊? 显示出来好应该在这个地方,但是呢他居然跑到了第四行,所以对于这个本体来说,我们需要把他的坐标呢整体给他调节一下啊,把身体的整体调节一下,这样头和胳膊在克隆出来之后呢,也就调节了,我们把他的歪坐标给他增加五十, 这样的话是不是就挪过去了?那当然一开始的时候应该是在最右边,好,两百四,我们把这个拼在一起,然后我们给克隆体呢, 都给他加一个往前移动。哦,这里扫了一个,是不是身体还没有啊?如果是身体的话,我可一他是不需要调节的啊,对吧?我们让他呢都有一个往前行走的过程,我们先开始简单一点啊,直接重复执行, 每零点一秒往前走一步,那就是 x 坐标增加负一。好,我们把这个代码呢给三个都拿过去, 我们来测验一下,哎,从这走出来了,对不对?然后呢不断往前移动,没问题,那接下来呢,我们让他有一个行走的动画, 好,我们里面是有各种各样造型的,这个草地歪呢可以隐藏起来了。好,对于这个走路来说,我们给他加上一 一个特效,每走一步我就给他切换一个造型,然后我去数一数他有多少个造型,重复使用几次是不是就可以了?好,那这个方法呢,我们用过,今天呢,我们尝试另外一个,这第一个走路的编号是四, 最后一个编号是不是十五啊?所以呢,我可以给他加一个判断,如果他切换成下一个造型之后,我发现他的造型编号大于十五了,造型编号 大于十五了,好,怎么办呢?我就立马再给它切换成最开始的一个走路一。好,这样是不是也能够实现一个循环的操作呀?我们来看一看, 一个基本的走路的动画是不是就做出来了? 接下来呢,我们来完成僵尸雪亮的一个记录。那对于有多个克隆体的情况来说,一般我们是建立一个私有变量,对不对?但是这次呢比较特殊,我们三个克隆体其实共用一个雪亮,所以呢,我们得用另外一个方法了,我们建立一个列表,给他起名叫 僵尸雪亮,然后这个僵尸雪亮呢,当然初始化的时候一定记得给他全部删掉。 然后呢,我让这三个克隆体共用一个僵尸编号,僵尸编号这是个全局变量啊,一开始的时候这个变量呢,他是一 代表着我第一个僵尸,对吧?不是每一个克隆体都有啊,整个克隆体克隆完了之后,我才把这个僵尸编号呢增加一 去记录第二个郑家一,那我们多克隆几个僵尸吧,我们在这个地方加一个,重复执行十次。好,每一次呢,那不是第三项了,给他加一个随机速, 让他从我们总共五行吧,从一到五之间挑一个随机数挪动过去,然后每一次呢产生了僵尸之后呢,给我们的僵尸血量里面增加上一个初始化的值, 这个一百的血量吧,加入我们的僵尸血量产生之后呢,给他加进去,产生了一个之后,第二个产生之前稍微等待一会, 加一个等待时间,同样用一个随机处吧,让他在两秒内到五秒内产生一个新的僵尸。那这个僵尸 编号呢?是不是应该由我们的每一个僵尸克隆体记录一下,你自己是几号编号啊?那对于头和身体我们就不记了,我们只让这个行走的僵尸呢,记录下来他的编号是多少,所以我们还得再建立一个私有的边量,叫 僵尸编号,让他呢把自己的编号记下来,他的编号就是前面我们生成的时候,这个全局的僵尸编号只有一个。好,这样的话我们就记录下来了,我们来测验一下这个里面有没有记录,并且呢我们可以让他说出来, 我们给这里加一个,每走一步呢,让他说一下自己的血量,我们走找到列表第几项呢?他的僵尸编号是几,他就是第几项私有的。 好,这是第一个,他是一百,接下来又来了一个一百, 又来了一个,在上面一百对不对?好,那接下来怎么样让僵尸的血量减少呢?就要用到我们豌豆射手的攻击了,对不对?我们把这些编号呢先隐藏起来, 在子弹的这个地方,我们加一个攻击的效果,首先他在子弹的一直往前行走,在这个过程中他是有可能碰到,有可能碰到这个僵尸的,对不对?如果碰到了僵尸, 如果碰到僵尸他就应该换成一个攻击的造型,好,这个造型,然后呢稍微等一会再把自己删除掉,等零点一秒吧, 把自己删除掉,好的,那对于这个僵尸来说,他是不是应该不断的判断有没有碰到子弹呢?那对于这个行走的僵尸呢?我们把这个判断的过程分开 好,把这一块呢,这个呢单独控制行走,这个单独控制有没有碰见豌豆,好,我们加上只有这个行走的才需要这个判断,如果碰到了 豌豆子弹好怎么办呢?是不是应该把自己的血量减少一下呀?我们把这个说话的先拿出来 打中之后说一下吧,说出来之后呢,要给他减少一下,我们的减少呢,应该是在这个基础之上给他减去十,好,减去十之后是不是应该把这个 列表更新了,所以我们再加上列表里面有一个替换为把这个僵尸雪亮的编号这一项替换成减完十之后的这个结果,让他说出来我们就看到了。好,我们测验一下,走,你 往这中一个发射,一个短,哎,一下子剪了两个,对不对?这次又剪了三个,那是因为我们的豌豆是不是零点一秒才会删除自己啊?那这个僵尸呢?在这零点一秒内可能判断了好多次,因为他从不执行得很快, 所以为了防止这种情况,我们得往下面再加一个,他判断了一次之后,再去判断下一次的豌豆,这个怎么做呢?我们先加一个,等待碰见豌豆不成立,然后就是他第一 碰见豌豆之后,一定要等到这个豌豆消失之后,再去判断下一次有没有碰见豌豆,这样就避免了重复的去扣分的情况了。我们确认一下, 走,你好,九十,没问题。哎,没问题。 好的,那接下来我们是不是应该去设计,当我达到这个僵尸到一定程度的时候,他的脑袋和胳膊是不是应该掉下来, 然后再到一定程度他的身体是不是应该倒下?那这个功能呢?我们下次再做。这一集的视频到这里就结束了,如果你有什么问题的话,欢迎到评论区里留言,记得点赞收藏加关注,我们下期再见!


跟墙来控制他的移动速度,那当他碰到舞台边缘的时候呢,那么喷丝呢?就会消失了。这里呢,就如果碰到舞台边缘就删除客户。 那么实际上来说,如果他碰到我们种植的一些植物的时候呢,他就需要吃植物对不对?那这一块呢,也同样的功能,要使用做一个碰撞关系。那么后面我们可以学到。 那这个普通的僵尸呢,功能是一样的,都是通过克隆的形式就可以去实现了。那同学们也可以做网上去下载一些其他的僵尸,比如说热气球的飞天僵尸啊, 各种各样的僵尸都是可以的,还可以有跳远跳高的僵尸啊。功能方面是一样的啊,都是通过使用克隆的形式来控制它的。一个出现的一个位置, 控制他的一个移动的速度,包括他受到攻击之后大概多久的时间会被 击败啊,倒在地上。好,那移动的僵尸我们就学到这里。各位同学,我们下节课继续, 如果你喜欢少儿编程或者喜欢老师的话,请点击关注,长按三秒点击,强烈推荐,让更多的同学和你一起来学习,一起进步!

接下来我们来实现第二个功能,让他呢在碰到了这个食物的时候呢,就会把它吃掉,把它吃掉,那么要解决这个功能的话,我们来看一下。首先呢说下我们这个思路, 碰到植物的时候,像植物发起攻击,怎么样解决的这个问题啊?首先我们知道啊,这个植物的话,发起攻击的话,植物也是有生命的 美,种植的这个植物的话,我们应该在他初始化的时候呢,就给他一个生命值,比如说跟这个僵尸的生命一样。然后呢 检测植物,僵尸在碰到猪的时候,每隔啊一秒我们就向植物发起一次攻击,咬他 开口发出一个声音,咬一咬植物的声音,然后呢呃,让这个植物的生命呢减个一。 因为我们的种植的植物是跟他的草皮是一一对应的,所以我们在这个以种草皮这里一共有四十五块草皮, 所以我们的生命值列表也应该有四十五项,所以我们在这里建先建立一个全局的列表,叫做锁中 植物的生命,他是个全局的列表,你要选到这边一定要选到适用于所有 所有角色。 我们先给他复一个初始值为零,将零加入,复制一个草皮,我们就 把零加进去,就是他的初始生命为零。好在这里复制一个的话,我们又去给他加入,然后再点击利息的话,我们要初十的话删除所有项目, 这样的话我们一开始的话应该有四十五个植物啊出十多里。然后我们种植的时候呢,只要你种在哪块草皮上面, 我们就把对应的草皮的生命值改为他的初始生命值。 好,我们在这里种植这个向日葵的时候,我们是在这里已经种下在这里,那么他在这里的话呢?嗯,比如说在这里已经假设他种在第一个 位置,那么是不是他就要再把第一项复制为他的初始生命? 我们讲我们设为他们的初始生命都为五,所以我们要把这一个对列表里面的将所种植植物的生命 的第几下设为五呢?如果重在第一个位置,那就要把第一下,如果重在第八个位置,就应该设为第八下设为五。所以这个地方我们需要一个变量,这个变量 在什么时候会有呢?就是他种植的位置对不对?所以我们需要一个局部变量,在他克隆出这个植物来的时候呢,就给他付给他这个值,这个值呢不会变。我们新建一个变量 叫做皮肤变脸暗叫做植物序号, 当前植物的序号,看他坐在第几个位置啊?我们在启动的时候呢,把它设为 加单前,单前植物序号设为收写呢,设为我们的带接种位置,带种植位置 他移到了第一项,那么就他就是唯一,如果第八项移到了第八个产品,那么这个单枪指纹的序号就是为八,那么这两个呢,我们就可以改为 改为我们的当前植物序号, 然后这里呢也是当前植物的序号,四维五替换外物就是他的初始生命胜利好,向日葵也是一样的道理, 我们要也要给向日葵呢,给他一个编号,他是重在第几个位置?我们新建一个变脸 当前植物区以后,这是局部变量,可以一样的名字啊, 在他初始种下的时候,我也给他等于带接种的位, 这个当前使用续航 设为待机制的位置,那么这个也可以改为单前修的 续好,那么同样的把他的生命也替换为将所种植物生命的当前植物续好替换为好。我们来看一下,测试一下。 我们把这个向日葵现在放在第一个位置啊,第一个位置已经记录了,他是五啊,记录到第第五个位置也有一个五,他的生命词就记录好, 在这个列表里面就已经有了他的生命值,这个生命值是以种草皮和植物的共用生命 好,接下来我们要解决僵尸在碰到植物的时候,每隔一秒给他发起一次攻击,所以我们需要在 因为他要检测的时候有一个序号,他是碰到了第几块草皮,所以 我们这个已种草皮这里他也需要有一个序号,他当前是种在地气块的位置上,我们也要给他需要一个局部变量, 同样给他新建一个局部月亮,叫当前植物序号,当前草皮序号,他是草皮, 他也是在初始化的时候给他当前草皮需要设为代替什么位置啊?这里是设为代替什么位置?设为当前草皮需要, 然后再让他在克隆梯启动之后一直重复执行。 如果碰到了我们的僵尸 侦测里面碰到了我们的江西,并且呢我们这个当前这个位置的生命要大于零, 那么就在店内里面有一个他的植物的第几项呢?就是这个序号啊,当前草皮的序号, 比如说碰到了第五块草皮的,那么他就第五项,看到第五项的生命值有没有大于零,这两个条件呢?同时满足 这个生命值要大于零, 哎,如果这两个条件同时满足,那么我们就要给他吃他一口,对吧?吃他一口,咬一下,然后把生命之减一。减一的话,我们就可以 在列表里面将他的第几项改一下,整一将他的当前草皮序号的这个内容呢,给他扫一 单前草皮序啊,然后减一,再去运算 减一,依次呢给上面是扫一, 然后呢时间呢?我们不能很快啊,我们就隔个一秒吧,每隔一秒咨询一次, 并且我们看一下播放一个声音,让他咬咬东西的声音,我们播放一个声音,导入一个吃植物的声音, 播放声音 减一的话,我们就试一下,试一下,然后为了看到更好更好看的效果的话呢,我们可以让他说一下, 把它的生命的呢显示出来,说第几件一秒钟,你看一下,测试一下。我们做一个向日葵啊,向日葵到这里挡住它, 好,吃一口,四秒好,三三条两条好,每隔一秒吃一口, 好,当他等于零的时候,他就不会再吃了啊,这个时候我们就应该把它删掉去,是吧? 所以接下来呢,我们首先把这个以种草地删掉,当我们的 对应的生命之危零的话,我们就删掉他就可以了。重复执行,我们可以在这里改写一下啊。呃,重复执行,这里我们把它重复执行,直到他的 直到他对应的这个内容,这个列表内的生命值为零,等于 归零的话,我们就要删除他。删除这个可能性, 我们看一下能不能实现好,种植一个。好,在这里在第八个位置。啊,吃一口变成四了,再吃一口, 好一了再数,停啊。种草皮以,种草皮已经删掉了,还剩下一个向日葵,向日葵,我们必须要在向日葵这个角色里进行操作, 我们当克隆体启动时,一直执行,看重复执行, 判断他啊对应的生命值是否为零。如, 如果,如果 所种植物的生命,那第几项呢?就是要当前的 序号,植物的序号,当前的字物序号,这一下,如果这一下为零,运算为零等于零。 好,你看没有生命值了,那么这个时候我们是不是应该把它删掉去呢?直接删除这个客户就 ok 了。好,我们来看一下, 坐到第八个位置去。好,摇摇, 再来一口,最后一口。好,删掉了,这两个都删掉了,那么食物加湿的话就可以通过去了。好了,再做一个运动试试,试一下。 好,我们的豌豆射手这里还没有删除啊,因为我们这里还没开始说,这里要进行检测, 当周围的抗击系统时重复执行。如果我们这个 生命值为零,对应的啊, 所种植物的第几项呢?就是当前的植物的序号,分享等于零, 就是没有生命值了,那这个时候呢,我们就要删除他了,删除可能题,这样就可以删掉。好,我们再来看一下实物, 再来看一下 第八线,这是四条面料, ok, 删掉了。 哎,种植怎么会种到别的地方去呢?我太难了。 你们看一下种植的时候当前植物的序号, 再接着位置。啊,这里,这个可能脱错了啊,当前植物的序号,这里脱错了,给大家看一下。 好,再也不回来, 来看一下, 这已经咬死一个了,再试一下。 好,好,这样的话我们就完美的实现了我们一开始设想的效果。

同学们大家好,我们继续完成植物大战僵尸,今天是第二次课,上次课呢,我们已经做好了一些准备工作, 比如说我们找到了背景,找到了角色,并且呢,哎,铺设了地毯,而且让嗯这个豌豆射手能够发射子弹,当然了,豌豆射手后面的程序还有很多啊,那我们今天只是啊做了一个最简单的部分哈, 并且呢留了一个小小的作业啊,让我们同学思考一下,怎么样让子弹从豌豆射手嘴巴里发出来。嗯,好,那这个程序呢,我们在后面会完成。 那我们上节课的时候主要做了什么事情?我们先来看一下地毯的部分的程序,我们是使用了克隆 啊,我们先去克隆了一排,然后再去克隆了三排啊,这是我们的地毯的程序,那我们的子弹呢?其实啊,我们也是使用了克隆, 我们让子弹克隆出来以后,跑到了豌豆射手的身上,然后发射出来,遇到边缘呢,我们就删除此克隆体。 那今天我们要做什么呢?今天呢,我们来采集太阳光哈,因为太阳光是我们的资源, 我们需要不断的采集太阳光,才能栽种更多的豌豆射手和 a 更多的我们的土豆,所以说今天我们的任务就是完成太阳光的采集。好,那太阳光,首先我们看一下,嗯,它是老师画的一个 角色,是不是这个角色很好画呀,就是用了很多的菱形奥拼凑在一起,中间画了一个圆,同学们可以自己画,也可以使用,哎,老师的太阳光的角色, 那太阳光的角色呢?我们把它放到了舞台的左上角,然后下面呢还有一个变量,注意啊,这个变量,嗯,是我们的太阳光的总数,总阳光数。 那这个变量显示的时候,我们使用了,使用了大的啊这种方式显示,我们建好一个变量以后,我们有三种显示的方式, 正常显示大字显示滑杆。那正常显示就是前面有变量明,后面是变量值, 大字显示呢,就是现在这种方式,如果使用滑杆的话,那么我们是可以去调节变量里面的值,还可以去设置滑杆的范围,从几到几。嗯,好,那这是我们的三种变量的显示方式,那今天呢,我们使用了 大的这种模式,嗯,他来显示我们现在太阳光的总数好不好?那好,那今天我们就来完成收集太阳光, 那现在我们的太阳光呢?只有一个,如果说我们希望有很多很多的太阳光,那么我们就需要使用克隆体啊,也就是说我们铺地毯用了克隆子弹发射呢,用了克隆太阳光,我们还是要使用 扩容,所以说扩容体是不是很重要,我们先停止一下啊,让他不要再发射子弹了。好,那这时候注意啊,哎,我们先做下面的事情,当绿气被点击, 让我们的太阳光呢来到现在的位置,这个位置我们给他一个坐标就好了啊,我们来个整数吧,负的两百一十,一百五十,到这位置以后我们让他显示啊,也就是说他在这里我们是可以看到他的。 哎,好,那这时候我们哎就要克隆他,我们使用重复之行克隆自己,那如果这样来做的话,是不是我们一下会克隆出很多的太阳光啊啊,并且这些太阳光都是在在这个太阳身上和 重合。那首先第一步我们不希望以下克隆很多的太阳光出来,所以说我们让他等待一个时间,注意这个时间,如果等待时间比较长,那么我们克隆出来就比较慢, 如果比较短,那么可能的就会比较快。那在下节课的时候,我们栽种植物的时候, 我们比如说栽种一个太阳花,那么我们需要减少等待时间,也就是让我们的太阳光呢出现的快一点。嗯,好,那这个呢,我们就可以完成我们的克隆, 那完成克隆以后克隆体做什么呢?啊?那也就是我们的克隆体太阳花啊,光啊, 那要做什么呢?首先呢我们希望他出现在舞台的上方的一个随机的区域。好,那这时候我们可以给他一个固定的外坐标,比如说外坐标我们就设定为,哎,比如说一百五十号了, 那 x 坐标呢?我们把它设为一个随机值啊,我们知道我们的舞台最左边是负的两百四十,最右边呢是正的两百四十, 那么我们这个随机啊,哎,我们就取中间一点,我们取负的一百五十到一百五十好了, 好,我们先来观察一下点运行,来,这里出现一个太阳光,哦,这又出现一个太阳光,看鼠标,那这里又出现一个太阳光, 是不是他就会在我们的舞台上方随机位置出现,那出现以后我们希望他干嘛呀?我们希望他向下落,但是呢我们又不希望他垂直的向下落,所以说我们可以给他一个随机的方向。 好,那我们来到运动里面找到方向,注意在图形化编程里面默认为是向 u on, 角色初始方向是向右,向右呢是九十,方向向上是零,也就是说顺时针会增加,而逆时针呢,会减少。 那如果到下面是一百八十,如果再往左边,哎呀,怎么会出现负值呢?其实啊,一百八十再往左边走,负九十 也可以写成是两百七十,所以说那下面这个区间是不是我们就可以说成是九十到两百七十啊?你不能说九十到负九十,负九十到九十是指上面的,那下面我们可以写成是九十, 嗯,到两百七十,我们一定要,嗯,按照越来越大的这个顺序哈,嗯,就是到两百七十。那好,那如果我只是希望下面一个比较小的这个区间呢?我们可以写成是一百三十五到 二到两百二十五,也就是说我们给出一个随机的方向来,我们是一百三十五到二,两百二十五,那面向一个随机的方向,然后呢?哎,我们只要让他移动就好了。嗯, 移动,那我们这里选择重复直行,直到,因为我们希望啊,他碰到舞台边缘的时候, 哎,会消失,那消失呢?我们使用删除词克隆体,那移动指令我觉得特别简单,我们让他移动三步好了,来点击运行。 那你会发现哦,我们的太阳光是不是从上面啊,用一个随机的方向,然后向下移动啊?他有可能是向左一点,有可能是面向右一点,是不是?嗯,好,这样的话更加符合。如果同学们觉得移动的太快了,我们可以把它改成两步, 那太阳光出现了,那下一步我们要做什么呢?是不是我们就要收集这些太阳光啊?那我们现在要 要求是鼠标碰到这些太阳光,他就会被收集,也就是跑到他的本体身上, 那这时候我们只需要加入一个条件,如果,那么如果碰到鼠标指针,那么他就跑到这个本体身上,那这时候我们在运动里面找到滑行, 滑行有两个,第一是滑行到某一个啊,某一个角色,或者说随机位置, 但是呢,因为我们这个本体哈啊克隆体不能直接选本体,看到没有?没有这个三二,所以说我们选择下面的指令,我们移到一个坐标,这个坐标就是现在我们的太阳的坐标, 也就是负两百一十,一百五十,移到这个位置,我们让他,哎删除掉,也就是消失掉来点击运行, 你看对不对?如果这样的话,我碰到我们的太阳光,他就跑到,然后跑到本体身上去了,这个就可以代表我这个太阳光啊被收集了起来,那好,那收集起来以后是不是我们这个太阳光的总数就会发生变化呀? 那好,那我们就哎完成我们的总数的一个变化,那这时候我们需要把我们的变量啊 设为一个初始值啊,我们刚开始给他一个一百利息为点击,哎,我们的总的太阳光是一百,那每次 我们收集的时候,是不是我们可以让总数增加一个数值啊?比如说十,好了,那现在我们来看,收集一个变一百一十,再收集一个变一百二十, 那再收集一个变一百三十,那这样的话我们是不是我们的太阳越来越多啊,太阳光越来越多,我们就可以栽种我们的,然后栽种我们的植物了。 那下节课呢,我们会一起学习如何栽种豌豆射手,并且呢让栽种的豌豆射手啊也能够发射炮弹啊,然后栽种太阳花,让栽种的太阳花出现以后呢?哎,我们的 阳光出现的更快,我们也可以栽种我们的土豆来阻挡我们的僵尸。嗯,好,那 这节课呢,我们就到这里,同学们一定要自己能够独立完成哦,下次课再见。

同学们大家好,我们继续来完成我们的职务,大战僵尸。 上节课呢,我们已经完成了太阳花的栽种,也就是说我们可以通过点击太阳花的卡片来栽种太阳花。我们先看一下,比如说我们用鼠标点击卡片,我们就会有一个太阳花跟着鼠标走,我们在草坪上一点,就会被栽种在我们的草坪上, 那这里面有几个非常非常重要的点哈,第一个就是,哎,我们不希望一次栽种好多只太阳花,也就是说我们对克隆体进行了判断, 也就是说我们使用了一个私有变量判断来判断是不是本体,如果是本体,他才会克隆自己,而如果是克隆体的话, 嗯,他的私有变量是克隆,所以说他不会,哎,克隆自己,也就是说每次都会是那个本体克隆出一个,哎,克隆体出来,这是我们的太阳花的栽种,那同学们务必要理解这个知识点啊,因为我觉得非常非常重要哈,那今天呢,我们啊, 先不完成其他的,我们来完成什么呢?栽种豌豆射手,那同学们会说了,哎呀,老师,这个太简单了,对不对?哎,说豌豆射手和太阳花其实是一样的, 但是啊,有一个非常非常重要的区别,就是豌豆射手栽种出来以后啊,他会发射炮弹,这个是我们今天的重点,同学们呢,也可以自己先暂停一下视频来完成豌豆射手的栽种,并且呢尝试 去让他发射炮弹,看看能不能做到,再和老师的程序呢做一个比对。那好,那我们的豌豆射手的卡片呢,现在是空的,然后豌豆射手他的程序呢也是空的, 那刚才我们说过了,其实啊,和栽种我们的太阳花应该是很类似的,这样的程序是不是?嗯,好,那我们是不是就可以把, 哎,我们把这个卡片的程序直接拖到了我们的豌豆伸手身上,但是这时候注意哈,哎,我们这个位置好,要调整一下,因为什么呢? 哎,因为我们如果不调整的话,这两个卡片就会,哎重叠在一起了。 y 坐标,我觉得啊,不需要调整,我们调整一下 x 坐标,那这两个的距离,比如说我们写上是负的一百啊,五十看一下,嗯,一百五十有一点 远了,一百四十吧。嗯,好,这时候这个距离啊,啊,好像是非常接近了,是吧?两边距离,那我们就用一百四十负的,注意啊,这个无所谓的哈,多一点少一点也没有关系,同学们也可以自己去把它啊弄成整数,让他们距离是一样的。 好,那我们说中间程序也很像,那我们希望一个豌豆射手是一百块钱啊,也就是一百个阳光,那这里面是不是我们小于五十就要改成小于一百啊?也就是说只有大于等于一百的时候,我们才能栽种豌豆射手, 好,那别的我觉得都可以不变,但这里我们要变啊,广播,我们广播什么呢?广播栽种豌豆好了,哈哈,就栽种豌豆。好,那这时候我们总阳光数要增加 负的一百,也就是说这时候我们是不是就,哎完成了卡片的这块程序啊?我点击卡片,那这时候我就会广播一个栽种豌豆,然后呢?哎,我们的阳光数会减少一百, 那同时呢,我们每次只会广播一次,我们使用了等待,哎,按一下鼠标不成立。好,那谁会接收到我们的这个消息呢? 哎,是不是我们的豌豆射手啊?那豌豆射手的程序和太阳荒的是不是啊?就很像啊,哎,和我们的太阳花,那这时候我们把太阳花的程序啊一个一个的搬过来,哎,我们先看第一个, 第一个我们把这个呢就可以去掉了啊,就是太阳化设为零,我们去掉。嗯,好,那将判断设为本体 啊,注意啊,这样即刻的时候,我们这个判断呢是一个私有变量啊,是一个判断太阳花是不是克隆体的,那我们这个豌豆射手啊也需要判断, 所以说我们还是需要建一个私有变量,就是判断豌豆好了,好,这时候也是私有变量哈,仅适用于当前角色。那好,那我们把这个判断豌豆设为本体。好,我们继续来抄程序, 那这时候当接收到,诶,我们把它拖过来,这时候就是当接收到栽种豌豆, 对不对?我们将什么呢?嗯,将,嗯这个判断改成判断豌豆,如果判断豌豆是本体,那么克隆自己。嗯,好,继续, 那作为克隆体启动的时候,哎,我们来看我把,哎,注意啊,同学们,观察一下我怎么复制程序的哈,我把这个部分呢拖到了这边啊,只要用手拖着过来,哎,他一颤抖,我们一松手就跑过来了,是不是? 那这时候我们将判断豌豆设为式克隆,也就是说我们不希望克隆体也克隆,所以说我们只有判断豌豆是本体的时候呢,我们才克隆自己,然后显示出来,然后呢?哦,我觉得后面是一样的, 那这里面我觉得可以去掉。嗯,好,广播,注意这个广播呀,我们就要改编一下,是不是啊,我们就说豌豆栽好了,豌豆种好了,嗯, 好,广播,豌豆种好了,那我们看一下,这边呢,是当接收到太阳花好了,我们把它也拖过去,按,我们改成 当接收到豌豆哪了啊?豌豆种好了,那这时候我们还是让他下一个造型好等待,因为舍不得,因为我们的豌豆射手啊,也是有很多很多造型。 那这时候呢,我们其实啊就已经把所有的上节课的太阳花的程序哎,搬到了我们的豌豆射手里面,是不是啊,其实啊,这两部分呐,都是一样的,嗯,只是我们修改了一些 消息的名称,还有 a 变量的名称,同学们一定要学会举一反三,来,我们点击运行看一下,我们点击我们的 豌豆卡片哈,豌豆射手的卡片,哎呀,我们会发现我们就可以像栽种太阳花一样来栽种我们的豌豆射手了,太阳花我们也栽种一下,嗯啊,非常可爱哈,那是不是我们就可以实现了栽种豌豆射手栽种 太阳花,那这时候我们说了说有一个非常重要的区别哈,就是啊,我们的豌豆射手啊,会啊,会发射子弹,那这个该怎么做呢?哎,还记得第一节课吗?第一节课的时候,我们啊,其实啊,让我们的一个豌豆射手的本体啊发射过子弹 哎,我们来观察一下哈,你看,嗯,我们当时是用了这个程序,地毯铺好以后呢,我们啊就让我们的子弹呢不断的克隆自己,然后移到了我们的。 嗯,这个豌豆的本体身上,豌豆射手的本体身上,哎,并且向前射击。那我们看一下,你看,哎,其实啊,他隐藏在这里了,但是他自己在不断的射击子弹, 那现在呢,我们要让克隆体来发射子弹,哎呀,说这个该怎么做呢? 说我们这个炮弹要跑到哪个角色身上去呢?对不对?因为每个克隆体啊,我们都可以理解为是一个哎,单独的角色,对不对?你看我在这栽种一颗,在这栽种一颗,那我们这个子弹要移到哪里去呢? 嗯,那这是一个我觉得相对比较复杂的问题,而且呢,我觉得也是今天我们这节课重点中的重点。好,那我们一起来解决他吧。那当作为克隆 启动的时候,也就是说我们这时候我们可以这样想啊。哎,当作为克隆体启动的时候,是不是每个克隆体啊,他都有一个 x 坐标和 y 坐标啊?嗯,那我们啊可以让什么呢?让克隆体啊,去克隆啊,也就是让我们豌豆射手的这个克隆体啊,你可以想象到他是一把枪,我让他去克隆炮弹, 注意啊,理解一下,我不是让炮弹自己克隆自己啊,我们把这个扔掉,哎,我们让豌豆射手的克隆体去克隆子弹。 那好,那首先呢,我们先给他一个重复执行,作为克隆体启动,这个也可以并行哈,就是这两个同时运行,当作为克隆体启动,比如说我们需要 他每隔两秒钟克隆哎,一下子弹,注意不要克隆自己,要克隆炮弹。嗯,好,那这时候是不是我们的一个豌豆射手他两秒钟就会克隆一个炮弹出来啊, 那作为克隆体启动的时候,那这时候我们这个炮弹要移到哪里去啊?是不是要移到对应的这个克隆体啊?谁克隆了我,那我就跑谁那去。 比如说我们这有两把枪啊,第一把枪他克隆了一个子弹,那么子弹就要跑到他身上,哎呀,那怎么跑到他身上呢?对吧?哎,因为啊,我们在选择的时候,我们没有移到某一个克隆体这样的选项,所以说, 那这时候我们有一个非常非常好的一个方法,就是我们设,哎,我们设两个变量,第一个呢,我们叫豌豆 x 坐标,豌豆的 x, 第二个变量呢,我们叫豌豆 y, 哈,也就是说这个代表豌豆射手的 x 坐标,豌豆射手的 y 坐标。好,那我每次的时候我做这样的事情, 将什么呢?哎?将豌豆射手的 x 坐标设为这个角色当前的 x 坐标, 然后同样的道理,将豌豆射手的 y 坐标呢设为当前这个,嗯,角色其实就是这个克隆体的 y 坐标。好,那这时候注意啊,我在克 克隆炮弹,然后等待两秒,也就是说两秒我再克隆一个炮弹出来,那注意,这时候克隆出的炮弹, 他立刻就要跑到什么,哎,跑到我们的这个 x 和 y 的位置,是不是就跑到了这个克隆体的位置啊? 嗯,好,同学们思考一下哈。所以说作为克隆体启动的时候,不是移到,哎,不是移到我们的豌豆射手的本体,而是,哎,给他一个位置,移到什么呢?移到 window x 和豌豆 y, 然后再开始做下面的事情来,我们先点击进行观察一下,首先我们点击哎,放这里,看到没有?点击放这里, 但是呢,我们发现一个问题,就是啊,我用鼠标一点击的时候,他发射一个子弹出去,这个我觉得是一个很好解决的问题哈, 因为呀,刚才啊,我们是作为克隆体启动的时候,我们就做这个事情,所以说啊,我们每次一出现克隆体啊,他就哎,他就开始发射炮弹, 那解决这个呢?其实啊,有多种方法,也就是说如果说我只是想,嗯,只是想看起来没有什么 bug, 那我可以先把这个等待两秒放到上面去,哎,然后把克隆放在下面, 那这时候你会发现我把它抓起来,哎,我放在这他才会发射炮弹,是不是?哎?但这个也有问题,比如说我鼠标嗯, 拿着,过两秒还是会发射炮弹,对不对?那如果想彻底解决这个问题啊,那其实我们哎还是可以通过一个私有变量,也就是说我们把每个我们的哦这个豌豆射手啊,嗯,再给他一个私有变量, 等到栽种以后,哎,也就是说等到豌豆种好了的时候,我们把那个私有变量啊,哎,把它变掉,然后呢我们在这里做一个判断,好,那我们来一起看一下, 我们把这个私有变量的名字啊,就管它叫做,嗯,来我们建一个私有的变量。是否判断发射吧。判断发射。好,那 我们开始的时候,也就是说当氯气被点击的时候呢,我们把我们的判断发射设为,嗯,好,判断发射 设为不啊,设为 no。 哈哈,好,也就是我们用大写的 no 来表示哈,也就是我们开始的时候我们让它不发射啊,设为 no 什么的时候会变成 yes 呢?是不是接收到豌豆种好了?哎,当接收到豌豆种好了的时候,或者说呢,我们在当作为可能体启动的时候,广播豌豆种好了,我们把这个判断发射设为 yes, 那这个道理来老师讲一下哈,就是我每次栽种一个我们豌豆射手的时候, 我把它栽弄到这里,哎,这时候他才能发射,那作为克隆体启动的时候,我们就不让他立刻就开始克隆了。我们给一个条件啊,给个什么条件?如果,那么 如果符合一个条件,我们再去,哎,克隆自己。符合什么条件呢?符合刚才我们这个变量,也就是判断嗯,是不是发射等于 yes, oh no 啊?好,如果判断发射等于 yes, 那么我们开始克隆炮弹,那刚开始的时候如果说我还没有栽种,那么这时候判断还是 no, 所以说他就不会去克隆,那我们先观察一下哈,现在我 点击你会发现哇,他并不会发射子弹了,我栽种在这里,他就开始发射了,是不是?那我再次来一个哦,他也是一样的,所以说这时候我们就可以完美的解决什么呀?哎,解决刚才我们遇到的问题, 所以说,那这时候我们还是用到了私有变量,那注意哈,那我们整个程序啊,其实用到了很多很多的私有变量, 光光这个豌豆射手就有两个四有变量。第一个是判断他是本体还是克隆, 如果是本体,嗯,才能克隆自己,如果是克隆体就不能克隆自己了,否则我们会出现以下好多的豌豆射手。那第二个似有变量呢? a, 我们是判断他该 该不该现在就开始发射,如果说不加这个变量的话,那么我每次一点架他就开始发射了,而现在我们是点击栽种他才能发射。 然后今天呢,我们还有一个最重要最重要的知识点,就是如何让我们的豌豆射手的克隆体发射炮弹, 那我们使用的方法是什么呢?哎,是使用了坐标,也就是说我们不断的把什么呢?把我们每个克隆体的 x 坐标和 y 坐标,嗯,看一下这里哈,放入两个变量, 分别是 one two x, one two y, 放到这个变量里以后,我立刻就克隆一个炮弹出来。克隆一个炮弹出来,那这个炮弹呢?就跑到刚才哎这个变量里去 那,因为我们现在这个边栏里存储的就是当前这个克隆体他的位置,所以说他跑到了这个位置里去,那就是从这个克隆体身上出来, 那从这个克隆体的啊,我们的豌豆射手身上出来,那然后发射出去就好了。所以说这个知识点,那很多小朋友可能会遇到一点点的障碍,不过自己要啊,仔细想把它想清楚,我觉得就可以。嗯,非常好的,能够把 我们的程序做出来了。嗯,好,今天我们就完成到这里,下节课我们的僵尸将会出现,我们的炮弹将会发挥作用了哈,好,同学们再见。

哈喽,大家好,上个视频我们实现了三线射手发射子弹的效果, 但是有个粉丝马上就提出了个问题,说三线射手发射的子弹呢,是三条线,而不是并排在一条线上,他是不是这样的?我们来看一下。 也就说我们希望他的子弹呢,发射出来之后成一个三条线,像这样。哎,品质型 打头一个,后面并排两个啊,三条三条线来发射子弹, 当子弹发射出来之后,成品质型往前移动, 扎个火炬,三条线。 ok, 今天我们就来实现这个效果。其实要实现这个效果也非常简单,我们上个视频呢,呃,是在克隆子弹,这里,他是重复三次,我们接下来只要 让他一次克隆一个子弹。嗯,连续操作三次就可以了。我们先克隆一个子弹出来, 让他往前移动,然后稍等一个时间,等一个很短的时间,然后连续克隆出两颗子弹,然后设置他们的位置,就可以达到这个效果了。我们在这里克隆三颗子弹,这里 我们改进一下, 我们让他第一下克隆一颗子弹出来,等个很短的时间啊,零点零五秒,接下来再克隆两颗子弹, 这样就克隆出了三颗子弹。那么我们在 我们在设置子弹的位置的时候,是在这里进行设置的,设置他的坐标是不是需要知道他当前是第几颗子弹。所以我们需要一个变量, 我们需要一个全局变量来记录三线射手发出的是第几颗子弹。我们来新建一个变量, 全局的变量。别的角色也可以访问,嗯,叫做丹钱自 蛋数量。 我们一开始的话,在游戏控制角色这里设置他为零。 好。然后呢,在克隆第一颗子弹,这时候我们就把它设置为是一。第一颗子弹当前指的是是为一。 那么在克隆第二颗和第三颗子弹的时候,我们让他的子弹数量加个一,这样的话呢,那个 全局变练当前子弹数量会一二三,还有三个子。好。接下来我们在子弹这里设置他的位置。 一的时候第一个子弹是我们不改变他的位置。所以我们加个条件,如果我们的单前子弹数量等于一, 那么就还是他一开始的位置,否则的话就有可能是等于二 或等于三。那么如果等于二,我们就往上走一点, 等于三,我就往下走一点,那么我们也再加一个。如果,那么 下面等于一的时候,我们设置他一开始的位置,否则的话,那我们就再判断一下那是等于二还是等于三。等于二,那么我们就让他往上复制一下。歪,坐标往上 家室, 这是铲屎拖出来的家室。 如果是第三个子弹呢,我们就让他移到下去,下面减当前的坐标,减去十,你可以用加上副食,也可以用减去食,都可以,效果一样。 好。这样的话我们就实现了,让这三个子弹呢呈品质型,品质型的发射出来。然后我们在我们的 三线射手这里发完了子弹之后,我们应该把他的 直重新设为初始化为零, 加单前指的数量,从新式为零发。 发射完了三颗子弹之后,我们来看一下效果。 好,来一只僵尸吧。 ok, 好,我们发现了这个子弹。哎,第三颗子弹好像怎么样,有点滞后了, 再看一下这个,哎,我们的豌豆射手的一开始的子弹呢,有点像 点一下啊,说明他的子弹是一开始是他数量一直是零,所以我们 豌豆射手在发射子弹的时候也要改变这个当前子弹速腾的事,我们先来解。下面来解释这两个问题。第一个豌豆射手在发射子弹的时候, 在克隆子弹的时候呢,我们把他的单前指的数量呢设为一,这样的话,他的位置就会跟之前的位置一样,不会动了,不会掉下去了。然后我们再 看一下我们三线射手的这三颗子弹,单等于三的时候, 第三个指导的时候,因为他已经执行了一点点时间,所以他的 x 坐标呢,他会往右移动, 每次呢会加时,每次会加时。所以我们只要在第三颗子弹的时候呢,给他的 x 坐标往前一点,他就会对齐了。 二十五,加个十的话是三十五。我们再来看一下他能不能对齐 来了一颗,我们做一个弯纱线射手,哎, ok, 它是成品质型的玩具, 前走哦,上前线啊,注意看。 然后我们再看一下我们的豌豆射手,对吧,一发射是一颗子弹,他是不会掉下去的,正常的发射 好。我们的阳光呢,在后面,我们等一下,把它设置到最前面, 最前面去。哎,我们发现了一个小 bug, 阳光点击之后看一下,他可以 重复的增加阳光的数量,这是不对的,我们等下把它修正过来。接下来我们再来修正两个小 bug, 一个是阳光呢,让他到最顶上去, 克隆机启动,移动到最前面。 好,然后在他阳光增加的时候呢,我们不能重复点击去增加阳光的数量。在这里增加的时候,他有一个条件, 点击之后,他是把四否被收集,他设为了一,一开始是为零的,没有被收集, 点了一次之后,他就变成了一。所以当等于零的时候才给他加十,等于一的时候就不能再加十了。我们要给他增加阳光,增加一个条件,当 是否被收集,这个变量等于零。就是一开始的情况,没点的时候他就可以增加,点了之后他的一就不可以再增加了。 这两个小 bug 我们一并解决了。这个时间呢,如果你想让他三个子弹隔得远一点,那么你就可以等待的时间呢,久一点,比如说零点一秒。 好,这样他们能隔的远一点。我们再来看一下效果。 哎,总计单机只能不会再加了啊,只能加一次。好,我们做一个三线射手。哇,这样有点远哦,好像不紧凑啊, 还是零点五秒更好一点。零点零五秒 效果更好一点。 好吧,我们赶回去这里等待零点零五秒。 ok, 这样 我们就实现了。我们把三线射手的子弹发射成三条直线进行射击。 然后呢,顺带修复了一个收集阳光的小 bug。

用 scratch 去编写疯狂版植物大战僵尸,这是植物大战僵尸疯狂版的第一集,首先我们打开 scratch 之后,从文件 从电脑中打开,打开老师所发的素材。好,这就是植物大战僵尸最新版的疯狂版的素材,同学们可以看一下,里面包含了非常多的角色,各种各样的植物,包括僵尸,可以简单看一下。 哎,有各种各样的僵尸都在里面,老师已经把素材完全整理好了,那么如何获取素材呢?请看主页这两个视频,老师已经把所有的素材全部都放到这里面,包含了我的世界 id 三 d 以及植物大战僵尸 传说之下获益忍者等等素材,全部都包含在里面。哦,那拿到素材之后,我们正式开始编程。首先我们点到 背景管理这个角色里面,我们直接来开始做关于攻击这个部分,先把有趣的部分做完,我们慢慢的再来完善,因为植物单人僵尸也是一个比较大的项目,希望我们都能够做出属于自己的疯狂版的植物单人僵尸。好,首先当绿棋杯,点击 我们看一下背景管理这个角色里面有几个造型,有四个,分别是犁地,草坪,夜晚, 还有一个空的,对吧?那我们最开始首先让它变成空的这个造型, 之后呢,给它设置一下大小, 默认是一百八,给它设置成一百八,接下来让它换成草坪的造型,换成草坪放大一些。好,接下来呢,我们让它移动到这个位置,那么直接把它坐标拖过来, 大概是 x 五十五, y 是负七,之后我们让它出现一个屏幕滚动的效果。玩过植物大战战僵尸的同学都知道,屏幕会有向左向右移的效果,所以呢,我们来测试一下, 哎,现在能显示了,怎么让他向左向右移呢?我们在后面来写一下,建一个广播, 广播叫做场景移动。 好,那当接收到场景移动也需要做相应的操作。我们首先用一下滑行在一秒内滑行到什么?我们改成在一点五秒, 一点五秒内滑行到 x, 先靠右边一百九十, y 是负七,好,再来一下到右边之后再来向左再三秒 滑行到负的一百九十外是负七,好,最后再来一个在一点五秒滑行到现在的位置五十五,然后是负七,好,这时候我们再来一起看 看一下效果运行, 哎,很好,同学们已经看到了,对吗?已经出现了这个舞台向左向右移产生这个效果,哎,特别棒。好,那接下来呢,我们点到僵尸里面来进行编写,点到僵尸, 僵尸里面有非常多的角色造型,那已经看到了,那我们要让僵尸能够显示出来。首先我们为了展示出各种各样的僵尸,所以呢要来建一个列表,点到列表里面,注意是列表啊,建一个列表名字叫做 展示僵尸, 好点,确定这时候就出现一个列表,首先当利息被点击的时候,我们首 首先要把展示僵尸这个列表的给他清空,所以用一下叫做删除 展示僵尸 这个列表,同学们看到里面已经有很多个建立好的变量,还有列表,我们在后面的时候也可以直接来用。首先删除完之后呢,再次将什么什么加入到我们展示僵尸的这个列表当中。 加入到展示僵尸,那我们加几个呢?最开始我们加四个, 那里面加的是什么东西?我们来具体看一下,我们希望把哪几个僵尸加进来,比如说 第一个是撑杆跳僵尸,对吧?还有后面什么普通僵尸,我们先来架一个普通僵尸,好,找到他的造型。 普通僵尸好,这时我们把这边它的造型名称给它复制一下,好,回到这里 ctrl v 粘贴一下,好,再来一个,找四个这样的不同的造型, 好,这里有一个旗帜僵尸好,找到开头的这个也是一样,选中按 control c 给它复制一下。好,到这里面 ctrl v 有两个了,再来找一下, 好,撑杆跳僵尸, 好, control c, control v 好,再来一个,看还有什么,哎。橄榄球僵尸 好,也是一样,选中复制粘贴好,这样的话一点击 a, 发现有四个 这样的造型加入到了展示僵尸这个列表当中。好,那后面呢?我们要把这四个僵尸能够展示出来,对吧?该怎么写呢?在这里面当接收到场景 移动,好,这个时候我们就要让这些僵尸能够显示出来,最该是让他移到最前面, 让我们看到他移到相应的位置,在什么位置显示呢? x 在一百, y 大概是在八十九的位置。 好,接下来让他重复做一件事情,什么事情?就是把相应的列表当中所存在的这个造型的僵尸让他显示,所以我们用一个重复执行指导, 重复之心,指导指导,这个条件是什么呢?当展示僵尸的项目数等于零的时候, 所以找一下展示僵尸的项目数。 展示僵尸的项目数,哎,一旦等于零,说明里面就没有 需要展示的了,等于零的情况下就跳出来,否则他会在里面执行什么呢?首先给他换成相应的造型,换成造型 要换成对应的造型,对吧?列表当中有什么造型,他就换成什么造型,结果在里面找到换成造型 这一个叫做 展示僵尸的第一项,每次都是第一项,首先让他换成这个造型,之后呢,再把它给他删除掉,就不需要了。删除展示造型的第一项,克隆一下 自己,克隆一下自己,好,这个时候呢,每出现一个之后,我们希望他往下面再来,能够在这边出现很多个,所以呢,再来一个,将外坐标,每次给他增加负三十,增加哦,负三十。 好,最后给他隐藏起来,外观 隐藏放到这,好,这个部分就写好了,好,现在这边已经有克隆自己,那去控制一下克隆出来的这些僵尸该怎么样,如何显示,所以写一下,当作为克隆体启动时,我们需要让他显示外观显示。 好,那我们现在直接运行看一下,放大运行。 哎,我们发现这个僵尸啊,始终在舞台上飘来飘去的效果,对吗?没有做出来我们想要的效果,那是为什么呢?因为舞台跟我们僵尸也是相对运动了,对吗?所以我们在里面要写一个程序,将此时他出现的设置在什么位置呢?在运动里面 将 x 坐标设为什么的?什么? 背景管理, x 坐标加上三百, 好,放进去, 每次呢,让它移动到这个位置显示,我们再给它加个重复执行。好,这个时候我们再来测试一下运行, 哎,很好。同学们看到效果了吗?发现这个僵尸啊不会跟着走,只会出现在他相应的位置上面。 很好,那这个效果我们就达到了。好,本次内容呢,主要就是讲解僵尸的部分和背景管理的部分,希望同学们也能够把这两个部分给做出来,让我们一起来制作出属于自己的植物大战僵尸。好,我们下期见。拜拜。