美文网首页少儿科技教育智能硬件连载小说
少儿编程游戏CodeMonkey通关攻略:第159-165关

少儿编程游戏CodeMonkey通关攻略:第159-165关

作者: 君君玩科技 | 来源:发表于2017-06-18 19:58 被阅读510次

    今天我们进入“返回”小镇的后7关,即第159关至第165关。

    应某公号粉丝要求,第162关有更仔细介绍。

    先复习一下基础知识:

    基础知识

    “返回”在编程中经常用到。是每个函数必备的一部分,在我们写完一个函数的时候,我们都习惯性地会在函数最后一行写上return。比如:

    return;

    这样就不返回任何值。当函数是一个判断函数的时候,就可以让函数返回判断的结果,比如

    return yes;

    或者

    return no;

    当然,我们也可以直接返回一个判断语句,比如:

    return banana.rotten()

    来判断香蕉是否坏了,如果香蕉坏了,banana.rotten()=yes,否则banana.rotten()=no。

    下面进入关卡~

    第159关

    return的意思就是返回,既然函数已经返回了某一个值,就不会再执行return之后的操作。

    在上图右侧的代码区域内,return no之后就不会再执行return yes。

    因为我们需要小猴子goto banana,所以foo()函数返回的应该是yes。

    修改后的代码如下:

    点击运行看效果!

    第160关

    在这一关里,我们需要say something来吓跑乌鸦!

    在上图右侧的代码框里,我们已有两行代码吓跑乌鸦,但是在吓跑乌鸦之后呢?

    当然是让小猴子goto banana啦!

    在第3行上加上一行代码就可以啦,如下:

    点击运行看效果!

    第161关

    有的时候,乌鸦耳朵有点背,所以小猴子需要不听地say something,直到乌鸦被吓跑为止。

    我们可以用crow.watching()这个函数来判断乌鸦是否在看着小猴子,既然crow.watching()函数是判断语句,那么crow.watching()函数自己就会返回yes或no。

    当乌鸦被吓跑之前,crow.watching()函数返回yes,那么not crow.watching()返回的就是no。这个时候,safe()函数返回的是no。小猴子需要一直say something,直到乌鸦被吓跑。

    当乌鸦被吓跑之后,crow.watching()函数返回no,那么not crow.watching()返回的就是yes。这个时候,safe()函数返回的是yes。

    我们可以把代码改成:

    点击运行看效果!

    第162关

    在上图中,我们看到有两只乌鸦,那么很简单地,我们可以把上一关的代码借鉴过来,就有一个这样的safe函数:

    在这些代码后面,我们需要写入判断小猴子是否可以走向香蕉的代码,如下:

    点击运行之后,我们先不看效果,先看结果:

    只得到了两个星星!

    这是因为我们用到了很笨的方法,用了过多的代码。

    而系统要求我们用6行或者更少的代码,才能得到3个星星!

    其实我们可以压缩safe函数。

    在原来的safe函数,我们用了4行来判断两只乌鸦是否在看着小猴子,这是极其浪费的。

    事实上,我们可以用一行就够了。

    怎么写?

    还记得我们之前学到的逻辑语句吗?and? or?not?

    因为我们要判断两只乌鸦是否同时都飞走了,所以我们需要用and连接两个判断语句。

    即crows[0].watching() and crows[1].watching()。

    当crows[0]和crows[1]都飞走了,那么我们有crows[0].watching()=no和crows[1].watching()=no,等价于not crows[0].watching()=yes和not crows[1].watching()=yes。于是我们有:

    not crows[0].watching() and not crows[1].watching()的返回值是yes。

    (yes and yes=yes,no and no=no,yes and no =no, yes or no = yes)。

    下面是我给出的代码:

    点击运行看效果!

    这时候可以三星通关!

    第163关

    上图中的场景和前几关类似,只是香蕉编程了3个。这一关里,我们对香蕉可以用for循环。

    不过我们还是要在第2,3行里写入判断乌鸦是否都飞走的代码。

    修改后的代码如下:

    点击运行看效果!

    第164关

    这一关里,我们看到由三只乌鸦,这其实和前几关没有什么区别。

    我们可以用

    nor crows[0].watching() and nor crows[1].watching() and nor crows[2].watching()

    来判断三只乌鸦是否全都飞走了。

    上图右侧的代码区域如下:

    修改后的代码如下,事实上,我们并不需要判断三个乌鸦是否全都飞走了 ,在这个代码里,我们只用判断乌鸦0和乌鸦2都飞走就可以了(大概是因为乌鸦按照顺序飞走吧),但是在现实的情形中,我还是强烈建议用

    return nor crows[0].watching() and nor crows[1].watching() and nor crows[2].watching()

    来代替如下代码框里的第3行。

    点击运行看效果!

    第165关

    可是如果有很多只乌鸦怎么办?比如上图中有5只乌鸦,难道我们要用

    nor crows[0].watching() and nor crows[1].watching() and nor crows[2].watching() and nor crows[3].watching() and nor crows[4].watching() 

    这样的代码吗?

    那如果有100只乌鸦怎么办?

    答案是,该用for循环的时候,就用for循环,循环是一个好东西。

    比如在如下的代码框里,我们就可以用for循环对乌鸦进行遍历,对每一只乌鸦,我们都可以判断其是否在看着小猴子。

    如果乌鸦c在看着小猴子,那么c.watching()=yes.

    这时候,小猴子是不能走动的,所以如果c.watching()=yes,那么safe函数应该return no。

    修改后的代码如下:

    点击运行看效果!

    好啦,到现在为止,return函数的全部15关都介绍完了。

    下一次,我会给大家介绍成功的“钥匙”这一部分,一共14关,我会分2次教程介绍,每次包括7关。

    顺祝大家父亲节快乐,过两年我应该也可以过上这个节日了。

    (关于我构思的机器学习的介绍会在以后的文章中给出,会从分类和回归这两个部分讲起。希望大家会喜欢。)

    相关文章

      网友评论

      • 3ce45e1e33fd:老师可以私信您价格微信嘛:pray::pray:
        君君玩科技:@Alan8888 老师不敢当,我只是分享一下,可以关注公众号:“君君玩科技”,然后给我留言,我会回复你私人微信的,就不留在这里了。
      • 滚滚大人一二一:老师,你那里可以购买codemonkey的账号么?英文网站不太会操作
        君君玩科技:@水流瓶响123 我是使用的公众号“外滩教育”提供的的账号,可以关注这个公众号,咨询购买。
      • Ellestar:后面的关什么时候发表呀?
        君君玩科技:@Ellestar 前段时间在外旅游,这两天会更新,抱歉
        君君玩科技:@Ellestar 正常情况下一周更新一次,谢谢关注

      本文标题:少儿编程游戏CodeMonkey通关攻略:第159-165关

      本文链接:https://www.haomeiwen.com/subject/yfcwqxtx.html