CODEMONKEY 166-172逻辑与事件- 成功的“钥匙”

【166-172关】逻辑与事件-成功的“钥匙”

在这节课中我们将了解什么是事件,以及计算机程序如何与键盘交互。

学习目标:

了解事件及事件处理程序

掌握onKey()函数的使用

知识讲解:

事件&事件处理程序:事件是在代码运行时,由用户触发的操作,并因此影响正在运行的程序。比如:我们用电脑看电影或者动画片的时候,一般按下空格键就会暂停。再按下空格键,播放软件的程序又会执行播放。

当我们在键盘上按下一个键,我们就触发了一个键盘事件,此时onKey()函数就会被调用。这个函数我们可称之为事件处理程序。onKey()函数会接收到一个参数“key”,就是我们按下的按键,函数内的代码只有在按下按键的时候才会去执行。

实战闯关:

第166关:根据右侧的提示,当这段代码在运行时,你可以按下任何按键,小猴就会前进。通过按下键盘触发键盘事件,onKey()函数就会被调用,此时函数内的程序将被执行,运行看一看吧。

【166-172关】CodeMonkey事件处理程序【上】

原来是这样。那么怎么样才能通过一个按键控制小猴前进,一个按键控制后退,就像我们玩其它游戏一样来控制移动?带着这个问题我们继续闯关看看。

第167关:本关我们还是看到了跟上关一样的代码,我们只要按下键盘上的键,看看代码,小猴会怎么动呢? “ 扑通”小猴落水了,让我改成正确的前进方向吧。

【166-172关】CodeMonkey事件处理程序【上】

第168关:在166关我们提出的疑问终于在这一关有了答案,如下图所示。

【166-172关】CodeMonkey事件处理程序【上】

原来只需要在onKey这个键盘事件里判断你按下的键是不是你设置的那个即可,如:if key == ‘w’如果按下的是w那么返回yes。这里要注意两点:1、比较是否相等要使用两个等号“==”不要错了;2、与字符比较,字符要加上引号‘w’。

第169关:修改代码,当按下 's' 的时候,小猴可以后退。

【166-172关】CodeMonkey事件处理程序【上】

看看右侧程序,如果按下‘w’小猴前进,这样就能吃到前面的香蕉,如果按下‘s’需要让小猴后退,去吃掉后面的香蕉,这里有个很简单的bug,修改一下即可轻松过关。

第170关:前进后退我们已经会了,这一关需要用一个键来让小猴转向,这样才能得到右上角的香蕉。

【166-172关】CodeMonkey事件处理程序【上】

其实很简单,我们自己定义一个键,比如‘l’让小猴左转,那么只需要用if判断按下的键是‘l’的话,让小猴执行左转指令,这个很早就学过,是不是很简单,然后就可以通过前进或者后退去控制小猴了。

第171关:既然可以控制小猴前进、后退、转向,那么我们就可以控制小猴自由的行动了,因此取到这些香蕉就很简单了。

【166-172关】CodeMonkey事件处理程序【上】

首先还是要处理键盘事件,代码应该是onKey = (key) ->,如果你记不住,可以直接点击下方的键盘图标,就会自动生成,这样我们只需要在这个事件里定义好控制小猴移动的按键,即可控制它去拿到香蕉了。

第172关:这一关可不是那么简单了,如下所示,如果还是跟上一关一样,用左转,前进是没法成功的,因为小猴不管怎么左转都面对的是河水。

【166-172关】CodeMonkey事件处理程序【上】

怎么办呢?对,我们可以在按下‘l’的时候让小猴转动的角度小一点(使用turn 角度),这样就容易通过多次按下按键‘l’让小猴对准小岛的方向,不至于落水了。

答案:

【166-172关】CodeMonkey事件处理程序【上】

【166-172关】CodeMonkey事件处理程序【上】

【166-172关】CodeMonkey事件处理程序【上】

【166-172关】CodeMonkey事件处理程序【上】

【166-172关】CodeMonkey事件处理程序【上】

【166-172关】CodeMonkey事件处理程序【上】

但是这个答案无法获得3颗星,提示用7行或更短的代码来实现。于是删减了代码如下所示(想一想,该怎么操控小猴呢),便可成功控制小猴并取得三颗星。

【166-172关】CodeMonkey事件处理程序【上】

【166-172关】CodeMonkey事件处理程序【上】

(欢迎大家留言交流,希望本系列能帮助到学习中遇到困难的家长和孩子们,真正在玩中学习到知识。)