ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
Hello,今天我们来设计一款自已的游戏:我先来描述一下游戏的场景,妖怪使用诡计把悟空的金箍棒骗到了山上的茅草屋里,悟空下决心要打败妖怪,找回如意金箍棒,他来了到了妖怪的老巢,一个蝙蝠怪把守着茅草屋的入口,悟空如果碰到蝙蝠怪,游戏就会结束,我们现在实现一段程序算法,来帮助悟空找回金箍棒吧 #### ## 腾讯视频课程地址:https://v.qq.com/x/page/v0753si3c5s.html ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fu6u7jbbf0j21em0wgkjl.jpg) 我们玩儿游戏的时候可以通过手柄的上、下、左、右键来控制角色的移动的方向,不管是使用手柄、键盘、还是鼠标,我们总是可以控制游戏中的人物移动,今天就让我们实现 利用键盘控制角色移动的功能吧, **#### 本节课知识点: 1、使用键盘上的方向键控制角色在舞台区的动作 2、使用“碰到颜色”代码块来控制角色移动的范围** 打开scratch编程界面,我们想要实现的效果是,按下键盘的上移键,可以让悟空向舞台区的上方移动,按下左键可以让悟空向左旋转,按下右键可以让悟空向右旋转, 首先我们从动作模块组里拖动一个移动10步的代码块出来,悟空在什么情况下才会移动呢?嗯,需要一个判断语句,从控制模块组中找到条件判断语句,放在绿旗被点击的下方,并且把移动10步的代码块放到判断语句的执行部分,判断语句已经有了,那么srcatch是如何识别键盘的向上键被按下了呢?这是我们这节课所要学的新功能,从代码选择区的侦测模块组里边选择“按键空格键是否被按下”,拖动到我们的脚本区中,点击下拉菜单将空格键变为向上方向键,然后把这个侦测条件拖动到条件判断语句当中,现在这段代码的意思就是:“如果键盘上的向上键被按下,就让悟空移动10步”, ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fu6u9w62q7j20e204cwep.jpg) 之前我们讲过电脑会按照我们写好的程序一步一步顺序的执行,在我们现在写好的代码中,当绿旗被点击时,它会顺序执行下面的代码,也就是它会判断上键被按下了吗?当然我们在点击绿旗的一瞬间,向上键当然是没有被按下的,所以程序不会执行判断中的移动10步的代码, ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fu6ubped1gj21em0vsaoa.jpg) 接下来程序继续执行,但是我们的程序下方已经没有任何代码了,所以,这个算法结构已经执行完毕,所以我们现在需要实现一段不停的 判断的功能,我们知道无限循环可以实现这个功能的,我们从控制区拖动无限循环代码出来, ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fu6ucinwmgj21520o8duj.jpg) 现在让我们来看一下添加了无限循环后程序是如何运行的吧,当绿旗被点击时,程序就进入了无限循环中,首先它会判断一次键盘的上键被按下了吗?由于这个时间向上键没有被按下,所以不会执行中间的移动10步语句,这个时间呢我们的程序会继续向下执行,当执行到程序末尾,由于添加了无限循环代码,程序会返回到刚刚开始的地方,也就是再次判断键盘向上键是否被按下,这个时候键盘的上键还是没有被按下,程序执行完这次循环后,又会回来再次判断键盘上的上键是不是被按下,这个时候如果我们按下了向上键,程序就会执行移动10步的代码了,当然无限循环中的判断会一直不停的进行,我们只要按下向上键悟空就会一直向前移动,如果这个时候我们松开了向上键,程序再执行向上键是否被按下的代码时,发现向上键没有被按下,那程序就不能执行移动10步的代码了, 回到scratch中,来运行一下试试,很好,现在悟空可以顺利的向前移动啦,但是移动的速度太快了,怎么让它移动的速度变慢一点呢?我们经过前面几节课的学习,知道可以更改移动10步代码里的数字,把它变小移动的速度就会变慢了,再按下向上键试试,嗯,非常好,现在速度已经很合适了, 悟空走到了通道的拐弯处,我们想实现按下键盘上的右键实现让悟空向右旋转的功能,判断右键按下了吗的代码和判断上键被按下了吗的代码是类似的,我们只需要按下鼠标右键复制,然后将判断条件里的“上移键”改为“右移键”就可以了,判断条件我们已经设置好了,那么按下向右键是想让悟空向右旋转的,所以,我们需要把判断结果里的移动10步代码去掉,在动作模块组里拖动“向右旋转15度”的代码放到我们判断结果中,我们来试一下吧,嗯,旋转的速度太快了,把旋转15度,改为旋转3度试试,嗯,现在悟空旋转的速度很合适了,类似的,你一定也能写出左键控制悟空向左旋转的代码了吧? ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fu6ufpfeb4j20e80gaq52.jpg) 我们在这里直接复制一下,ok,现在悟空能够左右自由旋转了,我们现在要准备实现下一步的游戏规则了,如果碰到那个飞来飞去的妖怪,我们就让悟空切换为死亡状态,并停止游戏, 这个效果是如何实现的呢,聪明的你应该想到了吧,这里也需要加入一个判断, 我们需要判断悟空是否碰到了蝙蝠怪,然后在判断的条件部分拖入侦测模块组里的“碰到鼠标指针”代码块,将鼠标指针切换为蝙蝠怪 , 再从外观模块组里拖入切换造型代码块,并选择悟空的死亡状态,然后从控制模块组里拖动停止全部代码出来,放到切换状态代码的下边, 好了,这段代码的意思就是,如果碰到蝙蝠怪,悟空就死亡了,并且需要停止游戏的所有脚本, 这段代码也是需要不断重复侦测悟空是否碰到了蝙蝠怪,所以也需要嵌套进重复执行的脚本里,运行一下,嗯,这段代码和我们预设的功能一样,非常完美,OK, 这里需要对悟空的状态和位置造型进行一下初始化,我们前面几节课学习过初始化的操作了,这里老师直接把初始化的代码加入进来,放到绿旗被点击代码的下方, 好,同样的,当悟空抢回金箍棒的时候,是不是也要做和碰到蝙蝠同样的判断呢? 那么,我们来实现一下吧,从侦测模块组里拖动碰到鼠标指针代码块,将鼠标指针切换为金箍棒,当碰到金箍棒的时候,悟空就会把金箍棒收起来,用程序语言我们可以用scratch的广播的功能实现,大家是否还记得我们前面学过的唐诗绘本的制作呢,在那节课里我们学习了广播消息的使用,在这里我们可以这样设计,当悟空碰到金箍棒就广播一条“金箍棒隐藏”的消息, ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fu6udt376wj20ig0ocdjc.jpg) 然后在角色区点击金箍棒这个角色,在金箍棒的脚本界面里实现隐藏功能代码,当接收到“金箍棒隐藏”消息的时候,我们从外观模块组里拖动隐藏代码块进来,这样金箍棒就隐藏了,好了,到此为止,大功告成,我们来体验一下自已的作品吧,我们终于帮忙悟空抢回了金箍棒,小朋友们赶紧保存一下,然后去和同学们分享你的作品吧。我们下节课见