大家好,欢迎来到科学怪人的编程课堂,这个系列呢,我们将完成一个超级玛丽奥游戏的一个还原,讲解一下如何通过 sire 来实现一个超级玛丽奥游戏的制作。 我们会有一系列的课程来讲解一下每个每一个环节里面的一些知识点。前面几讲呢,我们主要是完成一个背景的滚动以及重力,嗯,左右移动啊,赚钱检测这些东西的进行一个制作。我们先来看一下前面三讲我们能实现的一个功能吧, 可以实现啊,马里奥跳跃啊,踩在墙上也可以呢,实现马里奥这个地图上面来回的穿梭,到时呢,后面我们会增加魔 以及呢金币来进行收集,以及呢自然一下新的关卡如何进行制作。好的话不多说,我们先来进入今天的第一节背景的滚动。我这里呢,打开一个新的案例 啊,这里面呢,我已经准备好了马里奥所需要的一些素材。第一节呢,我们讲解的是一个背景的滚动,所以呢,这里呢,我先画一个背景出来,画一个一百乘以一百的啊, 一百零二九十五,哎,九十八, 一百,好,这个一百一乘以一百的,我们可以通过左边这里啊,同学们左上角我鼠标点的这个位置可以看到他的大小是 一百,诚意 一百,长宽都是一百啊,放到这里颜色呢,我等会呢会让他改变一下,所以呢,我用一个红色。 首先呢,我们想讲解一下地图的滚动,我们可以把它看作是一个小小的,我们先把这个舞台看作是一个一百乘一百的舞台,这一百之外的地方是看不见的, 我们呢通过这个地图的滚动,然后呢可以看到后面生成出来的图片,如何往里面滚进来啊?建一个私有的变量 x, 这次呢地图他等会会生成出来的横向的坐标 x, 我们先让他到中心点的位置去,按下空格键吧,生成零零, 回到零零的位置。好,这里呢,我们将 x 为零,然后呢让他我们克隆十张吧,或者二十张,二十张,然后呢让他移动到这个 x, 第一次呢,他肯定是零零吧啊,到他这里之后,我们产生一个克隆 啊,放在这个里面产生一个克隆,他等会呢每次克隆的时候,我们将他的这个 x 增加一个一百,就是往后面再产生一个一百的,后面再产生一个克隆。为了让我们能区分啊,那是第几个克隆,我们将颜色增加个十二吧。好,我们来看一下效果 啊,其实呢,我们现在呢已经生成好了二十张图片了,但是呢有很多的图片呢,他都在这里啊, 由于呢由于他的运动的极限,我们看一下啊,每一个这个角色他都有一个运动的极限,像我这张一百乘一 一百的图片呢,他的运动极限是二百七十五,所以呢往后的图片呢,都会叠在一起,因为他走不过去了,那怎么办呢?我们可以画一张大一点的图片,来看一下他的运动极限 啊,这里画了一张很大的图片啊,换一个颜色啊,我们来换成这个造型来试一下,看他们的运动极限是多大 啊,已经有六百了,有六百了,说明呢,我们这个小图片呢,如果可以往后面走的话,他可以走到六百的距离去了,已经够了,够我们用了。好,这里呢我们把这个本体给它隐藏起来,克隆体启动的时候再显示吧, 啊,启动一下啊,但是呢我们发现啊,看一下空格,所有的图片呢都叠在了一起,所以呢我们想要看到的呢其实是一张 小小的图片,所以呢我们换成一号造型再来一次啊,现在呢我们发现啊这里呢并没有叠在一起了啊,并没有叠在一起了, 因为我们刚才克隆的时候呢是用爱好造型克隆的啊,现在呢他并没有叠在一起了,我们可以把他的所有的这个图片往前面滚动一下,我们来看一下 怎么来让他滚动呢?我们结合一下我们这个我的边量啊,这里我的边量没有,我就创建一个地图 x 全区变量啊,既然他设为一个拉杆 范围调成两千吧啊,出手的时候是零,然后我们拉到这个拉杆的时候呢,他会他的只会往后面加 好,这里呢我们重复执行的移动到,我们知道他的 第一张图片呢只是零零,第二张图片呢是一百啊,零,一百和零,第三张图片是二百和零,所以呢我们如果将这个啊移动的 x 减去, 这个是在增加的过程中,比如说我移到一百的时候,这个第一张图片应该移到这里来,所以呢我们这里可以产生一个差,就是 x 减去地图的 x。 好,这里呢我们把这个地图 x 归位,然后拉动一下,看一下, 可以看到后面的图片都依次的展现出来了,但是呢这里还是有一个重叠的位置,因为这张黄色的图片呢,他移动不到后面去啊,我们这里呢,有一个效果啊,换成爱好,再换成一号 啊,再来一次,看一下空投键啊,同学们注意看啊,这是我客人的二十张图片,他呢,依次的是往前面滚动二十张 图片,走到底了啊,走到底了。如果我们把这一百乘以一百的图片换成四百八乘以三百六的,那效果会是什么样子的呢?我们来试一下。 现在呢,我们把刚才的一百乘以一百的图片换成了四百八乘以三百六的图片。我们再来看一下程序运行的效果,他是怎么样子的,按下空格键。 好,我们发现呢,他也是排队过去的,但是呢,由于每一张图片之间间隔了一百,所以呢,他就是这样排列的,我们增加四百八,增加每一张图片的长度,按下空格键试一下。 好,现在呢,我们增加四百八之后呢,他第一张图片啊,就在这个整个舞台的最中间这一部分了。接下来呢,我们来改变一下这个滑轨的范围,把它改成一万了,因为刚才两 钱够,因为每张图片只有一百。现在呢,他以每一张图片呢,变成四百八了,我们改成一万,试一试。好,拉到滑轨看一下,注意看啊,我拉到慢一点啊, 啊,看到没有,每一张地图滚动就出来了啊,红尘还绿青蓝紫。然后我们划到最后面,看最后一张背景,最后一张背景是这张黄色的,最后一张。好,现在呢,同学们应该能理解这个背景滚动的一个效果怎么实现的,我们把这个程序丢到这个地图里面来试下效果, 好,这个我们就不用了,然后地图里面我们用日记吧, 这里呢,为了让他一瞬间发现出来,我们创建一个自制金木地图生存, 平时不刷新屏幕,给这个封装起来,封装一下,这个多余的我们也可以丢掉啊,这些部分都是必须要用到的啊,用大造型来, 这个里面呢,我也做了一个大造型的,很大很大的造型,咳,然后呢,走的过程中呢,换成第一张造型,我们来试一下效果,按下滤镜。好,现在呢,我们来滑动一下滑感 啊,发现呢,每一张地图都是一样的,对吧,那等会呢,我们是不是要进行下一整下一个造型呢?所以呢,在这里呢,我们要建一个私有的边量,叫做编号造型,造型吧, 造型事业的啊,将造型设为一,从第一个 造型开始,每克隆完一个之后,将造型加一,颜色就不要了,颜色就不要了,但作为克隆体启动的时候重复执行的这个程序的最前头,我们换一个啊,让他显示这个大造型 走的过程中呢,让他换成什么造型呢?不可能老是换成一张造型吧,我们可以换成,因为他的造型编号每次加一的从第一张开始继承了他的编号,所以呢,我们这里呢,换成造型造型好,点击立起来看一下效果。 哎,这里的紫色的造型怎么还在这里,我们来看一下啊,这里呢,我们只需要克隆十二赞就够了,所以呢,这个二十次有点多了,改成十二次,再来点一下滤镜。好,接下来呢,我们来慢慢的滑动一下他,注意看现在呢整个超级玛丽 里面的场景呢,我们已经生产成功了。已经生产成功了啊,下节课呢,我们来讲解一下这个马里奥里面的程序如何来通过马里奥的移动来实现背景的滚动。好,今天的课程就讲到这里。嗯,你的点赞和支持是我更新的动力,我们下节课再见,记得三连哦。
粉丝5.1万获赞12.6万
在上一集中,我们实现了射击游戏的基本功能,包含英雄角色的移动,按下空格键发射子弹, 僵尸角色的不断出现以及向英雄角色进行攻击,被子弹打中之后生命减少,直到三次之后消失。 那这一次呢,我们做三个增强,第一个呢是给英雄角色一个新的武器,并且能够实现两种武器的切换。第二个呢是给我们的僵尸角色也增加一种啊,分类两种不同的僵尸呢交替出现。 第三个呢是,呃,让我们的僵尸如果把我们的英雄角色生命值耗完之后呢?游戏结束,然后我们从第一个功能开始, 首先给我们的英雄角色绘制另外一个造型, 好,我们给他绘制成机关枪的造型, 用画笔调细一点,颜色呢,设定成跟机关枪的颜色一样,或者呢稍微浅一点有所区分。把这个地方画一下 啊,这个呢可以再优化一下, 好,可以让他在枪杆子再长一点,放在最前面。好,这个呢跟普通的手 口腔呢就有所区分了,这个颜色呢,调节成跟它的颜色一样, 好保存一下。那如何实现这两种造型之间的切换呢?我们通过按下一键和二键来四键,这里增加一个判断条件, 如果按下数字一,我们就切换成 手枪的造型,我们给造型起一个名字,这个叫手枪。第二种造型叫加特林, 好,那这个地方呢,就切换成手相的造型,如果我按下的是数字二键,我就给他切换成加特林的造型。 数字二, 好,那一开始的时候呢,我们需要一个默认造型,手相造型来试一下。 二一,二一。好,那不同造型的这个武器他都有什么样的不同点呢?好,第一个呢,我们是希望他移动的啊,发出发射的速度是不一样的,如果是手枪,我希望他啊更快,移动的更快, 但是呃准确度更高,如果是机,呃加到零的话,移动的慢一些,然后呢间隔呢?更啊小一些,同时准确度没有那么高。 所以呢,我们就需要在子弹这个角色里面去判断一下当前是什么武器,那我们如果用呃角色呢,就不太容易在 子弹角色里面去识别出来,所以这个地方我们要优化一下,通过一个变量来实现叫武器。好,一开始呢,把武器设定成手枪, 然后换成 武器造型,这样实现的功能是一样的,也是换成手枪这个造型,我们把它放到宠物执行里面,这样呢,我们之后只要改变这个变量的值,他就会换成对应的造型,所以这个地方我们把武器设定成手枪, 按下二键把武器设定成加特林, 好保存一下,那在这个角色二里面我们就可以有所区分了, 我可以判断一下,如果 武器这个变量 等于手枪,我呢还是让他直接面朝正确的正常的这个 方向,如果他的武器是加特林,我就让他的准确度没有那么高,让他在原来这个方向的基础之上呢,加上一个随机值, 加上一个重复五到正五的随机值,然后把它的结果放到这个里面, 然后呢往下移动的这个速度呢,我们也做一个区分,依然是判断一下武器现在到底是什么类型啊?没有用的,删掉。 如果武器是手枪的话,我让他移动的快一点二十,如果是加特林的话呢,速度稍微慢一点。十, 好,保存一下,我们来测试一下。 好,现在是手枪,他是值得射击出去的,我们换成二好,能够看到他射出出的准确度是有所区分的,但是呢,对于机关枪来说,这个频率显然太慢了,我们 把这个频率呢再优化一下,按下空格键是我们发射子弹的代码,这个地方 方等待零点三秒,我们让他根据他不同的武器呢来做一个调整。如果武器是手枪的话,我们保持零点三秒的间隔, 手枪零点三秒的间隔,如果武器是加特林的话,我们就让他快一点,加特林只需要等待零点一秒。 好,测试一下,首先还是这个间隔换成二好,明显会变快一些, 好,保存,那这样我们对于英雄角色的增强呢就做完了。 好,现在我们来做对于僵 角色的增强,我们让他出现第二种形态。首先呢在造型里面复制一下,我们通过颜色来区分他不同的形态,我们把这个颜色给他改成另外一种颜色,你可以挑一个自己喜欢的颜色,这个地方我把它改成橙色。 好,第一个造型呢,我把它叫做普通僵尸。第二种造型,士兵僵尸。那最终呢,我们会再加一个啊,大 boss 的僵尸王,我们目前呢先添加这两种。 好,那这两种僵尸他啊如何间隔出现呢?我们通过随激素的功能来实现, 在一到四之间产生随机数呢,他就有四种可能,一,二,三, 三,四。当这个随机数等于一的时候,等于一的时候,我让他出现的是 士兵僵尸,其他的几种情况呢?都出现普通僵尸,这样的话,正常情况下呢是普通僵尸,在百分之二十五的情况下出现的是士兵僵尸啊,如果随激素等于一 好,测评一下他的造型, 好,这里呢我们也通过变量的方式来做新建一个变量,适用于当前角色叫僵尸类型。 我们呢如果是一的话,就把类型设定成士兵,如果是其他情况二三四的话呢,就把它设定成普通,然后呢当这个克隆体出来的时候,我们就可以给他做一些不同的处理了。如果 是普通僵尸的话, 来一个判断,如果僵尸类型等于普通,那他呢是三条命, 如果僵尸类型是士兵,那他就是六条命,好,他的生命值更多一些。同时这个地方呢,要切换一下他的造型,如果是普通的就是普通造 普通造型,如果是士兵就是士兵的造型,好,开在一起 好,那除了生命值的不一样呢,我们让两种不同类型的僵尸,他的移动速度也不一样,在移动速度这个地方呢,也做一个调整,好来一个判断,把没有用的呢给删掉。 如果是普通僵尸,我让他还是移动一步,如果是士兵的话,让他移动的稍微慢一点垫后。 好,我们来测试一下降温, 点击滤芯之后呢,首先出来一个橙色的士兵类型的,然后呢又出来一绿色的普通类型的僵尸。 这里我们按下空格键的时候呢,有一点卡顿,我们检查一下代码, 好是这个地方我们的子弹发射呢,应该是在按下空格键之后,所以呢是按下空格键之后, 要克隆一下子弹,并且判断一下当前是什么类型,从而等待不同的时间。我们再测验一下,好,换成二。好,没问题, 好,我们再添加一个新的功能,不同类型的武器呢,让他的伤害值也不一样。现在机关枪和手枪他的伤害呢都是一,我们把它改成,呃,机关枪呢是一,如果手枪直接打中的话,伤害是二,我们来验证一下, 新建一个伤害, 一开始默认武器是手枪,所以伤害呢设定成二,如果我切换成加特林的话,就需要把伤害呢设定成一, 如果再按回一的话,换成手枪这把伤害重新设定成二。好,那这个伤害变量应用在哪里呢?在我们的僵尸这个里面。 好,之前这个地方是如果碰见子弹的话,直接增加负一,我们把这个地方改成我们新建的伤害的变量 好,因为伤害呢是一个一和二的正数,我们需要通过乘以一个负一的方式把它变成一个负数伤害放到里面,这样的话,如果你的武器是手手枪的话,他的伤害呢就是二,如果是机关枪的话,就是一, 好,两下就把他打死了。一,二,好的, 那接下来我们来做英雄玩家的生命的概念, 首先呢,我们要通过一个新的角色来记录英雄角色他当前的生命值,我们可以在这个地方绘制一个爱心,也可以直接从角色库里面挑选,有一个很合适的角色叫 pat, 好,我们选择这个角色呢,他太大了,我们的造型里面呢,把不需要的删除,同时把原来的这个呢放小一点,选中 再放小一点。好,差不多好,这个呢代表他生命值只有一的时候,我们同时再做几个 其他的造型复制一下。然后呢把这个爱心也复复制和粘贴一下。 好,两条命的情况下,再复制一下,复制粘贴 三条命的造型。好,我们把其他的变量呢隐藏掉。 好,把爱心放在左上角。 好,如果还比较大的话,我们可以通过角色里面的大小呢来设定 保存一下。 好,我们通过一个变量呢来记录英雄玩家的生命值, 英雄 好,这个英雄的生命呢,一开始的时候我们把它设定成三,将英雄生命当地去被点击设定成三,然后呢我们这个 爱心的造型呢,就需要切换成生命等于三的情况,换成 三造型好,三颗星星,那随着我们的生命呢,因为碰到僵尸之后会发生变化,所以这个地方呢,我们要加一个宠物执行, 当我的生生命变量发生变化的时候,这个地方呢能够换成对应的造型。那如果我发现生命英英雄生命的变成零了, 就需要停止这个游戏了,所以我们加一个判断,如果 英雄生命小雨衣, 我就停止 全部脚本,停止这个游戏。那英雄生命怎么样减少呢?我们在 玩家里面添加一个侦测的事件,如果我们的英雄玩家碰到了僵尸,就需要把自己的生命值减一,所以加一个宠物执行的判断。如果碰到了 僵尸角色,也就是角色三,我们需要把他的变量生命增加负亿。 好,要加一个当你具备点击的事件,那如果只有这几行代码的话,他碰见这个英雄之后呢,血会迅速的减少到零,因为中间没有间隔,所以呢要加一个,等待一秒或者零点五秒都可以,给你逃离的时间,我们来测试一下。 好,如果我故意走过去,哎,能看到生命值减少了,状态太快了,我们离远一点,一次好两个三个,当他减少到零的时候呢,游戏就停止,就就停止了。 好,我们回顾一下今天我们助的增强,第一个呢是给我们的英雄玩家增加了切换武器的功能,从默认的手枪添加了一个加特林,可以通过按下数字一和 数据二进行切换。不同的武器呢有不同的特点,他们的发射间隔不一样,造成的伤害不一样,对应的角度和速度呢也不一样。 另外呢,对于僵尸角色我们增加了一个新的类型,在普通普通类型的基础之上增加了一个士兵的类型,不同的状态,他的造型不一样,生命值不一样,移动的速度也不一样。 然后呢,最后给我们的英雄玩家增加了生命的概念,如果我们的玩家碰到了僵尸,就需要把生命值减一,当生命值最终变成零的时候,游戏就结束了。接下来呢我们会给射击游戏引入成就体系,也就是我们会 增加金币的概念,当你击杀了不同的僵尸之后呢,会得到对应的金币,这些金币呢可以在商店里面去购买对应的技能, 那这一部分怎么实现呢?我们再下一次再讲。
哈喽,大家好,从上一个视频大家的留言数量来看, rpg 和卡牌是投票数量最多的两个。接下来呢,我会基于国外作者 opic 的教程,给大家制作一个中文版本的教程,至于卡牌和其他游戏,我也会制作相应的作品,后续陆续给大家分享教程。多说一句, 这个教程比较适合有一定学问技术的小伙伴,如果你没有编程基础,当然也是可以学习的,只是要多花一些时间来思考。下个视频告诉你怎么来跟我们一起编程创作。
在这个教程中,我将跟大家一起重新开始做一个僵尸射击的游戏。在这一集中,我们将首先实现基本功能,包括玩家的移动, 子弹的射击,以及检测僵尸是否被击中等基本功能。打开 surprise 软件之后,我们首先把自带的默认小猫角色删除,然后绘制一个新的英雄角色。 我们首先选择圆圈,按住 shift 可以画一个圆,放大一下, 可以调整一下它的大小和位置,放到中心点的位置, 填充的颜色我们选成白色,然后选择直线,添加上他的。 然后呢,重新选择矩形,去画一下他的武器。好,这个地方的轮廓可以设定成零。 填充颜色选择成灰色,跟我们的手臂颜色有所区分,可以调节一下他的位置。好,大小。 好,这样我们英雄玩家的角色就绘制完成了。现在背景呢,也是白色,跟玩家有所重叠,我们把背景改成浅灰色,营造一些灰暗的氛围, 拖动转化成为图喷壶。好,接下来呢,我们通过编程让角色能够行动起来, 当绿旗背。点击,判断一下有没有按下上下左右键。 首先是如果按下左一键,我们让我们的英雄左转五度,默认十五度,太大了,我们改成五度。如果按下右一键, 右转五度, 如果按下上一键,让他前进十步,十步呢,也太快了,我们改成五步。好,如果按下下一键,我们让他后退五步。 这个判断过程需要放在重复执行里面,否则他只会判断一次,并不能一直判断。好。 我们点击绿棋测验一下,左右前进后退没有问题。好,保存一下。 好,接下来呢,我们要让我们的英雄角色具有发射子弹的功能,我们要先绘制一个子弹 好,在造型里面,这个子弹呢,我们绘制简单一点,用一个黄色的小方块来代替,当然你也可以选择自己喜欢的颜色, 我们选择黄色的子弹 好,判断一下大小是否合适,有点大放小一点 好,差不多好。有了 子弹之后,他都有什么样的功能呢?只有一个子弹,我们要连续发射的话,就需要用到克隆的功能, 当我按下空格键之后,我需要克隆几发子弹,所以呢,我们要有一个判断空格是否按下的功能, 好,依然是重复执行这个判断, 如果按下空格键,我就要克隆一下子弹 好,按下空格我们看看 好,子弹已经被克隆出来了,那这个子弹被克隆出来他应该有 什么样功能呢?首先他应该立即移动到我们的武器这里来,好,我们把这部分功能加上,当利器被点击的时候,默认子弹是隐藏的, 当克隆出来这个子弹之后,他应该立马显示出来, 显示出来之后呢,要移动到我们的武器这个位置,运动一道 角色一就是我们的英雄武器。好,这样我们能看到他有两个小小的问题。第一个他虽然移到了角色一这里,但是呢是在左边这个位置,并没有在枪杆这里。另外一个呢,是他这个方向是水平的, 并没有像这个角色翼一样斜向上,所以我们要通过一个面向方向的功能,首先把它的方向调节一下, 在侦测分类里面有一个舞台的背景编号,我们把它选择成角色一的方向, 这个数字就代表着我们的英雄角色所朝向的方向,把它放到面向方向里面,好,能看到我们的子弹的方向发生了变化。好,那怎么让他重合到这个武器这个部位呢?我们让他往前移动一定的距离, 我们试一下三十 有点过了,来个二十八, 二十九, 好,这个位置正好,这个数字呢是需要根据你实际的位置来。呃,自行调节的。好,我们保存一下, 当这个子弹出现在武器部位之后呢,接下来他就应该不断的往前移动,直到打中僵尸或者碰到舞台边缘,我们用一个重复执行指导,让他重复执行往前走,直到碰到舞台的边缘, 下拉选项选择舞台边缘。我们试一下。好,现在子弹已经可以发射了,但是呢有两个问题,第一个是按一下空格出来好多子弹,同时这个子弹到舞台边缘之后没有立即消失, 我们要添加一个删除此刻龙体。好,这样呢,当到边缘的时候子弹就会消失。 那为什么按下一下空格会出现这么多子弹呢?是这个地方他判断的很快,所以克隆了很多个子弹,我们要在每一次克隆之间加一个等待零点三,这样即使你长时间按照空格,他也不会 出现太多的子弹,我们验证一下。好,他有一个时间间隔。好,到这里我们的英雄角色以及发射子弹的功能就做完了,保存一下, 接下来我们来做僵尸。首先呢,我们也可以在这里绘制一个你想象中的僵尸的角色,我们也可以呢,像这个英雄角色一样,用一个简单的 简体化来代替,我们复制一下, 用箭头把他的武器给去掉,然后呢把他的胳膊呢和颜色稍微调整一下,跟我们的英雄角色有所区分,我可以把它变短一点,然后呢变宽一点, 好,当然这个这个环节呢,是需要你自己来设计的,你可以模仿我的,也可以自己设计自己的僵尸角色,这个颜色呢,我们给他改成绿色, 好,深绿色好,这是 我们的僵尸。好,那这个僵尸应该有什么样的功能呢?我们设设计的功能是僵尸呢,要从舞台的右边缘不断的出现,然后朝着我们的英雄角色进行攻击, 那这个呢,只有一个僵尸造型,我们就需要用克隆的功能,让他不断的产生, 把原来的模块先删掉,我们让他每隔一点五秒 克隆一下自己, 好能看到已经有好几个僵尸出现了。一开始的时候呢,让这些僵尸隐藏,当他被克隆出来之后 再显示出来。好,那他显示出来应该在什么位置呢? 可能一下子出现在舞台的中间,这样的话英雄角色很难判断,游戏呢就太难太难太难体验了,体验感比较差,所以我们让这些僵尸呢,一开始出现在舞台的右边缘,然后慢慢的朝着英雄的方向移动, 我们加一个移动的模块,让他出现在最右边,最右边通过 x 坐标来判断, 让他移动到两百五,那他上下位置呢?我们通过一个随机数,让他随机出现在右边的上下位置, 上下位置是一百八到负一百八,为了防止在最边缘出现,我们用负一七零到正一七零。好,我们试验一下, 一个两个,三个好出现的位置是不一样的,那这些僵尸克隆体出来之后,他就应该朝着英雄角色移动了,所以我们要用一个面向 我们的角色一,然后呢重复移动,重复执行面向角色一,每次移动一步, 好,我们穿,随着我们的移动,这些僵尸呢也会改变方向,不断朝着你进行移动。 好,好,那接下来呢,我们就需要去做一下攻击的功能,当我们的子弹击中 这些僵尸之后呢,僵尸应该消失掉,所以这里面加一个判断,如果在行进的过程中碰到了子弹, 角色二就应该删除自己这个克隆体。好,再测试一下, 好,能看到。我们的子弹打中僵尸之后呢,的确消失了,但是呢也有两个小问题,第一个呢,是我们的子弹打中了僵尸之后呢,子弹并没有消失,而是继续往前行进了,这样呢不符合常识。我们把子弹呢增强一下, 当他碰见五条边缘或者打中僵尸之后,子弹都应该消失,所以这个地方我们用 一个或者碰见舞台边缘或者碰到僵尸,都应该删除这个克隆体。 那对于僵尸来说呢,打中一次呢,太脆弱了。我们给这个僵尸角色赋予一个生命值,我们假设他的生命是啊,三,要击中他三次,他才会消失,所以我们要在变量里面建立一个 僵尸生命, 注意这个地方要选择仅适用于当前角色。 这样的话呢,我们每一个克隆出来的僵尸呢,才会有自己的生命变量,我们把它叫私有变量。好,每一个克隆体出来的时候呢,僵尸生命 设定为三,他有三条生命,每一次被子弹打中呢,都要减少一,加一个判断,如果碰见角色二,也就是子弹,他应该增加负一,也就是减少一, 那什么时候这个僵尸应该删掉自己呢?当他的生命值变成零的时候,我们加一个判断,如果他的僵尸生命值小于一了,也就是变成零的时候,他应该删除自己。 好,我们来测试一下, 好,三次,好,三次消失了。好,功能没有问题, 但是呢,我们打中他之后呢,僵尸并没有任何反应,我们不确定是否打中了,所以我们给他加一个特效,让我打中僵尸的时候呢,闪烁一下,证明我的确打中他了。这个功能呢,我们通过外观分类里面的特效功能来实现。 好,默认是颜色特效,我们改成亮度,我们先测试一下,好,把僵尸拿出来,我把亮度特效设定成八十,我们看一看他的变化,好,变得特别的亮,仿佛被手电筒照到一样,如果重新把这个特效设定成零, 他就会恢复原状,我们在这两个设定之间加一个短暂的等待,零点零五。好,我们看看,他就会 闪烁一下,我们把这部分代码放在当他碰到子弹之后, 测试一下。 好,二三,消失了。一二三,一,二三,好,没问题,保存一下。 好,那到这里呢,我们的射击僵尸的基本功能就已经完成了,我们有一个英雄角色,按下上下左右键可以移动,按下空格键可以发射子弹, 子弹呢,击中了僵尸之后呢,僵尸会减少一条命,每一个僵尸呢有三条命,当三条命都完了之后呢,这个僵尸就消失了,然后僵尸呢是每隔一点五秒会出现一个。好,那后面 的功能呢?我们会给僵尸呢增加一个更强大的啊,不同的种类,给我们的武器呢增加一个 加特林机关枪的功能,让这个游戏呢更好玩。这一部分呢我们放到下一集。
今天开始,我向老师带大家做一个游戏,超级马里奥,可以点击右下角全屏观看这个视频,游戏中用到的素材可以通过视频下方的链接打开公众号获取。我们从最简单的开始,一个马里奥和一块地砖, 先给马里奥先生编程,当率即被点击,把它移到零负一百二十八,地砖的初始化代码是零负一百六。 想来了,怎么让马里奥先生走起来呢?这里可不是将马里奥先生的 x 坐标增加, 要是马里奥先生向右移动一会,他就跑出舞台了,啥也看不见了,就没法打游戏了。也就是当马里奥先生向右走的时候,地砖 向左退。怎么实现呢?你可以先暂停视频,想一想,我们得知道马先生向右移动了多少,好让地砖向左移动这个数值, 建立一个变量 a 吧,按右一键让 a 增加十。 地砖呢? 地砖的 x 坐标需要减少 a, 对吧?把他的 x 坐标减 a, 这样可以吗?嗯,他不只是按一次,不止移动一次,所以我们还需要加一个重复执行, 你猜猜看,现在可以移动了吗?运行,但有一点,呵,妈呀,这是一脚把地砖给踢开了,马先生腿上的劲也太大了吧, 因为这个重复执行, x 坐标一直在减少,重复执行就重复减少了,不能一直减少。那该怎么办呢? 所以我们需要一个变量,记录地砖最初的坐标。建立一个变量,这个变量只用来记录 地砖最初的坐标,所以是一个仅适用于当前角色的变量,叫地砖 x 坐标吧。把这个变量设为 地砖的 x 坐标,再重复执行的,把地砖的 x 坐标设为 这个变量 减 a 来试试看。哦,这样可以移动了。再把马里奥的代码 复制一个,然后按下做一键将 a 增加复式, 这下 ok 了,别忘了当绿籍 被点击将 a 要设为零 a, 我们可以给他取一个能看得懂的名字吧,叫横向滚动。你知道为什么叫横向滚动吗?
大家好,这里是新宝龙,我是侯老师。这节课我们做一个玛丽奥吃金币,好,开始喽。 好,我们的金币一开始假设在这里。好,比如说程序一开始的时候,假设移动到这里,对吧?然后呢?我们 就是啊,我们加一个显示出来,然后移动,一直一直这样复制过去。好,比如说我们重复执行八次,就是要复制八个, 就有个在控制,那有个克隆自己,然后我们把坐标移一下,这样不不就 不会重叠,对吧?比如说增加四十五,然后我们复制完之后我们要把它隐藏,这个本体全部都是复制体验,看好,这样就可以, 然后我们还要判断一下,这金币碰到这个马里奥就要被吃掉,对吧?所以我们 当当克隆提启动的时候,我们要一个循环去判断,一直在在在判断,就是碰到了,碰到了那个玛丽奥了, 碰到玛利奥我们就就说,比如说我先播放一个声音,登一下以后就把那个金币删掉,就是说被吃掉一丝,好,这个就金币就编成完了。好,然后玛利奥啊,玛利奥 一开始是在这里,好,好,一开始是在这里,就开始的时候, 我们用拨动话时候,是不是循环下一个造型,对吧?循环环,然后下一个造型有个,当然时间要控制一下。 好,然后我们向右走的时候,比如说按下向右键的话,我们这样的 x 增加就向右走, 这个 x 增加就向右走,这就二十八号,我放大试一下, 好,这就可以,是吧?好,这节课就上到这里,谢谢大家。
噔噔噔噔从这个视频开始,我将跟大家一起重新开始制作一个 surprise 版卡牌游戏。为了精心准备卡牌游戏制作教程,我调研了目前主流的卡牌游戏,并借鉴了其他博主的优秀成果。 在结合多款视频教程的经验以及大家积极的留言,我将分十级完成这个作品,根据大家的评论建议会适当修改哦,欢迎大家踊跃评论。鉴于大家在之前的视频中经常问我课程是否收费,软件是否收费,我在这里统一回复是免费的, 学费就是点赞收藏加关注。我们也建立了学习交流粉丝群,有很多热心的粉丝会互相解答问题,欢迎你的加入,共同进步。当然侯老师仅仅只是做免费的课程,完全没有收入,肯定也是坚持不下去的,所以我也有小店售卖一些硬件编程的套装, 点我主页可以查看详细介绍,期待你的支持!话不多说,开始编程。在第一集中,我们会首先实现基本的发牌特效,点击发牌按钮, 我们会给敌人发七张牌,给我们自己也发七张牌。敌人的牌我们只能看到背面,我们的牌可以看到正面,并且鼠标悬浮在卡上面,会有一个特效,把它放大,展示我们卡牌都有什么样的属性。 今天我们来完成这个功能。点击文件新作品我们从一个空白的作品开始创作,首先将自带的小猫删除,接下来我们来绘制需要的塔牌以及按钮。我们首先来改变一下背景, 用一个深色的背景让游戏更有氛围。我们选择长方形,来一个渐变色,从灰色,深灰色变成黑色,那这个地方选择渐变,调节一下属性值到深深灰色,然后拖动他。 当然这个颜色呢,你可以根据自己的喜好来设定。当我们发牌的时候呢,中间会有一条白线,用来区分上面敌人的卡片和我们玩家的卡片,所以我们把它复制一下,改成白色,轮廓也改成白色。 好,这个渐变效果去掉。好的背景绘制完成之后,我们来绘制我们的角色,首先是这个地方要有一个卡包,我们还是选择一个渐变的颜色, 绘制一个长方形,适当调整一下大小,放在正中间,他的边缘我们可以加一个轮廓,稍微来一点浅灰色吧。 好的,然后呢中间呢,我们给他写一个卡,按住 shift 可以是一个正圆好填充的部分呢,我们让这个卡包有点不一样的感觉,这个地方呢,我们让他偏红一些,中间写一个卡字, 把这个呢设定成白色,稍微有点小,我们把它调整一下。然后呢我们也可以加一些装饰的直线,这个直线的颜色呢,我们也改成跟刚才轮廓一样的浅灰色吧,让它出一点。 然后呢简单的给他画几笔,让我们一个卡牌的轮廓呢就画完了,为了赢到这个卡牌 重叠的感觉,我们可以选中最外面这个轮廓,点一下,复制,粘贴好,往旁边挪一挪,选择放在最后面,再复制,再粘贴,挪一挪, 放在最后面,这样就有卡包的这个感觉了,重叠的感觉,好的,那这个呢,我们给他起个名字叫卡包或者卡牌包都可以。 接着呢,来创建一个我们的敌人的卡片和我们自己的卡片,敌人的卡片跟这个呢是很像的,我们右键复制一下,简单改一下,他不需要背后的卡包的感觉,只需要这个卡就可以了,对不对?好大, 待会我们可以适当的再修改一下。然后为了有所区分呢,我们把这个渐变的色给它去掉, 改成跟这个一样的就可以。好,这是这个取出去的卡,卡包的卡有所区分,当然你保持一致也是可以的。然后呢,我们来汇集一下玩家的卡片,这个改成敌人卡, 玩家卡好,玩家的卡呢显示的是正面,所以这些我们就不需要了,好,选择键盘上的删除键或者这个删除按钮也可以。 我们把这个颜色呢给他调成,调节成蓝色,再来一个不一样的蓝,有一点渐变,看着更好看一些。 好,当然了你也可以选择自己喜欢的配色。然后呢旁边的轮廓呢,我们也给他改成黑色吧,蓝色配黑色。然后呢往上面写一下我们卡牌的名字,第一张卡牌用狮子, 然后呢默认他是这个颜色,我们改成白色。然后呢这里有一个小技巧,这个文字的怎么样实现加粗的效果呢?我们可以通过设定他的轮廓来实现,选中他, 箭头选中他,把这个轮廓增加一,他是黑色的对不对?我们也改成同样的颜色, 白色好多了,一个白色的轮廓就显得有一些加粗的感觉。然后呢我们要去找一个狮子的造型,点开我们的造型库,点到动物, 找到狮子,好,这里点中他之后呢,他在这个造型里面,对不对?我们通过这个箭头用一个选中,然后呢你可以组合一下,复制到这个造型里面,点一下粘贴, 调整一下他的大小,放到中间位置,好差不多,然后这个造型呢就可以把它删除了,在这个下面呢,我们要介绍一下我们卡牌的一些属性,再来一个 t, 这个狮子呢是三点生命, 然后把它改成白色,变小一点,回车一点伤害,需要耗费一个法力。 好,为了对齐呢,上面你也可以给这个正的数字呢加一个空格,往下放一放,我们玩家的卡牌也就绘制好了。我们再来一个发牌的按钮,绘制一个 接一下他的颜色,这个颜色呢我们可以还是用灰色,灰色,然后他的旁边呢轮廓可以用一个稍微深一点的颜色加粗一点。好的,这中间呢我们写上发牌 颜色,注意选成黑色,有所区分,调节一下大小啊,太大了,我们把按钮开小一点,在中间这个位置,那接下来我们就要编写具体的程序了。那首先对于发牌来说,当我点击他的时候呢,我 希望他能够通知我们的两个卡牌,开始呢出现在我们下方,那我们当这些被点击的时候,首先这个发牌是要显示出来的,然后当我点击他的时候,他就应该隐藏, 同时呢广播一个消息,通知我们的两个卡牌,开始做自己的工作,通知一下发牌了,看到我们的背景,刚才也有两个,对不对?一开始的时候我们换成背景一 哦,点了发牌之后呢换成背景二,当这些被点击好,当我发牌之前,这两个是不是应该隐藏啊?所以对于扔卡来说, 当力气被点击的时候,他是隐藏的好,对于玩家卡也是一样,拖动他可以复制过来点击。 好的,现在是一个初始的画面,点击发牌,他们接收到消息的时候是不是应该显示出来呀?所以呢,当我们接收到 发牌消息的时候,让他显示出来,但是因为我们只有一个敌人卡,你即使显示出来也只有一张,对不对?那因为我们要发七张牌,所以呢,我们要用到克隆的功能,这个地方呢,我们做一下克隆, 当接收到消息的时候,克隆自己重复执行七次, 每一次呢稍微有一点间隔,克隆自己, 克隆自己。然后呢,为了有这个延迟一点的效果,不要太累,在一起全出来,我们让他稍微等一会,可以等 个一秒。好,然后呢,我们让我们的克隆体出来的时候显示一下, 显示一下,然后呢?点立即。为什么没有显示呢?我们查看一下发牌哦,代码是空的哦,刚才我们不小心把代码写在了玩家卡里面,他应该在发牌里面,我们给他拖过去 检查一下。好,现在代码已经有了,那我们就可以把这个地方多出来的删除。 好,现在点进去发牌换了按钮了,哎,出来了一个敌人卡对不对?好,那我重复使用七次,为什么只出来一个呢?他都重叠在这个地方了,所以对于克隆体来说呢,我就需要他移动一个位置, 怎么把他们区分开呢?我们就需要让我们的每一个克隆体呢,都往右,也就是 x 坐标增加一定的数值,那一开始我们把本体的位置给他固定好,那本体一开始我让他在这个位置 好,然后呢当他显示出来之后呢,我让他往右移动,将 x 坐标增加,假如说是移动五十吧,我们试一下发牌一 好,应该是本体每一次移动五十再克隆,我们再试一下。好的,没问题。那现在呢,挨的还有点紧,我们再改成七十。 好,这次呢已经松开了一点,但还有一部分排出去了,改成六十五。这个过程呢大家多查 尝试一下,找到最适合你大小的就可以了。好的,没问题,但是现在呢还有点紧,我们把这个大小呢给他设定一下,将大小设定为 七十五啊,的话,正好均匀排列没有问题。但现在呢,是不是并没有从这个地方抽排出去的功能啊?只是沿着这个地方出来了,要实现这个效果呢,他稍微难一点,这个呢作为可选项,大家可以啊,跟着我来操作一下。 那为了让每一个牌都从这个地方直接到他自己所在的位置,我们需要做两个改动,第一个改动是每一个克隆体出来的时候呢,要移动到卡包的位置,先移动到卡牌包后呢,我们来一个出牌的 声音,点到声音这个地方呢,他本身自带一个,你也可以自己录一个,点击下面的声音,录一个随便什么声音啊,就是你假装出牌的声音。 好,我模拟了一个秀的声音,大家可以自己录制一个,然后呢我们播放一下,每出一张牌就播放一下这个声音 好,然后呢他应该移动这个这个位置之后移动到哪一个位置呢?是不是每一个的位置都不一样啊?所以呢,我们就需要通过变量记录一下,仅是因为当前角色,因为每一个克隆体都有,我们叫 卡牌编号,一开始的时候把卡牌编号设定成一第一张卡牌, 然后每克隆一次,都把卡牌编号增加一, 这个就不要了。好,对于每一个卡牌,我们都应该让他把先隐藏掉,基于这个位置往右挪就可以了,我们这个是负一百九十五,对吧?我们加一个滑行效果,依次填小数的零点二秒内滑行到哪个位置呢? 好, y 坐标还是一百二十六? x 坐标呢?我们给他改一下,他应该是跟他的号有关系的,在他原来的基础之上负一百九十五, 这是最左边的这个位置,加上跟他编号相关的,他编号是几就应该是几,往右挪几个六十五,对不对?所以我们应该有一个乘以一个六十五,那第一个他是不用移动的,所以我们 我们把它减去一,这样就完美了。拿编号减去一乘以六十五,代表着基于第一个往右挪躲远,把它放进去。好,我们运行一下发牌。 哎,这个发牌的过程是不是就模拟出来了?那接下来同样的功能,我们可以做到玩家卡里面,我们把这个功能复制一下 玩家,玩家,玩家,好到玩家里面,他显然初始的位置是需要变化一下的, 把玩家显示出来,他在这个位置, y 坐标是负一百一十六, 如果是负一百二十六的话,会不会上下对称呢?显示出来好,把他的大小呢?给他也设定成七十五,移动到卡牌位置,卡牌编号,卡牌编号也没问题,来,我们运行一下, 我们让玩家牌先出吧,不加,等待了,走你哦。好,这个位置我们没有改,对不对?地方没有改,他应该是负的,要不然两个就重叠了。 好,这样的话,这个过程我们就发牌的过程模拟完了,然后对于这个玩家卡呢,我们给他增加一个特效,当我的鼠标挪到上面的时候,我希望让他能够变大一些,他的时候呢变小一些, 我们加一个重复执行,如果,那么否则,如果他碰到了鼠标指针,我就把他的大小设定一下, 变大一些,大小设定为一百,试一下,然后如果没有碰到的话,就把它恢复成七十五, 发牌。好,已经发出去了,变大变大变小,变大变小。然后呢,他是不是被旁边的给遮盖住了呀?所以我们给他加一个,移到最前面,发牌 变大变大变大,如果一百太小的话,改成一百二,哎, 已经有这个效果了,对不对?好,那基本的功能我们就完成了,接下来呢,关于这个变大变小呢,我把它优化一下,这一部分需要一定的数学知识,然后呢比较难啊,这个同学们可以尝试跟着我做一下,我们让这个变大的过程呢更流畅一些。 我们把它大小呢改成每一次都增加,有一个逐步增加的过程,将大小增加,然后呢基于一个基准线, 一百六减去大小,找到他原来的大小 乘以零点二,同时呢他的 坐标呢要往上挪动一点,刚才我们这下面是不是都被挡住了呀?将歪坐标增加,增加多少呢?跟上面这个类似,我们呢,让他基于现在的歪坐标来进行变化,负一百 乘以零点二。好,那这整个增加的过程他应该是不断增加的,直到我们鼠标离开,他又恢复成一个大小,对不对?嗯,加一个,他有没有到最上面? 我们把这个放在这上面,然后右键复制一下,如果没碰见鼠标的话,就让他恢复成我们的七十五。哎,我们运行一下,然后这个大小呢,让他恢复到我们原来的副 一百二十六点。绿奇发牌。好,鼠标挪上来,他变大了,对不对?离开变小了,这有点太大了,我们还用我们刚才的一百二 好点,对齐发牌,鼠标挪上来变大,离开变小。好,我们增加了一个不断变大的这么一个效果啊,他会更平滑一些。当然了,这个一百二还是一百四,这个跟你自己绘制的大小有关系,大家一定要灵活调整。 好的,我们今天卡牌游戏第一集的功能呢,就做到这里了,再次我们会丰富一下我们的玩家卡片,让他有各种不同的属性,然后呢,选中之后可以去出牌,在这一部分相信大家会有很多的创意,你也可以提前思考你想要什么样的卡牌,我们的基本 原理是有生命,有给对方造成的伤害,当然每出一张牌要消耗一定的法力值,如果你还有其他更好的建议,欢迎在评论区里面留言。做完之后一定记得点击文件保存到电脑,给你的作品起一个名字,比如 卡牌游戏第一集,确定一定千万千万记得要保存,否则你一旦关掉,刚才做的东西就没有了。拜了个拜,下次再见。
今天开始,火星老师带大家做一个游戏,超级马里奥,可以点击右下角全屏观看这个视频,游戏中用到的素材可以通过视频下方的链接打开公众号获取。我们从最简单的开始,一个马里奥和一块地砖, 先给马里奥先生编证,当率级别,点击把它移到零负一百二十八,地砖的初始化代码是零负一百六。下来了,怎么让马里奥先生走起来呢?这里可不是将马里奥先生的 x 坐标增加, 要是马里奥先生向右移动一会,他就跑出舞台了,啥也看不见了,就没法打游戏了。也就是当马里奥先生向右走的时候,地砖 向左退。怎么实现呢?你可以先暂停视频,想一想,我们得知道马先生向右移动了多少,好让地砖向左移动这个数值,建立一个变量 a 吧, 按右一键,让 a 增加十。 地砖呢?地砖的 x 坐标需要减少 a, 对吧? 把他的 x 坐标减 a, 这样可以吗? 他不只是按一次,不止移动一次,所以我们还需要加一个重复执行,你猜猜看,现在可以移动了吗?运行按又一键,呵,妈呀,这是一脚把地砖给踢开了,马先生腿上的劲也太大了吧, 因为这个重复执行, x 坐标一直在减少,重复执行就重复减少了,不能一直减少,那该怎么办呢? 所以我们需要一个变量,记录地砖最初的坐标。建立一个变量,这个变量只用来记录 地砖最初的坐标,所以是一个仅适用于当前角色的变量,叫 地砖 x 坐标吧,把这个变量 设为 d 砖的 x 坐标, 再重复执行的,把地砖的 x 坐标设为 这个变量减 a 来试试看。哦,这样可以移动了。再把马里奥的代码 复制一个,然后按下做一键将 a 增加复式, 这下 ok 了, 别忘了,当预计被点击将 a 要设为零 a, 我们可以给他取一个能看得懂的名字吧, 叫横向滚动, 你知道为什么叫横向滚动吗?
你知道这些卡片在干什么吗?为了计算卡片之间的多党关系,每张卡片其实都是在拼命的计算。接下来我将跟大家一起编程,从零开始,做一个杨贵阳,探究一下,观察背后的逻辑。没有编程基础,不知道什么是编程的伙伴也可以通过视频感受一下什么是图形化编程。编程逻辑较为复杂,且设计一定的数学知识, 建议点赞收藏,反复观看。上一集中,我们完成了三个功能,消除卡片,自动前进 以及判定胜利。在这一集中,我们会完成两个功能,一,生成更多的卡片。二、遮挡关系的判断。话不多说,开始编程。首先打开我们上一次的作品, 不知道怎么获取素材的伙伴请从主页查看置顶的视频。接下来开始骚脑编程,这个地方有点遮挡,我们把这个自动潜 前进的模块呢,放到上面,跟自动后移放在一起,这样的话排列更清楚一些。为了实现遮挡关系的判断,我们需要呢给每一个克隆体都创建一个变量,记录一下他有没有被遮挡。所以我们首先创建一个变量,仅适用于当前角色,叫 备遮盖。确定哦,修改一下,给前面加上一个下滑线啊,我用来标志这是一个私有变量。那我们先看一看这个变量是怎么起作用的。对于每一个克隆体起来的时候呢,我们首先把它设定成 no, 他是没有被遮盖的,然后如果他被遮盖的话呢,我们就调节一下他的亮度。那这个功能怎么做呢?我们加一个如果,那么否则, 如果这个被遮盖的变量等于 yes, 好,被挡住了,我们就把它的亮度调低一点,找到我们的亮度负五十。 如果是没有被遮挡,我们就设定成零,恢复成正常,并且我们的点击功能是不是只有在正常情况下才能点击啊?如果被遮挡了,他就是变暗,同时点了也没有什么效果,我们把它放到这里面来, 那什么情况下他应该从 no 变成 yes 呢?那就需要一个比较复杂的计算了,这个稍等我们再讲。我们先来尝试一下,我们把某几个呢变成 yes, 看看 起不起作用,我们加一个如果吧,如果谁的编号等于三,我们就让他先变暗。测验一下啊, 我们找到卡片的编号,如果这个克隆体的卡片编号等于三,我就把这个杯遮盖设定成 yes, 虽然他没有被遮盖啊,这是为了测验一下,我们把它放进去,哎,测验一下, 走你。哎,能看到第三个已经变成灰色了对不对?点他也没有效果,其他的点了之后是正常可以挪过来的。 好的,为了模拟被遮盖的这个效果呢,我们新建一个方块,把它放在这个位置,我们现在有九个,对吧?我们再创建第十个卡片,放在这个位置啊,好,我们把 x 坐标 y 坐标给他列出来, 那歪坐标呢?在最下面的是三十四,上面是六十八,我们取个中间位置吧,间隔是三十四十 七,那就是五十一,然后 x 坐标呢?零三十,中间那就十五。修改了这个坐标之后呢,我们克隆的地方也让他克隆十次, 然后卡片类型呢,就改成四吧,就最后一个,让他第三个吧,第三个应该是胡萝卜,让他出来四个, 哎,没有问题,对吧?那如果我们后面做完之后,是不是这四个应该是被遮挡,应该变灰啊?不能是我们测验的这一个了。那接下来呢,我们来实现真正的遮盖功能的判断。首先我们创建一个积木, 把检测的功能呢都放在这个积木里面来完成,起个名字叫检测是否被覆盖。刚开始呢,我们先不运呃,先不勾选来看一看他运行的过, 回头再勾选上,那这个功能呢,显然是要在这个地方实现的,对不对?他需要重复去检测自己是否被覆盖,然后根据呢检测的结果去判断他是 yesis no 啊,那现在的我们如果运行的话,应该跟这个刚才效果是一样的 啊,对吧?好,那我们怎么样去检测一个克隆体他有没有被覆盖呢?我们来看一看这个情况,那对于后面这个玉米来说,他首先得知道自己是在第几层,对不对?跟这个胡萝卜相比,他的程数关系是什么?如果他的程数比他小, 那并且呢他们俩又挨得比较近,所以他就是被遮盖的关系,对不对?既要判断他们的距离,也要判断他们的成熟,那我们现在呢并没有成熟这个概念, 所以呢,我们首先要创建一个列表,去记录一下每一张卡片它的程数,起个名字,卡片程数。好,那这个列表呢,跟我们的 x 坐标 y 坐标一样,它是不变的。我们前九个呢是第一层, 第十个呢,刚才我们新建的胡萝卜是第二层啊,我们通过这个关系呢去把它的遮盖情况呢去计算一下, 那怎么计算呢?是不是应该把这个克隆体,他的 x 坐标, y 坐标跟所有的都去比较一下呀?看一看他们的距离是不是足够近,并且呢再比较一下成熟的关系,对吧? 那这个怎么写呢?我们就需要首先找到当前的这个卡片编号啊,不能直接判断是否等于三了,要去判断判断这个编号对应的 x 坐标, y 坐标。 我们找到卡片 x 坐标的第几项呢?哎,这个卡片编号的这一项歪坐标也是一样,我们找到歪坐标的这一项, 然后呢他应该跟谁去比较呢?是不是应该跟所有其他的都去比较一遍呀?所以需要用一个重复执行,并且呢每一个克隆体呢,都应该有一个自己的标志变量, 我们把这个标志变量呢记一下,恩,这个,恩呢,他是从一开始的,让他都从第一个去判断设定为一,然后重复执行多少次呢?你有几个卡片,我就重复执行,比较多少次已生成 还是坐标吧,你有多少个,我就判断多少次插进去,然后每一次呢 这个 n 增加一,这样的话是不是就会判断第一个,第二个,第三个,第四个了呀?那怎么判断呢?我们就需要在这里加上一个了,满足什么条件,他就应该是被遮盖呢?设定成 yes, 如果发现他是被遮盖的情况下,就不需要再重复执行去判断了,所以呢,这个脚本就可以停下来了,我们的结构是这样的,对吧?那里面这个条件怎么写呢?我们需要同样去找一下当前这个小 n 这个变量他对应的 x 坐标是多少, 以及他对应的 y 坐标是多少,我们计算一下他们两个一相减的这个数字,好,加上减号,我当前的坐标的 x 值,减去我正在判断的其他的克隆其的这个 x 坐标 的直,然后算出来一个数字,如果他小与就是一半,对吧?被遮盖的话,我们刚才看了,他们的 x 坐标呢,相距是三十,对吧?那我们就跟他的一半十五比较一下就可以了,如果他同于十五来话,正好是小与十六吧,如果小与十六的话,我们就认为他是遮挡住的, 但是呢,他有可能计算出来是一个负数,所以我们给他加一个绝对值,把它放进去,如果这个算出来的数字小于十六, 他就有可能是被遮挡的,对吧?为什么说有可能呢?因为我们还有歪坐标,同样的把这个地方直接改一下, 改成歪坐标,歪坐标刚才呢我们也看到了,他的距离呢,稍微大一点,一百零二到六十八是三十四,那就一半呢是十七,所以这个地方判断小于十八 就可以了。同样的还需要去判断一下他们两个成熟的关系。当前的这个卡片编号对应的成熟应该是小雨我们比较的对象的, 然后呢把它放进去,三个条件呢应该同时成立,所以我们加一个,并且把它放进去,把它放进去,把它放进去。好,代码很长啊,那现在呢,我们来测验一下, 哎,能看到被这个胡萝卜挡着的下面这四个是不是就已经被遮挡住了呀?那这个是怎么计算出来的呢?视频开头,大家记不记得这个地方一直有一个说话, 我们可以把这个过程呢给大家演示一下,我们呢在这个 n 加上去之后呢,让他把这个编号说出来,我们来看一看这个 过程,哎,他是不是一直在判断周围的这些克隆体跟他的关系啊?当他算出来之后呢,哎,他就能够把自己的状态改变一下了。 好的,那我们把这个车宴的代码呢给他去掉,重新运行一下好,初始是没有问题的,但是呢,如果我把这个卡片移走, 哎,他是不是并没有恢复成没有被遮盖的状态呀?这个是为什么呢?是因为按照我们的代码, 他是不是还在跟所有的卡片进行对比啊?这个玉米呢,他还是在跟剩下的这八个还有这个胡萝卜去比较,但其实这个胡萝卜是不是不应该参与比较了,他只需要跟剩下的这八个去比较就可以了,所以呢我们需要呢去动态的调节一下他比较的 这个列表,那我们呢再创建一个,把这个列表的名称呢,给它起成已生成卡片列表。那这个列表呢,因为它是动态的,所以呢当我点击率齐的时候,首先呢把它也做一个清除的处理。 那我每次生成一个新卡片,是不是要把它添加进去啊?我们把它在这里吧,当克隆体生成的时候,把这个克隆体的编号 给他加进去,加到已生成卡片编号吧,因为这个列表里面存的都是他的编号, 我们运行一下好,你会发现他这个已生成卡片的编号跟我最开始的这个 x 坐标是不是一样都是十啊,但是呢,当我选择 得了一个卡片之后呢,他就应该从这个列表里面删除掉,所以呢,我们在下面这个地方,他滑行过来之后呢,把它删除掉,我们找到删除 你生成卡片的第几项,我刚才用的是这个卡片编号,对吧?我把这个十的胡萝卜选中的时候,把它删除就可以了,但是为了保险起见呢,我们呢再去检验一下他前面的这个编号是多少? 已生成卡片编号的第一个就是前面的这个序号,我们根据这个去删除,我们来重新测验一下,注意观察现在这个地方是十,对吧?我删除了他, 走点他一下好,是不是变成只有九个了?看第一个 萝卜点掉之后,哎,前面是不是没有了啊?如果刚才我们直接用二的话,他就不对了,我们应该是删除这个编号。二,在这个列表里面的序号是一啊,所以呢,刚才那个地方要套一下才可以。那我们在这个检测的这个地方怎么去优化呢? 这时候我们就不能直接去看这个嗯了,因为我们去检查检查第一个,第二个,第三个,但其实他的克隆体的编号是不是在列表里面存着的呀?所以这个地方呢,我们要再新建一个边量给他,叫做被检测卡片编号。 那这个被检测卡片编号等于多少呢?其实就等于这个已选择卡片里面的第几项,对吧?我们把它找出来,已生成的卡片编号的第几项 呢?这个小 n 像好,然后呢,这个地方就不用判断小 n 了,应该用我们被检测的编号。后面这个也是一样,被检测卡片编号, 被检测卡片编号。好,这样的话呢,我们再重新测验一下,把这些没有关系的就可以隐藏起来了。已生成卡片编号, 测验一下正常点击之后,哎,是不是重新计算了呀?这样是没有问题的,至少前两层是没有问题的。那接下来呢,我们往里面多添加一些卡片,看是不是正常的。 正常情况下,我是不是应该把 x 坐标, y 坐标,还有这个卡片的程数每一个都填一下呀?比如现在有十个,我需要去维护,第十一个就应该点加号,加号加号,每一个都填,但是呢,这样太慢了。我们有另外一 一个方法,在这个列表上面点击右键有一个导入啊,我提前呢做了一些准备,我们把 x 坐标导入进去,注意观察这个地方是不是变成一百三十五了。 y 坐标导入 一百三十五,这一百三十五个卡片的程数分别是多少呢?导入有些是第一层,第二层、第三层,总共呢有十一层。然后呢,我们把它隐藏起来,重新运行一下我们的程序,走你。 哦,为什么还是十个呢?我们检查一下啊,是生成的这个地方我们只重复执行了十次,但其实是不是应该我有几个你就重复执行几次啊?那这个地方呢,我们把它优化一下, 直接改成我 x 坐标里面有多少个,或者乘数里面有多少个,你就给我重复使用几次。好,那这个 生成的时候呢?因为很多就不能只是一到三了,总共有十六个造型,在一到十六里面去生成,随机数。好,那这个地方呢, 每一个卡片有多少个呢?也不是三三四了,因为总共有四六种造型,我们要生成一百三十五张卡片,所以呢你要合理分配一下,测验出来的话,这个分配方式呢是比较合理的, 我重复执行十三次,也就是前十三类,每一个呢生成九张,后面的三类呢,每一个分六张,这样加起来中共是一百三十五张。那如果你有更多卡片的话,这个地方的计算一定要准确一点啊,每一张都应该是三的倍数, 否则你是不是过不了关了呀?那当然,刚开始撤宴的时候呢,我们可以简单一点,我把一百三十五通通加进去,那其他的不加的话是不是就零啊?也就意味着 我会生成一百三十五张第一个小草的这个造型,走你。哎,是不是啊?但是这个生成的速度是不是比较慢呢?那这个生成的速度我们怎么把它调节一下呢?我们把生成的这个过程创建一个积木,给他起个名字叫初始化, 如果你直接完成的话,其实效果是一样的,加上一个不刷新屏幕,他就一瞬间就完成了。好在这个地方调用一下他就可以了,我们把这个备选啊来 走,你是不是一瞬间就完成了?哎,这会呢在计算他的遮盖关系,那这个遮盖关系呢?同样的我们也可以让他一瞬间就完成。好,再测验一下,走,你是不是一瞬间完成,那我们换成我们真正的 这个每一张卡片的数量运行,哎,这是不是就正常了?我们来测验一下,现在呢就有可能失败了,对不对?上一次失败的功能没有做, 哎,挑战失败。好的,那这一集的视频到这就到这里了,在我们导入这个坐标的时候,如果你需要这个文件的话,可以给我发私信,如果你还有什么其他的问题获得有更好的方法的话,欢迎在评论区里留言,记得点赞收藏, goodbye。
你能编程做出这样的打字机效果吗?在这个视频中,我将跟大家一起编程,从零开始做一个大地图,介绍家乡的作品。这个作品特别适合参加比赛,因为家乡不同,角度不同, 每个人都可以做出独特的创意作品。另外还可以参与点亮地图的活动,你的家乡等你点亮。没有编程基础,不知道什么是编程的小伙伴,也可以通过视频感受一下什么是图形化编程,欢迎大家一起来编程,体验编程的乐趣。话不多说,开始编程。 首先打开上一次的 scratch 作品,上一集我们实现了基本的大地图的功能,按下上下左右键,可以让小猫在地图上移动。这一次呢,我们首先来做一个小小的增强,因为除了上下左右,我们也经常会使用 wasd 这四个按键去实现移动,对不对?我们把这个 修改一下,左键我们可以再加一个 a, 这样的话你按下左键或者 a 都可以往左走,右键改成 d, 上 w 下 s。 有了这个功能之后,我们再测验一下,哎,你会发现按下 wsd, 小猫呢确实在改变造型,但是地图并没有移动,为什么呢? 上一次我们讲过,我们实现这个大地图移动呢,其实是地图的相对移动,所以呢是需要让背景呢去进行移动的,我们同样的把这个地方改一下, 对应关系是一样的。然后我们重新测验一下,往左往右,往上往下都是没有问题的,这是 wasd 四个按键。那接下来呢,我们来实现开场白的功能,我们给小猫加上一个开场白,我们这里的这个导 由角色呢就让小猫来承担了,如果你想用其他的造型也是可以的,之前我们在跑酷游戏里面画过这样的一个角色,也挺适合的, 你可以根据自己的喜好去挑选一个导游角色。这个呢是需要自己绘制的,如果你能够绘制出来更好,如果你实在不会绘制的话,会员可以找我来去要一下这个角色,直接上传就可以 回到我们的代码里面来,我们首先来实现基本的开场白,当绿鞋被点击的时候,我们让他说一句话,外观里面说 让他说一个你好,欢迎来到安阳市。第一句话就完了,等待着按下鼠标再让他去出现下一句话,这个是不是很多游戏里面都是这种机制啊,需要你按下鼠标才会往前推进剧情,再复制一下这个地方呢我们改成, 接下来就让我们一起探索一下这个城市吧。最后一句话复制一下,按上下左右键进行移动出发吧这是最后给了他一个提示,我们可以来试验一下全屏点绿旗,首先第一句话, 再点一下第二句话,再点一下第三句话,这样的话我们最基本的开场白就做完了,但是呢并没有文字一个一个出现的效果,也就是我们说的打字机的效果, 要实现这个功能的话还是比较麻烦的。接下来呢我们来增强一下这段代码呢,我们先把它放在一边,因为待会里面的文字我们还要使用,不要把它直接删掉。为了实现打字机的功能,我们去创建三个变量,先把自带的删掉,第一个变量叫完整内容,确定 再创建一个变量,叫当前内容再创建一个变量呢?起个代号 i 就可以了,这是存储一个不断变化的数字的。当滤芯被点击的时候,我把完整内容设定为第一句话, ctrl c、 ctrl v 复制过来,当前内容一开始是空的, 小写的爱,一开始是一,这样的话我们就做完了初始化,第一句内容存起来了,想要说的内容刚开始是空的,这个小爱呢?一开始是一, 那接下来我们怎么样文字一个一个出现呢?要用到一个运算里面的模块,叫什么的第几个字符?如果苹果第一个字符是不是平啊?那我们把完整内容放进去, 完整内容的第一个字符是什么呢?是你对不对?那他的第二个字符就是好啊,我们只需要呢后面的数字不断的发生 变化,是不是就能够取到每一个文字了?刚开始 i 四一取到你,我们把这个 i 增加一,是不是变成二了?这时候取掉的就是好了,我们把每一次取到的文字呢,都给它连接在一起,放到当前内容这个变量里面去,就能够把它都存储起来了。这个地方我们增加一下, 把当前内容设为一个新的值,设为新的内容呢?是在他原来的基础之上新增了一个字,所以要用到连接,连接的意思就是说把这两个和这两个连在一起,输出出来,苹果、香蕉,对吧?我们应该把谁和谁连在一起呢?把当前内容现在的值,比如说现在是空, 把空和第一个字连在一起,这个是不是第一个字啊?把它连在一起,把它重新存起来,这时候当前内容是不是就变成你了呢?看这里当前内容是不是变成你了? 我们把爱增加一,这时候爱变成二了,那这个地方取出来是不是好啊?这个地方呢?是你把他们俩连在一起,是不是?你好再把它存起来,这时候当前内容是不是就增加了一个字啊?你好, 你再把爱增加一,是不是就你好逗号啊?这样的话就依次实现了文字一个一个出现的效果,我们把它连在一起,当然这整个过程呢,我们不能一直用手点,所以我们需要用一个重复执行,那重复执行几次呢?他是不是里面有几个文字,我就重复执行几次啊?在里面数一数 十一对不对?可以直接填十一,我也可以呢,用一个简单的方法,这个地方有一个什么什么的字符数,默认填的是苹果,它有两个字符,把变量放进去,完整内容点一下,哎,十一个字符放进去,这样的话,当你改变里面内容的时候,这个 重复执行的次数呢,就对应的发生了改变。那现在呢?我们来测验一下,这时候你点绿旗,你会发现一瞬间当前内容呢就变成完整的内容了,是因为这中间我们没有加等待,我们可以加上一个等待,零点二秒才改变这个癌,看这里,这个你好,欢迎来到安阳市。是不是一个一个出现的, 那这个变量的已经发生了变化,我们让小猫对应的把这句话说出来就可以了,我们找到说话,说出当前内容,每一个内容之间是间隔了零点二秒,来测验一下,走,你 第一句话是不是已经实现了逐字出现的效果了?接下来呢我们来实现第二句话,第二句话很简单,我把这一部分复制一下,哎,把这个等待按下鼠标,别忘了啊,放在这个地方把它复制一下是不是就可以了呢?我们来看一看 点击率齐,第一句话结束之后,按一下鼠标,第二句话又是一个字一个字的出现,这个功能呢也就实现了,但是这样看起来代码是不是比较臃肿啊?重复的太多了,所以我们呢不用这种方法。我们把这段代码呢包装成一个新的积木, 这个新的积木呢给他起个名字就叫竹字说话,新的积木呢需要传进去一个内容,他就会把这个内容呢 竹子说出来,这样的话就有这个积木了,对不对?这个积木它里面有什么内容呢?我们把刚才这段代码放进去这个地方呢,要做一个增强了,这个内容里面是什么东西呢?现在还不知道。我们把这个复制一下放到这里, 这样的话,当我点绿旗的时候,他会运行新的这个积木,然后把这个呢传给积木,到这一行的时候呢,他 一只手会去找这个积木在哪,哎,发现这个新的积木在这个地方,他就会去运行下面的代码,这个里面的内容呢就会出现。 你好,欢迎来到安阳市瓦三调,那这个内容呢,我们把它放到这里,他就会放到完整内容这个变量里面去。当我换了一个内容,换成第二句话的时候, 他找到这个积木的时候呢,第二句话就会存到内容里面,内容呢进一步存到完整内容里面,这样的话呢,就实现了不同内容竹字出现的效果,我们把它放一下,紧跟着我们把第三句话也改了,看他能不能正常进行, 来看看效果,点击率齐。你好,欢迎来到安阳市,点鼠标,接下来就让我们一起探索一下吧。点鼠标按上下左右键进行移动,点鼠 目标之后,这个是不是应该消失啊?我们把这个呢最后给他修正一下,最后加一个说出空就可以了,这样的话,哎,他这个地方就不再说话了,现在这个代码看着比刚才已经简洁了很多,把这个删掉,但是呢,如果你的开场白,比如说有十句话的话, 这个地方是不是显得还是有点重复啊,还可以进一步优化。我们在这个地方新建一个列表,专门用来纯属我们的开场白。 当绿棋被点击的时候呢,我先把这个开场白初次化一下,原来不管你有什么东西,全部删除,然后把我要的开场白添加进去, 这样的话我的开场白是不是就已经有了?我依次把这个列表里面的内容取出来,是不是就可以了?注意看开场白里面有三句话,我先把第一句话取出来,再把第二句话取出来,再把第三句话取出来就 没问题了。为了实现这个效果呢,我们再创建一个变量 g, 这个 g 呢,一开始呢,跟这个 i 一样,设定成一代表我初始要取第一句话,怎么取出来每一句话呢?在这个地方有开场白的第几项,那我是第真项,我们先点一下初始化一下, 第一项啊,我想取第二句话的时候呢,把这个 j 增加一就可以了,它就变成二了,对吧?取出来这个内容是需要把它缩出来的,所以我们要用一个逐字说话,把它缩出来,缩完之后 等待着我按下鼠标啊,再把它增加一去,取下一句话,整个这个过程重复执行几次呢?有几句话就应该重复执行几次,所以我到变料里面找到这个模块叫开场白的项目数,也就是他有几句话的意思,这样的话有几句话他就重复执行几次,每一次呢, 都把这一句话的文字一个一个显示出来,当然最后不要忘了也要说一个空,这个就可以删掉了,这样来看的话,我们最终的代码是不是就比较简洁了?首先一下, 好,你好,欢迎来到安阳市,按一下,接下来就让我们一起探索一下这个城市吧。 再点一下,按上下左右键进行移动出发吧,再点一下,消失了,完整的功能就做完了。当然了,有些同学会觉得说话的速度比较慢,一方面呢,你可以通过去调节秒速来实现加快,另外一方面我们也可以做一个 小小的后门,比如说按下空格键就让它变快一点。每一句话呢,刚开始是默认的速度,按下空格键有一个加速的效果,要实现这个效果,我们加一个速度,首先我们把速度这个 电量在初始化的时候给它设定成零点二,我们默认就是零点二,对不对?等待多少秒呢?不等待零点二了,等待速度秒,那其实也是等待零点二秒,对吧?测验一下的话跟之前是一样的,那我们现在就可以按下空格键去改变这个速度了, 当我按下空格键的时候,我把速度设定成零点一,比原来快了一倍,对不对?好,我们试一下把这些呢先隐藏一下,这样看的更清楚,只保留速度, 当绿皮被点击,他是零点二,是这样一个速度按一下空格,是不是说的就非常快了?但是呢,我们希望效果是我按下空格的时候他比较快,松开的时候呢,他恢复成零点二,这样的话更灵活一些。这个地方我们就可以再加一个代码, 按下空格不成立,一旦他松开,我就把速度呢重新恢复成零点二,再来测验一下,默认零 点二,按下变成零点一,再松开变成零点二,加快变慢,这样的话我们这个功能呢就实现了,我们把这个变量隐藏起来,记得保存一下代码。 如果你顺利完成这一部分的话,欢迎投稿到点亮地图这个活动,让更多人看到你通过学到的编程知识做出来的,有创意的介绍自己家乡的作品,今天就到这里了,记得点赞收藏,拜拜,下期见。
这是从零开始制作跑酷游戏的第七集,在这一集中,我们会实现带有垂直地图的第二关,只有不断的往上走才能够过关,并且地图也会随之滚动哦。话不多说,开始编程,将上一次的作品复制一份后打开,我们开始做今天的新功能。 首先回顾一下上一集,我们实现了收集物资,然后呢过关的特效, 呦,重来一遍 跳,然后上面的这个特效呢,他有时候转的太大了,有些同学不习惯,那这个呢 是可以改动的,我们可以把这个地方的角度呢调整成一个你觉得比较合适的角度,那这个七十五呢,验证了是效果比较不错的,当然这个跟你角色的大小呢也有关系,所以呢,你要根据自己的情况灵活的调整一下。 好的,那我们今天要做的第一个功能是怎么样实现,当我起跳的时候,这个地图呢也会垂直滚动。好,这个功能呢其实是比较简单的,我们只需要呢让这个场景里面的这个 滚动歪坐标发生变化就可以了。好,跟我们的 x 坐标一样,我们在这个地方呢,加一个, 将滚动歪坐标设为 为外坐标。好,卡到这里,然后移动到指定位置,点击立即 这个地方是歪坐标。好,蹦蹦,这时候我们的场景,也就是地图是不是就可以跟随着我们一样有这个滚动的效果了? 好,你蹦的时候呢,地图也会有这个效果。好的,那接下来呢,我们来绘制一下第二关,让他全部都是往上垂直滚动的这些场景,我们到场景里面造型。 好,现在呢只有第一个关卡,我们把这个地方改一下,都改成一 杠一,代表着第一关的第一个小地图,第一关的第二个小地图, 第一关的第三个小地图,然后呢我们来绘制第二关的地图。好,那这个地方呢,每个人画的肯定都不一样了,大家还是跟以前一样,按照自己的想法呢,来绘制就可以了,不需要跟我的一模一样。我这个地方呢仅仅是一个视力,仅仅是一个视力。 好,我们复制一份。好,只保留中间这一个样本。 好,然后呢把它缩小一点点, 可以把它显示出来,看看这个大小合适不合适。 我们把这个地方改成零。好,他要到中间了,这个大小呢是差不多的,再来小一点点吧。 好,这个是可以的,然后呢我们横向的复制一批,让它变成一个水平的台阶,变一个组合,复制粘贴 好,这样的话有可能会有对不起的情况产生,我们换一种方法,我们把上面的这个绿色的给他突宽, 太长了,下面的也托宽, 接下来把中间的复制一下,完善一下细节,这个地方加速一下。 好的,这样的话我们一个台阶就画完了,然后呢我们可以把它全部选中,之后选一个组合,这样的话呢这样的话你拖起来他就比较方便了,是一个整体。 好,然后呢我们再复制一下,粘贴一下这个整体,哎,往上挪一个位置。好,再来一个,往这来一个, 最后来一个。好,每一个都得往上蹦才能够过关。好,这是我们第二关的第一个场景, 我们把它改成二杠一,然后呢我们再来一个二杠二,在二杠二里面呢,我们就可以设计一些红色的陷阱了,对不对? 好的,那我们的第二个地图呢就画完了,那怎么样来切换到我们的第二个地图呢?我们要有一个关卡的概念。 好,上一次我们这个地方过关之后是不是就结束了呀?那这里呢,我们要把它的关卡增加一,所以在变量里面我们新建一个变量叫关卡。 好,一开始的时候呢,我们把关卡设定成一,将关卡设定为一,代表着是第一关,然后呢, 等到这个地方过关的时候,我们把它关卡增加一, 他就变成了第二关,对不对?好,那因为这个地方的关卡增加了,之前我们过关的时候,这个地方是不是都停了呀?这个游戏的这个地方都停了,关卡等于 yes, 所以呢,我们要重新再广播一个游戏开始。 好,来试验一下,我们把不需要的变量隐藏起来,关卡是一 全轴,吃掉它。 好,全部过关之后,关卡是不是变成二了?好,那这时候呢,这个场景他就应该显示成二 二关卡,而不能还是一关卡。那接下来呢,我们把场景里面的代码呢来完善一下。那场景里面一开始点绿旗的时候,他克隆了自己,那之后是不是过关的时候,他也得重新克隆 二开头的地图啊?所以这个地方呢,我们直接改成,不要当绿旗被点击了,直接改成,当接收到游戏开始的时候,判断一下。好,都是中间啊,从这开始看看到底是克隆哪个造型,我们来一个判断的条件。 好,如果关卡等于一的话,他跟之前一样都是克隆的 第一个场景里面的地图放进去,那否则的话,那现在我们只有两个关卡,那就是关卡二了,对不对? 对,我们把这个复制一下,换成二杠一克隆自己,然后这这有显示的功能。好,这些不要了,只有两个,但是这个克隆体因为我们是垂自移动的,所以所以这个就应该是 y 坐标 往上增加,我们让他增加三百六十一下。好,然后呢,因为我们的第二个地图,大家看到我画的时候就是让他稍微偏一点,对不对? 我想让他往那边有一个移动的过程,往里面拖一拖,所以这个地方呢,我除了让他的歪坐标往上一点的话,我让他的 x 坐标也稍微偏一点,再来一个 x 坐标也往这边增加三百六, 我们试一下看行不行?然后换成一个二杠二克隆自己。好,也就是说这个地方呢,是第二个地图里面第二个场景的位置,我们把它放进去,好, 抽烟一下。一开始是第一个关卡,为了测试比较方便,我们也可以当绿旗被点击的时候,就把他的关卡呢设定成二 点绿旗。哎,这样一开始是不是就是第二个场景了,可以移动,跳上去,跳上去,跳上去, 跳上去呀,有点太高了,跳不上去。我们调整一下这个地图,所以这个绘制地图呢,是一个不断调整的过程。 好,大家注意改完之后呢,不要停留在这个页面啊,刚才可能是因为我们移动的时候呢,把这个绘图的地方也移动了, 走好,跳上来了。好,我们能看到第二个地图上面已经出来了,对不对?但是他特别高,所以这个地方呢,我们也要给他调整一下,他太高的话我们就够不着了,还是有点高, 我们把这个 y 坐标呢给他增加的小一点,增加一百八,然后呢 x 坐标明显的他太靠左了,我们再让他往右一点,增加四百六, 好,重新开始。 好,第二个地图也出现了。好的,没问题,没问题。哎呦,好,这个红色的碰见呢也可以死亡,没有问题。哎,那为什么这个地方刚才散了一下呢?又正常了,没问题啊,好,然后呢,我们把这个地图的 这个地方呢稍微往下一点,刚才明显太高了,蹦不上去。好,然后呢让他再往右一点点, 好,好的,好的,好,那这样的话我们这个地方的功能就做完了,这有一个小细节大家要注意一下,跟我们之前在物资这个地方一样,当接收到游戏开始的时候, 也就是你在中间死了又重新开始的时候,一定要注意先把他的都删除掉,对于这个场景也是一样,我们呢用同样的方法加一个,当介绍游戏开始的时候,把克隆体呢全部删除 好。然后呢这个地方呢就可以加一个零点一秒,稍等一会。 好,我们把这个改成一重头,试验一下,看能不能正正常运行。 一开始是第一关 吃掉它, 哎呦,嗨,好,还是第一关? 好的, 好的,肘好过关,好的,到第二关很正常,跳跃也没有问题, 好,能够中,哎呀,死亡,看他到第几关,还从第二关开始非常好。那这样的话呢,我们 本次视频里面的功能呢就全部做完了,那第三关怎么样做?以及第二关中间他 要不要添加一些更多的物资,我们到下一节再进行,大家有什么好的想法呢?也可以大胆的尝试,有问题随时在评论区里面给我留言。当然了,欢迎给视频点赞和收藏,反复观看,拜拜。
哈喽,欢迎再次回来,这是呢我们超级马里奥的最后一次课程,最后一次课程呢,我们就讲解这个旗帜的生辰怎么跳到旗帜上面去,然后呢进入下一关再节课呢,我们这个盒子道具是弄成功的, 但是呢,我忘记了,上次我们在这里呢生成了两组盒子,我没有保存,所以呢,我们这里把它添加进去,将地,将地图 x 啊,将 x 设为两千六,我们在两千六的位置还会生成一组,所以呢,这个要把它弄起来,重复两次克隆。 好,接着呢,他等会到两千六的位置呢,还会生成一组盒子,所以呢,这个里面也是一样的,重复进行,两侧加 x 设为 两千六。好,这个时候呢,他后面也会生成一组盒子出来了, 现在呢,我们不管他后面的盒子里面呢也会有金币。这节课呢主要讲解这个地图的末端,我们先来把这个金币,呃,蘑菇这个代码先取消掉,我们跑到终点去看看。终点是什么样子的, 终点呢,他其实呢是一个可以走在玩的地图,我们要在那里呢刹住车,让地图不再滚动,所以呢我们先到终点去看一看。 好,重点就是这个位置,这个位置的地图 x 呢,就是我们的这个啊,四百八乘以十一的位置吧,应该是这个位置,我们来试一下四百八,因为每一张地图才是四 百八,克隆了十二张,我们要显示最后一张,所以呢是四四百八乘以十一,是五千二百八十啊,最后一张地图的位置是五千二百八十,那我们就让马里奥跑到这里之后呢,就不需要再往后面跑了,我们来到马里奥里面, 在他跑的这段代码是这段代码写上一个判断,如果地图 x 小于 啊,十一乘以四百八,我们呢就跑起来 啊,跑完之后呢,写个否则吧,就是大于的时候。如果否则跑完之后呢啊,地图超过这个值的时候呢,我们就不需要再跟着跑了,所以呢,我们就将地图 x 设为五千二百八十啊,五千二百八十, 然后呢加 x, 增加 x 速度啊,我们再来运行一下,这个时候呢,我们已经到终点了,马里奥呢现在就不能往回走了,也不能再往后面走了,然后呢我们只要跳到那个绿旗,哎,跳到绿旗就可以让马里奥进入下一关了,所以呢,我们在这里要生成一个绿旗,还有生成一个旗杆和一个旗子 啊,这里呢,我们到了这个终点这个造型里面来把它复制一下,嗯,这一个留一个旗杆,这一个留一个旗面就 ok 了,把它改成红色的吧, 啊,改成黑色的。好,我们可以把这个 把地图带代码全部扔过去,修改一下就 ok 了。来到这里面整理一下啊,地图 深层,然后隐藏深层。这里呢造型编号也可以用造型编号一,总共刻了两个连造型编号加一刻,这个加一加 x 设为十一乘以十一乘以四百八, 四百八移动的 x, 然后呢克隆自己克隆的第一个编号是一,第二个呢就是 a, 我们可以单独的操作起字和其改案。好,我们来运行一下看看, 走起来啊,这个里面由于没有用到大造型,所以呢这个显示有问题,给他画一个,画一个大造型, 好,就这样就行了。然后呢换成编号的造型, 型的造型可以再运行一下耶,怎么有问题 啊?这里克隆,这里应该放这里换成造型,一换成造型 重复两次,好,现在没问题了,运行一下往后面跑。这个时候我们来检查一下这个旗子和旗杆的生成有没有问题就行了,跑有点麻烦,我们等会快进 啊。旗帜和气杆生成出来了,他的 vi 坐标应该要更低一点, 我们呢也可以在地图里面给他改一下位置,给他的造型改一下位置,把这个复制一下到终点里面来粘贴,然后呢拉动旗杆往下走。 好,这个呢,同样的道理,给他复制一下粘贴。哦,这个呢, 这个我们把这个旗帜复制一下,来,到这里面粘贴,把它拉下来,好,再次复制回到这里面粘贴起来就 ok 了。这个时候呢,把刚才接过来的东西删掉就 ok 了 啊,其实和气杆都生成到了这里,好,这个克隆呢,已经做完了,我们来试一下,看是否克隆成功,直接将 x 设为五千二百八。 好,克隆成功了,接下来呢就来控制这个起往下掉就行了,当然作为克隆体启动的时候重复执行判断,如果真车道碰到马里奥, 如果放到马里奥呢,我们这个旗舰往下落,这个时候呢,我们就要需要一个往下的变量歪了,创建一个四的变量歪,将歪设为零, 重复执行的,把这个移动到 y 城上去。然后呢,如果碰到马里奥,我们重复二十次, 将歪剪舌 可以减个两百多吧,两百,从这里到这里应该不够重复三十次吧,这个过程结束之后呢,可以广播一个消息啊,下一关, 并等待下一关。 别等待。好,我们来试一下 啊,启动一下,飞过去。哎,这个旗杆怎么也掉下去了啊,我这里没有写编号,所以呢,我们要把编号加起来,只有爱好才能去侦测。如果造型编号等于二与碰到麻将吧, 放大马里啊, 就我们来点击飞过来,然后这个是碰到马里奥的时候呢,这个奇迹要下来, 接下来就呢,将 vi 减少就行了,将 vi 总减少,重复的一个次数循环吧,重复 十次,减减十五。好,来试一下。哎,下来了,但是呢,他再次碰到的时候还是会下去,所以呢,我们呢,这里呢, 用一个停止单前脚本啊,找到一个停止单前脚本,这个脚本。好,这个时候呢,我们还要管过一个新的消息啊,下一关,或者通关给这个背景,给我们之前的这个封面背景。所以呢,这里我们也管过一个新的消息,通关 啊,下一。嗯, nice 啊,下一个来这里呢,广播一个, nice。 好的,我们来运行一下, 拉下来啊,封面里面来单,接收到 next, 换一个造型,复制一下这个, 改一下 next 啊,带开发好,换成这个背景,把它换一个颜色,红色。好的,这是五号,五号背景,咱接受的 nix 换成五号背景 啊,换成五号造型,然后呢,停止全部脚板,将开关设为零,停止全部脚板,试一下。 好, ok, 我们的超级玛丽奥课程呢,已经完毕了,感谢你们的学习, 最终来体验一下这个超级玛利奥吧。这个背景怎么这么小啊,把它调大一点,同学们 好了, ok, 接着呢,把所有的程序整理一下啊,这个金币和蘑菇给他恢复一下, 整理一下,这些东西呢,带开发的啊,留给你们自己去做了,其实逻辑呢,都跟这个是一样的,这些呢留给你们自己去拓展了, 然后呢,我们来体验一下这个游戏吧,这里还有一点要说的就是这个左右传感器,同学们在做了这个箱子之后呢,把这个左右传感器稍微加加大一点,所以 一定要把它加大一点,不然的话有时候会出问题啊。好的,我们来正儿八经的体验一下这个超级玛丽奥吧, 开始我应该能一命通关吧,我决定不踩魔鬼, 哎呀妈呀,急死了急死了,全部踩死你。 同学们可以在后面加一个蘑菇的数量,到时候呢,你们通关的话,必须要把所有的蘑菇都踩死,自己去想一下怎么做吧,那样很鸡肋啊, 也要把所有的金币都吃到 最后也这几个蘑菇慢点踩,哎,一个一个的来,别急,千万不能死,千万不能死啊,最后一个了,天呐, 就是你啊,通关了,哎,怎么还有,我记得好像深沉了好几步, 四个还是五个,还有一个踩死你。 在这里感谢大家的陪伴,我们下一期做什么呢?有没有好的点子请在视频下方留言吧。
一百万播放,这是生命游戏 switch 版的教程,不知道 python 版有多少人喜欢呢?在这个视频中,我将跟大家一起编程,从零开始用 python 开发康威生命游戏。不知道什么是康威生命游戏的小伙伴请查看本合集中的第一集, 虽然叫游戏,但更多的是对科学的探索,有趣的同时也能启发我们对科学,对世界有更多的思考。编程逻辑较为复杂,且涉及一定的数学知识,建议点赞收藏,反复观看, 还没有下载拍摄的小伙伴请参考飞机大战第一集。在本集中,我们将通过七七四十九行代码来实现这样自动计算细胞状态的功能。首先打开 vscode, 新建一个拍摄文件,专门用来存放我们这个程序,我们给它起名叫 life game 生命游戏点 py 一定记得我们本集呢,主要是分成三个部分,第一步呢,我们初始画一下 第一代细胞的状态,那我们用的呢,是一个二维列表,这是呢 scratch 里面没有的功能, scratch 呢,只能存放啊,一维列表在 passion 里面呢,更高级一些,可以存放二维列表,这样的话我们处理起来呢会更加的方便。这个二维列表怎么用呢?这就是第二步, 我们呢去定一个计算下一代细胞状态的函数,这个函数的功能呢,就是把二维列表里面的每一个细胞都能够提取出来去计算,那怎么计算呢?就是我们第三步, 定义一个检查周围存活细胞数量的函数,这就是我们生命游戏的那个规则了,如果他周围存活细胞是什么数量,决定了他下一代是生存还是死亡,具体的规则呢大家可以再参考一下, 合集中的第一集有讲解到这个具体的规则,那我们继续来进行编程,我们首先来完成第一步,我们初始化一个二维列表,首先呢我们可以定义一下这个二维列表,他的宽和高 总共有多少个,那我们呢来一个一百乘一百的列表,也就是呢总共有一万个细胞,对于拍层来说这个处理起来还是比较快的。我们定义一个二维列表的变量,我们给它起名叫 great model, 网格化的这样一个模型,它呢一开始的时候全是零, 注意看怎么实现这个功能啊?这是一个列表,里面只有一个数字,零乘以一百,这样会得到一个什么数据呢?我给大家看一下,我们有两种方法可以查看,一种呢是把这个呢直接打印出来运行,能看出来这是一个一百个零组成的这样一个依维列表,对不对? 还有另外一种方法可以查看,我们可以在这个地方打一个断点,在上面点运行,启动调试,还剩 fire。 调试的意思就是说你可以让你的程序呢在某一个地方停下,来到这个断点这里,这一行没有执行, 上面的都已经直行完了。你把鼠标放在这里的时候呢,他会给你显示出来这个变量的一些属性,这个呢是里面的存放的一些值,有一百个元素,这个每一个元素呢都是零, 这是调试的功能啊。后面呢我们还会讲一些调试的技巧,那我们说这是一个零组成的一维列表,那怎么样把它变成二维列表呢?我们写一个否循环 for i in range 也重复执行一百次,列表总共有多高我们就重复执行多少次,我们知道了他是一百,对吧?对于这个列表里面的每一个元素,我们都怎么办呢?都把它再变成一个一百个零 组成的列表,这时候呢,我们再把它打印出来看一看,当然这里有断点啊,我们往这先打一个,来一个调试,注意看这个 great model 是不是一开始是一个异维列表,里面有一百个零啊?我们点这个叫单步调试,这一步结束之后呢,我们再来看一看这个列表, 是不是第一个元素已经变成了,又是一个列表,里面有一百个零啊?第二个元素呢?还是只有一个零?这样的话呢,我们第一步就完成了, 如果我们把这个重复执行全部结束之后,他会停在这个地方。好,我们去看一看这个 great model, 你会发现 他变成了这样一个横着和竖着都是零组成的比较大的列表,我们把这个呢就叫做二维列表了,从一个线变成了一个面,这个呢,大家一定要好好的体会一下从一维列表变成二维列表的转 换。当然了,这一步结束之后呢,你也可以直接把它打印到终端里面,但是因为没有换行,所以看起来呢比较乱,我们把这个删除掉,这样的话,我们第一步就完成了初始化了,第一代细胞的状态全是零组成的二维列表,接下来我们执行第二步定义,计算下一代细胞状态的函数, 那我们来一个定义函数 define next generation, 简写一下,计算下一代,计算下一代呢,我们要用到上面这个变量,我们用一下这个关键词 global, 然后呢我们写一个重复执行,把这个系 呃列表里面的元素呢,每一个都提取出来。因为是一个二维列表,所以要用到两个循环, for i in range 零的 height, 再来一个 for i in range, 两个 for 循环呢,就能够把二维列表里面的每一个 元素呢全部都取出来。一开始这个状态,这个细胞的数量呢是零,还没有计算,我们通过一个函数呢,去计算一下他这一个位置的细胞周围到底有几个,那我们用一个函数叫 count neighbors, 我们计算的是这一个二维列表里面的第爱航 dj 列,对不对?那这个函数呢?目前还没有,这是我们第三步要做的,我们先给他写在这个地方 return 零,这样就有这个函数了,对不对?当然这个函数呢,它是需要几个参数的,它需要一个 r v 列表, 需要告诉我第几行,第几列,我才能去给你计算。怎么计算呢?待会再说。那上面的第二行 dj 列计算完了之后,我是不是就得到了细胞他周围的存活的状态了?有了这个状态呢,我就可以去判断一下了,这有一个波浪线啊,说明这个接 有问题嘛,应该是个 g。 然后呢,我就可以判断一下,如果我计算出来的第二行这列,他的细胞原本是死亡的状态,这时候呢,要看看他能不能在下一代变成存活的状态。计算一下了,如果他是周围正好有三个存活的,那么他下一代就是存活的, 对不对?这是我们的规则。如果 alif 第二行 dj 列本身是一个存活的状态,那下一代他怎么样才能保持存活呢?是不是只有他周围的状态,要不有两个存活,要不有 三个存活,他才能保持生存的状态啊?如果是一个,他就会孤独而死,依然保持零。如果是大于三个,他就会拥挤而死,还是保持零。所以只有这两种情况,他会从死亡的状态变成 存活的状态。所以呢,这个地方我们只需要把这两个条件写出来就可以了,这样的话,我们就通过这个否循环把每一个细胞都计算出来了他下一代的状态。接下来呢,我们来完成第三步,计算一下 每一个细胞他周围存活细胞的数量,就是刚才我们暂时没有做的这一步,这个地方不能直接返回零了。 我们假设一开始计算之前是零,因为还不知道有几个,对吧?怎么去计算呢?肯定是把一个细胞周围的八个点全部计算一遍,对吧?我们首先来计算第一个,第一个呢是说在 原来的基础之上,加上我左边的这个细胞的状态,是不是就可以了? great row 减一列,减一 great, 对不对?我把我左边减去一 正上方的这一个取出来,如果他是零的话,他就不变还是零。如果他本来是有存活一的话,就把它加到这个框的里面去了,对不对?但是呢,这个不一定能够加上这一个细胞的状态,因为呢,我有可能本身这个细胞就是顶行了, 所以我需要呢去判断一下,只有肉减去一大于等于零,也就是说文在上面这一行的话,我才去给他加上,依次类推呢,我们可以把其他的呢也加一下,如果肉减去一大于等于零,再来一个,并且列减去一 大于等于零,我怎么办呢?我就把我这个细胞本身左上角的这个给他加上,左上角指的是行减去一列也减去一,对吧?这有一个大前提啊,一定是他左上角有位置才可以,如果他本身就已经是左上角的这个 点了,那就不需要加这个了,否则的话他会报错。来,我们继续把这个复制一下,我们来加一下右上角的这样一个点,因为左上角正上方,然后都已经加过了,我们再把右上方列加上一, 他这个地方呢?是他应该加上一之后没有超过右边界小于这个宽度才可以。这个大家仔细理解一下啊。这个地方呢,我给大家简单的画一个图吧, 我们假设有这样一个二维列表,假如说我们要计算这个点的细胞,他周围的这一二三四五六七八有几个存活的细胞,那是不是计算一下正上方的,也就是行减距一这个地方啊? 左上角行减去一列减去一,这个地方是不是存活的?右上方行减去一 列加上一,这个地方是不是存活的呀?那为什么我们要有一个一幅判断呢?因为假如说我们计算的是这一个点,假设我们计算的是这一个点,那他左上方有没有细胞呢?没有细胞是不是不需要计算了?同理,正上方和右上方是不是不需要计算了?只有对于这些 他旁边八个点全部都有的,他才需要把这八个点全部计算一下,这就是为什么我们需要有一个依附判断的原因啊。回到我们这个判断,刚才我们解释了这三行代码,那依次类推呢?我们把接下来的呢也写一下,如果 减去一大于等于零,我们就把它也加上,这个列减去一呢,指的是他左边的这一个,对吧?行,不?减了他正左边的这一个,如果有的话,我们就给他加上,接下来呢我们再把它 正右边的这个加上,也就是说如果他加上一之后,还在我们的列表范围内,我就给他加上正右边,那接下来呢,我们再来看他下方的这三个,我们可以把这个复制一下, 首先来看他正下方如果他加上一小于高度的话,说明呢正下方是有这个数据的,我们就把它给加上, 这个地方应该是行加上一啊,对不对?正下方的这一个,如果他加上一小于高度,并且他的行减于大于等于零,也就是说他的左下方如果有细胞的话,我们就把他也给加上, 然后呢右下方我们还是同样的规则,如果右下方他有这个细胞的话,我们 就给他加上来,这样的话我们的两个函数呢就已经全部做完了。我们来看一下,这是我们的一个框架,第一步有一个二维列表,存储每一个细胞的状态,这个呢是计算每一个细胞他下一代是存活还是死亡, 在这个过程中呢,要去计算一下每一个细胞它周围的邻居的数量,这样的话我们就完成了怎么样去调用这个函数呢?我们需要在最后调用一下 next, 简单 reaching 这个函数,但是呢,调用的时候是不是一点提示都没有啊, 所以这个地方呢,我们可以往这加上一个输出的文案,在这一步计算完了之后呢,我们把它打印出来, print, 写上一个汉字。把计算细胞状态计算的是第几个呢?我们加上 d, i 行 j 列,它的细胞数量呢,我们给它加上,这可以加上一个冒号,因为呢这个 i 和 g 呢,是从零开始的,为了方便我们看,我们把这个地方都加上一,这时候呢,我们来运行一下, 计算特别快啊,计算细胞状态第几行,第几列算出来的?因为我们现在初始化的都是零,所以他计算出来肯定都是零,为了看着比较方便呢,我们可以给他引 pot 一个 time。 这个地方呢,每次计算完了一个之后呢,都让他 稍微等一会是 lip 零点一秒吧,这样看的清楚一点,关掉,我们再运行一次,这一次呢,应该看的比较清楚了,计算细胞状态第一行第二十八列是一个零啊,第一行第五十九列是零。 如果我们能够有真正的细胞状态的话,这个地方计算出来的数量肯定是不一样的,那这个呢,就是我们下一 要完成的功能了。好的,那我们这一集的视频就先到这里了,有了这个框架基础呢,下一集我们来实现随机模式与随机模式下新的生命。如果你有什么问题或者好的建议的话,欢迎在评论区里留言,记得点赞收藏,拜拜,下期见。
哈喽,大家好,这是我们跑酷制作教程的第二集,在这一集中我们会实现关卡功能的切换,并且做一些功能优化到尽头可以切换到下一个关卡,也可以回来,并且修复了连跳等功能。 话不多说,开始编程,这里教大家一个小技巧,我们每一次做新作品之前呢,可以把老作品复制一份,然后呢通过复制粘贴让他出现一个新的,这样呢我们可以把每一次的老作品呢保留一个备份,万一我们想看一看之前的作品呢,还可以再啊回顾一下, 那现在我们打开作品,开始解决我们作品里面上一次遗留的问题。 好,我们首先解决上一次遗留问题中的 连跳这个功能,上一次我们按下上一键之后呢,连按的话他就直接飞出去了,我们先解决这个问题啊,要解决这个问题呢,我们建立一个变量,叫仅次于当前角色,叫正 正在跳跃。确定好正在跳跃这个功能呢,一开始我们把它设定成一,代表着他在空中从下往下掉,正在跳跃的过程中, 这地方我们能看到 x 速度,是不是并不是玩家特有的呀?啊,那大家如果这个细节呢,我们有之前没有注意到,不过呢他不影响我们的编程,如果你把它改成玩家私有的变量的话会更好啊,好, 一开始设定成一,然后这个按下上一键网,把弯速度设定成十二呢,这个地方就不能直接设定了,我们要给他加一个限制条件,只有当我们的正在跳跃等于零的时候,也就是没在空中的时候,你按下上一键才管用,否则按下是没反应的, 等于零,只有这时候你按下键,他才能往上蹦,否则就不管用。好,那当什么情况下把这个正在跳跃设定成零呢?当他碰见我们的绿色,也就是到这个台阶上的时候呢,我们把这个边亮 设定成铃, 哎,这会变成零了对不对?这会你再按一下,是不是有反应的往上蹦,但这时候你蹦了之后是不是没有变成一啊?所以我们还得再来 一个,当他开始跳跃的时候,把它设定成一好,这样你在走的时候他就不会有连跳了,你按他也是只跳一次,只有当你回到台阶上再蹦的时候,才能往上走 下来。我们来解决第二个疑虑问题,水平方向上如果碰见台阶的话,现在是不是一瞬间就挪动上去了呀?我们应该采取的方式呢?是像之前我们垂直方向上,如果碰见这个台阶的话,他就应该 往下走,碰见台阶的话就应该重复执行往后退,直到离开这个边缘,对不对?那我们 北平方向也应该是这样,碰见台阶的时候不断往回回,直到离开这个台阶才可以。好,那在做这个工作之前呢,我们先把上一次的这个方式呢优化一下,我们之前是 怎么做的呢?掉下来的时候因为有重力效果,每一次重复移动一点点,移动的距离越大,越来移动的距离越大,越来越大,然后最后一次他移动很远的距离, 这时候如果碰见绿色的话,我们会让他慢慢回去,慢慢回去,慢慢回去,对不对?我们接下来呢,会把它优化成他从上面往下掉的时候呢,每一次呢,虽然还是有重力影响,但是每一次呢只走一点点, 嘟嘟嘟嘟,一点点,一点点的往下走,然后呢?哎,碰见了这个地方,因为他只移动一点点,我们立马就回来了,这样的话呢,可以让他 移动的更精细一点,我们把这个功能优化一下,要实现这个功能呢,我们要创建一个新的积木,我们把它名称叫成移动步数,这后面呢,加一个还可以 写啊,加一个不就代表着移动几步的意思,我们不不刷新屏幕,完成好这个功能呢,用它来优化一下,我们之前这里歪坐标增加速度。这个功能 好,我们现在的话跟之前是一样的,把这个放到这里来, 移动这么远,移动这么远,这个移动的速度呢,会传到这个地方歪坐标增加一样的距离,所以他跟之前的效果是一样的。 好,那这个地方因为歪柱标一下子增大很多,我们把这个地方改成一个重复执行就可以了, 每次让他只走一步,重复执行几次呢?哎,步数次,每一次将 wi 坐标增加 负一,然后这样的话呢,他就每一次自走一点点,一点点,一点点,一点点。在这个过程中,如果哎碰到了绿色, 我们怎么办呢?我们把原来代码拿下来,就不用再来一个重复执行了。好,如果在这个过程中碰见了绿色,我们就让他的歪坐标 增加一啊,会退一是不是就可以了?然后呢,同时跟之前一样,将 y 速度 设定成零,正在跳跃设定成零。好,那这个跳跃优化呢,其实就没有用了,我们可以把它删除,好,我们试一下这个效果,哎,他没有往下掉, 对不对?好,这个问题我们来解决一下。哦,是因为这个地方我们重复了一次,就把 y 速度设定成零了,他应该在里面 回去之后,然后呢把 y 速度设定成零,也就是碰到了台阶之后 还是没移动,我们观察一下啊,我们能看到这个 y 速度呢,他一直是一个负的,对不对?所以这个地方呢,我们要优化一下, 同步执行一个复数是不行的,所以这个地方要用到一点数学知识,我们这个运算里面有一个绝对值,这个绝对值的功能呢,就是把一个复数呢变成一个正数,好放进去再来,哎,这样他就能够 掉下来了,跟之前我们那个效果呢是一样的,对不对? 这时候这个跳跃功能呢是有点问题的,因为按下上一键他没反应了,是因为这个地方呢,我们不能让他一直将歪坐标增加负一,我们要跟他的速度相关,所以这个地方呢,我们用一个呃 y 速度 除以步数,这样的话跟之前效果呢是一样的,呃,每次只移动一点点,但是当歪速度等于零的时候呢,他就不移动了,并且呢如果用上这个歪速度的话,我们还可以实现 他上面如果有一个台阶的话,他按下之后呢,头顶到上面的时候呢,也就顶不上去了,因为这个地方 有一个限制,我们把它改一下,然后这个歪坐标呢就应该反过来,所以我们要把它单独拎出来,用一个零减去它, 如果他是正义的话就变成负义,如果他是负义的话就变成正义。来试一下。好,万 s 没问题的。好的,那这样的话这个方式我们就优化了,现在来考虑水平方向。水平方向的话呢,跟这个就有点像了,我们要把它直接复制一下。 复制绳是什么呢?将 x 坐标增加,将 x 坐标增加 挪过来 x 速度出一部署好,如果碰见这个颜色的话,就应该将 x 坐标,哦, 还是拖错了。 x 坐标增加,把它复制一下 零减去 x 速度, 然后呢将 x 速度设定成零,正在跳跃设定成零。 好,放进去。好的,嗯,然后这个地方不要忘了把它换掉,也换成移动多少步呢? x 速度的这对子来,我们试验一下往前走, 哎,走不动了对不对?但是我们发现刚才走的特别慢,跟刚才问题一样啊,这个地方呢,我们应该放在里面,碰见颜色的时候呢才应该让他恢复走, 是不是跟之前的又一样了?好的,我们这个问题呢就修复了。那我们现在把刚才提到的那个如果他头顶上有一个障碍物的话应该怎么办? 并且你看我们这是不是有两种颜色,那如果他只碰见这个颜色是不是也应该往回回啊?所以我们把这个碰到颜色呢也优化一下,我们直接改成碰见造型,把这个台阶的功能呢都从背景里面挪到我们外面的角色里面来, 我们新建一个这个呢可以叫场景吧。 好,然后呢我们把背景里面的这些功能呢给他挪过来, 拖动他,然后到这里松手。好,这样的话 我们在背景里面只保留这个天空蓝就可以了。好,我们全选一下,按住 shift 反选一下这个背景,然后把它删除,然后在场景里面我们把背景颜色删除,这样的话呢,他就跟之前类似了, 我们把它删除,这个地方改成场景一。好的,然后呢,这个位置呢,一定要一开始设定成零零, 因为他是全屏的嘛,零零就正好在正中间,然后我们玩家的代码呢,也就可以改一改了。这个地方呢就不要用碰到颜色了,我们用更检测更快速的碰见什么什么角色,碰见场景, 碰见场景,来抽烟一下,好,掉下来了,走。哎,过不去,蹦没问题,连跳不可以好,碰见他也不会直接上去。 好的,那我们在这个场景里面给他画一个头顶上有一个小的台阶,选中他, shift, shift, ctrl cctrl v。 好,这里我加速一下,你们自己把握。 好的,那我们现在来试一下刚才说的那个问题,如果这会往上蹦的话,哎,是不是的确蹦不过去啊?但是有一个什么问题呢?你一直按着上一键,你会发现他是不是停留在这个地方了,被这个顶吸住了呀?我们来 来解决一下这个小小地方,这个地方之所以膝盖上面,是因为我们按照按下上一键的时候,他在一直往上蹦,对不对?那之所以往上蹦,是因为我们将他的跳跃设定成零了,按下上一键是管用的,我们只要在这个地方优化一下就可以了。 当你按下上一键的时候呢,即使碰见这个场景,有些情况呢,也不能把把它设定成零,为什么呢?因为他还在空中的对不对?他的速度呢?不是零,我们给他加一个小雨, 只有当 y 速度小于零,也就是他往下掉的时候,我们才把正在跳跃设定成零,加一个判断, 如果歪速度小于零,将正面跳跃设定成零,好,把他们放回到 原来的地方来,再次测试。好蹦,没问题,长按,哎,也不行,长按就变成连跳了,一直在这蹦了。好,那这个问题我们就解决了。那我们今天的重头戏怎么样让他切换关卡呢?我们建立一个新的变量, 叫场景编号, 然后这个场景编号呢,我们让他当接收到切换场景的时候, 不断的去变化。那一开始呢,长两边还要设定成一,然后当接收到 切换场景,当接受这个消息的时 后呢,就让他换成一个新的造型,换成哪个场景呢?这个编号 编号对应的造型,所以这个地方的你的顺序一二三四五一定要相对应才行。 好,然后啊,一开始的时候我们也加一个,因为一开始的时候是场景一嘛,现在还看不出来问题,因为我们只有一个啊,接下来呢,我们再创建一个场景 啊,复制一下。那这个跑酷游戏有一个特点,当他从这个地方出去的时候,到第二个场景,这个地方应该孩子连着的一条路,对不对?你要直接变成一个悬崖,那样 就没法玩了对不对?所以这个地方呢,我们要把它反过来,所以这时候要用到这样的功能,把它全部选中,然后这里有一个翻转,哎,他就翻转过来了,但是有一个小问题是这个地方离他有点远, 对不对?你可以简单的把它拖动一下,但是一拖动是不是上下的位置有可能发生变化呀?所以我们换一种方式啊。好,先恢复一下,然后我们给他套一个全屏的这么一个物体,然后把它放在中间,好,有点小,再大一点 套在中间,然后呢把它当成一个整体,让它左右翻转,左右翻转,然后呢再把它删除掉,哎,你会发现呢,它正好呢在边缘,没问题。 好,然后呢这次呢,我们再往前走一走,我们会发现这是场景二,那怎么让他切换呢?我们要在我们游戏过程中给他加一个判断条件,在这个移动的过程中加 一个判断条件,如果 x 坐标大于二百三十五,对吧?我们最大是两百四,让他大于二百三十五的时候,就认为他走到右边缘了,当他的 x 坐标 大于二百三十五的时候,我们就给他把场景编号增加一, 嗯,然后呢把他的这时候有个细节一定要注意啊, 当你这个小人走到这个地方的时候,他场景切换成下一个了,那这个人是不是也得到这个地方呀? 恢复到最左边呀?所以这个地方有一个将 x 坐标设 定成负二百三十五的这么一个动作,然后我们广播一个消息,让他真正的开始切换。 好,我们试验一下往前走蹦,哎,切换过来对不对?但现在是不是还回不去啊? 回不去。我们给他加一个往回回的功能,如果我发现他的 s 坐标小于负二百三十五,小于 负二百三十五, 然后呢场景编号增加 负一减少了一,然后呢 x 坐标设定成正的二百三五在最右边。好,来试验一下。 嘿,从这边过来了,哎,过来了对不对? 好的,这里面我们能看到刚才有一个小问题是我们正常跳跃的是这么高,但是跑起来是不是跳跃的就会特别高啊?那这个地方呢?是因为这个地方我们重复的次数 太多了,我们把它优化一下。这个原理呢,我们就不讲了啊,我们测验了一下,通过把这个地方连在一起的这种方式 可以解决这个问题。好, 他还是呃,上下呢,都不会穿透我们的我们的台阶,但是呢,这个速度呢,跟之前相比就好了很多,好往前走,哎,再回来没问题。 好的,那现在还有一个潜在的问题是什么呢?大家可以留意一下你的有没有这个问题,如果我们这个地方画的特别完整的话,是没有问题的, 如果你发现两边他的台阶不一样高的时候,就会有一个前债的八个出现,大家可以留意一下。但是最好画的时候呢,你就把它画平整,就不会有这个问题了。 好的,那我们今天的教程呢就到这里了,大家积极创作,积极的发散思维,一定记住地图不需要跟我一样,多发挥你自己的创意,可以多做几关,熟悉一下整个流程。好的,拜拜。
在这个教程中,我将跟大家一起编程,从零开始做一个塔防游戏。在这一集中,我们会首先实现塔防地图的惠子,并且让敌人先跑起来。 打开史古拉曲软件之后,首先把自带的小猫角色删除,然后呢我们去绘制我们塔防游戏里面的地图。 首先呢我们绘制一下地图里面呢这条逃跑的路线,我们首先选择直线工具,画出来一个大概的路线的趋势。然后呢我们选择变形这个工具, 把这条路线呢变成曲折的一个路线。这里呢我们介绍一下基本的用法。首先呢直线上的这些点是可以拖动的,你可以改变他的起死和结束的位置。然后这个变形工具呢,可以在上面增加一些点,增加这些点之后呢 可以拖动这个圆圈来改变他的位置以及他的弯曲度。好,那这个地方呢,我们每个人就按照自己的想法来设计一下自己塔防地图里面的路线。 好的,绘制完基本轮廓之后呢,我们把这个路线呢变得宽一点,我们通过调整轮廓里面的这个数值的大小,我们这里改成八十,太大了,八十 好,这个宽度呢,呃,差不多能够满足我们对路径的这个想象。然后呢这个颜色呢,我们给他改成啊土地一样的颜色, 好,大概 好没选中他之后再改变颜色啊,刚才在场土地一样的颜色 再深一点,好,差不多。然后呢我们把背景呢改成一个草地一样的绿色,当然自己啊,同学们也可以按照自己的想法呢来调整这个配色 轮廓不要了,然后填充改成绿色, 绿色绿。好,然后呢他把我们的路线给覆盖住了,所以我们要把它放在最后面。好,那这样呢,我们塔防游戏的这个背景呢,基本的配色呢就搭配好了。好,那接下来呢,我们来绘制我们的敌人啊,绘制一个小圆球 代表敌人。好打开,呃,会字,然后呢选择圆,这个时候呢你可以放大一点,然后按住 shift 这个按键呢,画一个正圆出来, 好调调整一下他的中心点。好,我们能看到呢,他这个大小呢还是比较大的啊,我们再把它缩小一点 啊,这个大小差不多。然后呢跟刚才一样,我们去调节一下他的这个颜色啊,给他一个轮廓的颜色, 然后呢打一点,好,填充呢换成另外一个颜色。 好,这个呢是我们第一个, 他的大小呢还稍微有点大,那除了在这里调节大小,大家在这里也是可以的,八十啊,这个大小呢就比较理想啊,这个刚开始的这段路呢,我们再让他变直一点, 我们这个功能做完之后呢,把它先保存一下,保存到电脑,给客群起一个名字,塔防游戏 part one 保存到电脑。接下来为了让我们的这个敌人改个名字, 能够沿着我们这条路线呢去行行进逃跑,我们需要绘制一个看不见的角色,让他能够啊沿 这个角色往前走,那我们呢在这里新自新建一个角色,他呢叫路线。好,那这个地方的路线呢,我们要画的跟这个一模一样,那这里呢我们有一个小技巧,我们到这个背景里面选中刚才的这个曲线,然后复制一下, 然后回到路线这个地方点一下粘贴,那么他就有了。然后呢这个地方呢,我们就不需要跟这个 路线呢,这个颜色呢一模一样,因为我们最终呢是要把它隐藏起来的,让敌人沿着这条隐藏的看不见的线进行移动。若为了保证这个在中间呢,我们这个线呢就要变得细一点,这个地方直接改成一, 然后呢为了能够看见这是黑色,是吧?我们让他呢再亮一点,我们直接改成白色,好,变成白色的一条线有点太细了,是吧?好,我们选中他稍微出一点, 测试阶段可以出一点。然后呢他刚开始复制出来的位置呢,没有在正中间,所以我们可以来一个,当滤芯被点击,我让他显示出来,并且移动到舞台的正中间,零零, 好,这样他就到舞台的正中间了,那我们的这个敌人怎么样沿着这条路线啊进行移动呢?我们可以通过给我们的敌人增加一个触角的方式来实现。好,老师呢先 绘制一下,待会呢我们再慢慢讲里面的原理,我们放大一下,绘制两个触角,然后呢这个就不要轮廓了,把颜色弄成一个,方便我们看得见的往这里画一下。好,然后呢再跟刚才一样,我们可以选择复制粘贴, 然后呢对称的来一个,我们现在假设的是我们的角色面朝右这个方向,面朝右改成另外一个颜色红色,让他们比较明显。那这个敌人呢,我们刚开始面朝右,我们首先来改变一下他的方向,让他面朝上, 面向上。好,然后呢给他一个初始的位置啊,保证这两个触角呢,在这条白色线的两侧 移到这个位置。好,那我们怎么样保证他可以沿着这条直线行进呢?我们只需要判断这个两个颜色呢,有没有碰见这个线就可以了, 如果左边的线左边的蓝色碰见了白色的线,说明呢他比较偏右了,我就让他往左再移动一点点就可以了,所以这个地方呢,我们增加一个重复执行。 然后呢,首先呢让他往前走移动几步,那为了这个步数方便控制呢,我们通过变量来实现,这样仅适用于这个角色就可以移动速度。然后呢,因为中间还有涉及到转弯,所以我们再来一个变量转弯。 好,一开始呢,我们把它设定成, 再来一个小影城,也是先通过设定成五摄试验一下。 有了这个之后呢,我们就可以放进去,在他移动的过程中,我们要去侦测一下他有没有碰见这个我们的路线,我们通过侦测里面有一个什么碰见什么,好,我们侦测一下这个触角的蓝色 有没有碰见我们直线的这个白色,这个白色不太正, 改成白色。好,如果他碰见了,因为是左边的触角,我们就让他往左移动一个角度,往左转个弯。好,同样复制一下,如果是红色碰见了 跑了怎么来回来,如果是红色碰见了,我们就让他往右偏一个角度。好,右转右转一个角度。来,我们测试一下。 好,我们发现呢,他已经能够沿着这条直线进行移动了,但是在这个地方呢,他跑出去了,那这个地方呢有两个原因,第一个呢是我们跑的太快了,转弯呢太小了, 或者说这个弯呢他的确太急了,所以我们啊在做的时候呢,要灵活调整一下这三个地方,比如说这个啊曲线呢,太太弯太急了,我可以把它调整一下,这个地方我们选择这个工具,把它稍微变缓和一点点。 好,但是呢你要记住我们这个地方改变的只是这个背景,这个路线白色的路线呢,还没有改动,所以呢一定要有两个地方都改动,往上拖一点点。 好,这样改动之后呢,这个弯看着就没有那么急了,我们再让他运行一下,同样的速度可以放缓一点,每次转弯稍微大一点点, 好看他能不能过去。好,顺利通过这个弯了,这个弯也有点急,哎,也顺利通过, 好的,顺利的到终点了啊,这个地方大家一定要注意,这里面填的数值跟你绘制的 这个塔防路线呢是直接相关的,所以呢大家一定要灵活的调整,不需要跟老师的一模一样。好,那 接下来呢,我们还遇到一个问题,我们最终的效果呢,是不希望他显示这条直线的,那如果我把它直接隐藏掉的话,那我们前面这个模块什么颜色,碰见什么颜色呢就不管用了,而且呢我们也不希望敌人前面一直显示这两个触角。好,那现在呢,我们讲另外一个更优化的方法, 我们用的方法呢是在这个造型里面。好,我们复制三个,我们把前面的触角呢每一个造型里面留一个 删除,删除,在这个地方删除,保留红色,然后真正的这个敌人呢没有触角, 那我们在判断的时候呢,首先他移动的时候呢,我给他转化成 造型三,一开始是造型三,让他开始移动之后换成造型一,这时候他是蓝色,换成造型一的一瞬间,我去判断他有没有碰见白色,哎,没有白色了, 我要给他改成,我待会要把它隐藏掉,啊,没有白色了,怎么办呢?我们在侦测里面有一个碰到什么东西,什么角色 路线,如果他碰见路线了,就让他转个弯,那这个地方也是一样。在判断之前呢,首先给他改成造型二, 然后判断一下他有没有碰见路线,如果碰见了,往右转,整个结束之后呢,换成造型三,因为这个判断和切换非常快,所以我们看着好像只有一个在走,我们能看到他已经在沿着这条直线进行移动了,对吧?那如果我们把它隐藏掉,哎,我们发 又不行了,对不对?这时候怎么办呢?我们要学习一个颜色的特效。在这个地方, 我们的这个路线呢,的确是让他显示出来的,但是我们可以把他的虚像设定成一百,这样的话我们就看不见他了,他虽然存在,但是看不见他。这时候我们再让敌人进行移动, 哎,我们发现虽然我们看不见那条路线,但是我们的敌人的确是沿着这条路线在逃跑。 接下来呢,我们把我们的敌人呢弄成多个敌人,我们通过克隆的方式来实现,只有一个敌人很容易就被我们打死了,所以我们在这个地方用重复执行 克隆,克隆自己的功能,让他克隆十个出来,每一次间隔一个时间啊,零点二间隔一个时间,那这个地方呢, 明显呢,我们就得改成当克隆体启动的时候,那因为克隆体呢和本体是两个逻辑,所以我们让本体一开始隐藏起来,让克隆体显示出来。好,来,我们抽烟一下, 好,我们会发现多个敌人就已经出现了,并且都在沿着我们的逃跑路线啊进行移动。 好,没问题。好,那这个克隆体呢,有一个小细节,因为我们的 surprise 限制每一个,每一个这个角色呢,最多只能有 三百个克隆体,而且克隆体越多会导致我们程序呢啊越来越慢,所以这个地方我们一定要记住,当克隆体不用的时候,及时的把它删除掉。所以这个地方呢,我们加一个判断,当克隆体启动的时候, 如果他碰到了,我去判断一下,如果他碰到了边缘,我就让 他删除自己。好,但是这个地方有一个小小的问题,一开始出现的时候就是碰见的这个地方,所以有些科隆体呢,可能会啊,有些同学做的时候呢,可能正好呢就没有东西出来,所以这个地方呢,我们加一个保险。 这个判断呢,一定要等到我克隆体出来之后,也就是当我发现他没有碰见边缘的时候,再去判断他下一次碰到边缘,把自己删掉,我们加一个等待, 加一个等待,等待他离开边缘,那没有离开边缘,我们就通过两个结合起来,等待他碰见舞台边缘不成立,也就是说他离开边缘了,再去判断他有没有下一次碰见边缘。来,我们测验一下, 好,顺利的生成了十个克隆体,克隆体沿着我们的路线进行逃跑,然后逃跑, 找到这种点之后呢,把自己通通都删除。好,这就是我们第一集的功能了,我们打好了一个坚实的基础,我们绘制了逃跑的路线,并且克隆传十个敌人,让他沿着路线进行逃跑。好,那下一集呢,我们再进行我们的炮台的绘制和攻击。 如果大家喜欢这个视频,请大家点赞收藏,我会及时的更新,谢谢大家!如果你在编程的过程中遇到了什么问题,也欢迎在评论区里面留言,我会及时的给你回复。
在这一集中我们会设计多种卡牌类型,并且实现出牌的功能,话不多说开始编程,首先我们把上一次做的代码复制一下,好,我们把它改成第二集, 这样的话我们就保留了一份第一集的内容,然后呢基于第一集的来做第二集,我们先来实现第一个功能,上一次我们只有一张卡牌,那今天呢,我们首先来绘制多种卡牌,让我们的卡牌呢种类更加的丰富。 我们有一些是像这样的随从卡片,我们也可以设计一些直接对对方敌人进行造成伤害的卡牌,比如说我们来设计一个炸弹, 好,我在这个地方通过炸弹给大家做一个示范。那剩下的呢,大家可以发挥自己的创意啊,多添加一些不同种类的卡牌。 好,这个角色呢绕线裤里面没有,我们把它删掉,可以自己画一个,简单的画一个炸弹四粒。 换完之后呢,我们把下面的他的卡牌对应的技能给他修改一下,对敌人造成两点伤害, 消耗两点法力,这个可以适当的变大一点,这样的话我们一个新的玩家卡的类型就制作好了,那剩下的呢,我快进一下,待会呢给大家演示一下。 好的,这个地方呢,我总共添加了十种,十种卡牌的类型,并且呢把他的名字从一到二到三依次呢都改都改了一下。第一个是我们最开始的狮子,就是一 一个随从卡牌,然后呢有一个攻击卡牌,是直接对敌人造成伤害,然后呢是随从卡牌,史莱姆画一个这样的图案,然后呢有一个自愈的这样的一个卡牌可以给我们啊增加生命,然后呢随从卡牌鬼魂随从卡牌兔子 随从卡牌乌斯啊,这些造型呢,都是从我们的造型库里面找的,大家可以从这里面找一些自己喜欢的造型作为我们的卡牌。 好,蝙蝠随从卡牌九,猫随从卡牌十,有一个冰冻特效啊,随机伤灭敌人的一个随从,这样一个特殊的卡牌。好,有了这些卡牌,我们呢 首先要实现当他随机出牌的时候,要能够随机显示对应的造型。好,现在呢还不行,我们是同样的一个呃,狮子的造型,同时刚才大家听到这个声 声音呢不太对,我们呢一起来优化一下。首先第一个点,我们把造型改成随机切换,我们总共有十个造型,所以呢我们在他滑行之前,我们把它切换成一到十的随机速, 放大一点,好,换成什么什么造型,在一到十之间选一个随机速,这样的话他就会随机显示一个造型,我们把没有用的代码删除,重新验证一下发牌。 好,现在已经是随机出现的这样一个造型了。那刚才这个播放的声音呢?我们把它优化一下,我们能看到这个地方播放的 recording, 在这个地方是没有的,是因为上一次呢,我们只在这个地方录制了,对不对?我们可以把它拖过来,好,这里有热口顶好,没问题,敌人卡这里热口顶 好,好的。然后呢这里面这个声音呢,我们可以把前半截给它去掉,选中删除, 选中删除好,发牌好,这样的话这个发牌的音效呢就比较合适了。然后呢发牌的同时,我们也选成了随机的造型,没问题, 接下来呢,我们来实现出牌的功能,选中某一张卡牌之后呢,要把牌出去,所以这时候呢,我们 要分成几种类型,有一些是水桶卡牌,有一些是特殊技能的卡牌。今天呢,我们先实现召唤水虫的功能,我们能看到这个牌呢,稍微有一点不一样,这个狮子呢要大一些,我们应该是这个地方 克隆出来的,大小不太一样,看这个稍小一些,这个稍大一些,我们把它调整一下, 那当我点鼠标挪到这个卡牌上的时候呢,他有一个放大效果,当我点击他的时候呢,我们希望他能够把随从召唤到我的卡牌前面来,那这个呢,首先要有一个,对于每一个克隆体来说,都需要有一个被点击的这么一个事情。好,我们怎么来实现呢? 当克隆体被启动时,我要重复执行,做一个判断,这个判断呢,不仅要碰到鼠标,并且我的鼠标要按下去,合在一起才是鼠标被点击的效果,所以这个地方我们来一个 如果,好,如果什么呢?来一个语语,就是并且的意思,如果这个克隆体他碰到了我的鼠标指针,并且我的鼠标指针按下去了,好, 就代表着我点到了这个克隆体。好,那我点到他之后呢,如果我一直按着他可能会一直克隆,所以这个地方呢,有一个小技巧,这个地方呢加上一个,等待你松开鼠标再进行下一次判断。 然而呢,我们并没有松开鼠标这样一个操作,所以我们可以用两个模块合成一下,松开鼠标,那也就是你按下鼠标不成立,等着你松开鼠标,大家判断下一次你有没有按下鼠标。好,那当我点了它之后,我一定能够出卡牌吗?我们有一个法力的概念, 这个呢就需要我们去提前设定一下我们玩家有多少法律值,每一张卡牌需要消耗多少法律值,从而做一个判断,你能不能出这张卡牌。好,那我们先来设定一下玩家和敌人的法力值,好,我创建好了这个变量,敌人法力值, 那我们首先来创建一下玩家和敌人的法力值的变量,我们先来一个玩家法力值,玩家法力值呢,适用于所有角色,所有所有人都能看到。好,再建立一个 敌人法力值,这个呢是以后我们要使用的啊,同时呢,每一张卡牌他都需要消耗一定的法力值,所以呢,我们再来一个 卡牌所需法力,这个呢,因为每一张卡牌都不一样,所以呢我们要选择一下,仅适用于当前角色,一定要注意,这个很关键,这样的话每个克隆体才能所需法力值不一样。卡牌所需法力,好的 啊,那一开始的时候呢,我们把敌人法律值设定成二,把我们玩家的法律值也设定成二,那每一张卡牌他需要多少法律值呢?我们把它放 在克隆的这个地方,当克隆体启动的时候呢,我给他设定一下,根据他不同的造型编号,他在这个地方随机产生了一个造型,那我根据他的造型编号来设定一下他的法力值,我们来一个如果,那么否则, 好,如果他的造型编号等于一,在这个地方,如果他的造型编号等于一的话,我就把他的所需要的法律值 设定成一,要跟你这个地方的相对应法律之一,如果造型是二的话,所需要的法律就是二, 如果造型是三的话,所需要的法律值就是一。注意不是按顺序的啊,是根据你设计的这一个卡牌实际所需要的法律值来确定的。好,有了这个之后呢,我们复制一下往这里一放,那现在呢,就是要判断一下, 当他的造型编号等于二的时候,所需的法律值是二。好,我们依次类推。这个地方呢,我加快一下速度,如果是三的话需要一, 如果是四的话,四的话需要三,如果是五的话需要四, 如果是六的话需要二,如果是七的话 需要四,如果是八的话需要五,如果是 九的话需要五。好,最后一个,否则那是不是意味着他肯定是编号是十了呀?所以呢,我们就不用再写一个判断了,直接设定成他就可以了。然后呢,重复执行,放到最后面来。好这一大段呢,虽然代码卡的很多,但其实呢, 他是逻辑比较清楚的,对吧?如果是一的话,我就试听成一,如果不是一的话啊,这下面,否则里面都是他不是一的情况,不是一的话,有很多种情况,我要先判断判断他是不是二。 当然呢,还有一种比较简单的写法是什么样的呢?我可以这样写,如果编号等于一,我把法律制设定成一,然后呢同时复制一个, 如果编号等于二,设定成二,这样呢列十个也可以,但是呢,这种情况呢,如果他编号是十的话,你相当于判断了十遍,没有这种呢,逻辑清楚一些,我们把它分除,两种方法 都可以,这种呢,程序效率更高一些。好的,那接下来呢,我们来验证一下,看一看他有没有实现这个效果。我们来一个说话。 好,如果碰到鼠标指针的话,我们让他说出来所需的法力值,开始发牌。 好,鼠标挪上来需要三个法律值,需要四个法律值,没有问题啊,我们把玩家卡需要的法律值关掉,这两个呢,我们可以右键 改变他的形态,放到这个卡上下对应的位置。好的,那现在呢,我们已经发了这个牌了,并且他已经纯属了自己所需要的法律值,那我们点击他之后呢,就要出牌了,要判断一下他需要的这个法律值跟我们,呃,已有的法律值啊,是, 是不是比他小才能够出牌?好,这个呢,我们把它去掉, 所以在这个地方你点下鼠标之后呢,我们要来做一个判断, 我要判断一下,好,你的法律值和卡牌所需的法律值,谁大谁小。 好,如果玩家所拥有的法力值小雨卡牌需要的法力值,那怎么办呢?我们就简单的说一个法力值不足没办法出牌,法力值不足 没有办法出牌,对不对?好的,好,那如果法力值足的情况下应该怎么办呢?我们可以,我们首先当我出了这个牌之后,玩家的法力值是不是应该减少啊?我们把变量拿出 出来一下。好,对于玩家的法力值来说,他就应该增加一下法力所需的所需,应该减去他,对不对?但是我们只有增加这个模块,怎么办呢?我们可以给他成一个负一, 这是乘法的作用,把这个手续卡牌乘以负一,就相当于减去它了。好,那这时候我是不是应该生成对应的水虫放到我的这个前面来啊?那这个这个水虫怎么生成呢? 我得通知一下另外一个角色去克隆一下自己。现在我们只有卡,还没有真正的随宠,所以我需要去呃,再找一个角色 随从,然后这个随从呢需要把我们卡牌里面所有的随从卡牌,狮子,这个不是随从卡牌,史莱姆随从卡牌,把他们呢都复制过去, 好,复制到这里粘贴放大一些。好,这样就有了我们的随身卡牌了,大小呢自己设定一下。那这里呢,我加速一下, 那这里大家能看到,我已经把我们的六种随从卡牌都已经给他啊绘制好了,这个地方抽了,应该是五。 那我们这个地方呢就得去通知一下这个角色呢,要去切换成对应的类型,那我选择了某,选择了某一张卡牌之后,他怎么知道应该克隆出来哪一个类型呢?所以这个地方呢,我们要建一个变量, 我们给他叫卡牌类型随从类型吧。 好, 我们呢在这个地方减去之后呢,新建一个积木,用来处理什么事情呢?我们选择的这个卡牌呢,他要生效,因为卡牌生效呢,有很多种情况,随从只是其中一种,还有对敌人直接造成攻击,所以呢我们要起一个中和的名字, 这一次我们只实现生成随从的功能。生成随从的功能好定义这个卡牌,那我们就要判断一下了,如果他的编号是是一的话应该怎么办?是二的话怎么办?那跟这个地方是一样的,我们给他把复制一下贴过来。好,后面这些重复执行没有用。 好,那这应该怎么办呢?如果他的造型编号是一的话,我就应该把随从类型设定为一,然后呢克隆一下随从,克隆一下 这个地方,选择随从随从。好,如果他是二的话,我就不克隆了,因为二的话,他是一个对敌对敌人造成攻击的这么一个效果,所以我广播一下 攻击或者炸弹都可以炸弹吧,那,那至于怎么样实现这个炸弹的效果呢?我们后面再来说。好,再往后如果他是三的话,我们看一看,三的话是史莱姆,他也是一个随从类型,那我们把这个地方去掉,将随从类型设定为二, 然后克隆随从。好,这个随从类型他的二呢?就对应史莱姆,这个地方的编号一定要一模一样才行啊。好,然后如果编号是四的话,我们的四呢是一个疗伤,是一个疗伤治疗包。 这个地方呢,我们广播一个聊桑。好,如果是五的话, 那他又是一个随从,我们把它去掉就停成三。如果是六的话,随从是四 好,如果是七的话,我们又有一个攻击的效果,那这个攻击呢?我们也是一个炸弹,给他弄成炸弹二吧。好,如果是八的话,我们是水冲,类型是五, 好,如果是九的话,随从类型是六, 好,最后呢还有一个实实的效果呢,是冰冻,我们也提前给他站一个消息。 那,那这一部分的大码比较长,大家一定要多看几遍,理解一下他是什么效果。那这个积木怎么用呢?我们放在这个地方,卡牌生效,然后呢,等这个卡牌生效之后,这个克隆体是不是就可以删除掉了?因为这张牌你已经出了嘛? 好,运行一下,发财。好,我们找一个需要的法律之五的,只有两个法律的,点一下,法律制不足,没问题,如果是兔子的话,点一下,哎,他消失了,同样这个法律制也减少了,但是克隆体是不是并没有出来呀?因为我们这里还没有克隆好,我们把这部分功能做一下。 好,对于这个随从来说,一开始他是隐藏的,然后呢,当他接收到嗯,克隆体启动的这个事件的时候呢,他就应该显示出来,然后呢一到 大概这个位置,大概这个位置移到这里,然后呢,我们让他换成对应的造型。换成哪一个造型呢?我们在玩家卡里这里是不是提前设定了随从类型是几啊?所以这个地方呢,他只要换成随从类型这个造型就可以了。好,我们验证一下,发财, 没问题,找一个一的点一下,哎,随从已经步数到我们的卡牌前面了,同时原来这个卡牌就消失了,那这个卡牌消失的过程呢?比较更,我们把它优化一下啊,在删除之前呢,有一个特别好的慢慢消失的效果,我们这里运用一下。 好,我们让他重复十次,每一次呢都让他的虚向增加一些,他就有一个慢慢消失的效果,虚向特效每一次增加 十,那这样十次之后呢,正好是一百,就完全看不见了,同时呢让他的大小呢慢慢的减小。好,这是一个很多地方都可以用到的特效啊,你不要让他直接隐藏或删除,让他慢慢的好,我们试验一下 拿这个兔子,哎,有没有看到一个慢慢消失的效果,我们就做出来了。最后再提醒一下,一定记得点击文件保存到电脑,保存到你的电脑里面,免得呢你的作品呢白白的做了对不对?保存到第二集里面。那我们今天的课程呢就到这里了, 今天的主要任务是设计了多张卡牌,并且呢实现了出牌的功能啊,这一部分代码呢还是比较多的,也比较重要,大家可以多看几遍视频理解一下,同时呢设计出来属于你自己的卡牌。好的,今天我们就到这里了,拜拜。