无箭狼_arrowproof-wolf

发布于 2019年12月12日
(点击图片进入关卡)
本栏目为极客战记关卡通关讲解栏目,将会从地牢-森林-沙漠-山峰-冰川,按用户的正常过关顺序,挑出难度较大或有教学意义的关卡进行讲解,长期更新。

森林

地牢里的关卡主要是偏向锻炼用户的基本语法结构和计算机思维,让大家熟悉极客战记的操作与代码的使用,来到了森林,关卡将会变得更多更难,同样,到了森林,大家就正式开始接触编程的几大重要知识点:

条件判断、运算符、函数、对象属性

关卡:无箭狼

「无箭狼」这是一个非常简单的关卡,但不少同学在闯关的时候容易误解关卡意思,导致卡关。

  • 通关展示:
  • 思路讲解:

本关的通关目标是收集15个蘑菇。

而进入游戏时的目标页告诉我们,这片森林里存在着危险的食人魔猎手,所以我们必须要唤醒我们的宠物狼来帮助我们抵御箭矢。

根据注释,我们首先需要唤醒宠物狼,只需要走到宠物狼的身边说点什么即可。

随后小狼就醒来了,而第二行注释则要求开始收集蘑菇。

可能是受第一行注释的误导,不少同学觉得,唤醒宠物狼以后不用让宠物狼做点什么吗?

于是潜意识认为,下一行代码是让宠物狼帮忙去收集蘑菇。

然后就使用pet.fetch()语句来让宠物狼收集蘑菇。

那么此时便会发生问题:

如果宠物狼去收集蘑菇了,那么谁来保护英雄抵御箭矢呢?

所以此时要求的,其实是让英雄自己去收集,而根据提示,我们能够知道,只需要让宠物狼跟在我们身边,就能自动帮助我们抵御箭矢。

因此,正确的过关思路应该是:

  1. 英雄唤醒宠物狼
  2. 英雄收集蘑菇

根据通关思路,完成代码:

此时大家的代码可能是这样写的,而这样写也确实能够直接过关。

但是这样并不是一个真正正确的过关代码。

像上方这个错误,大家或许在前面的关卡偶尔会见到过。

报错的内容是:attack的参数接收到了null

可能每个字大家都认识,但是串起来以后就不太明白具体的意思了,null这个单词的意思是「空」、「不存在的」,那么我们看看此处attack的参数是什么?

是我们传入的enemy变量,是搜索敌人后得到的变量,此处的报错正是说明我们向attack函数内传入的enemy变量,不存在。

这也就是说明,此时我们并没有在周围有发现敌人,因此我们的attack函数便失去了攻击的目标,不知道目标,但程序仍然要执行这一行代码,此时就会发生图中这样的报错:

因此,解决的办法就是,在执行函数前,先判断一下我们的变量是否存在:

像这样,使用if条件判断语句来判断变量,如果变量为null,是一个空值,那么此时的条件就无法满足,因为一个不存在的值是没有办法让条件成立的,则下方函数就不会在变量不存在的时候被执行,避免了发生代码错误。

除了enemy敌人变量,像物品item之类的变量,在被函数使用之前,也都需要使用if来检查一下,避免发生报错,因此,本关的正确通关代码应是如下。

  • 通关代码:

以上便是森林关卡「无箭狼」的过关教学了~