森林
地牢里的关卡主要是偏向锻炼用户的基本语法结构和计算机思维,让大家熟悉极客战记的操作与代码的使用。
来到了森林,关卡将会变得更多更难,同样,到了森林,大家就正式开始接触编程的几大重要知识点:
条件判断、运算符、函数、对象属性
边地僵局
关卡简介:
「边地僵局」可以说是被提问次数最多的关卡之一,关卡涉及的编程知识是条件判断与函数的运用,其实难度并不高,本关的过关代码甚至与上一关一模一样,但在之前许多同学常常为了过关速度,只是填了代码就走,并没有理解代码的作用,导致再遇到一样的代码内容时就不懂得如何填写了。
如果你在这一关中卡关了,那么你或许该好好反省一下自己的学习方式了:
1. 游戏上下文的代码是否都有认真阅读?
2. 填写完代码后是否理解各代码的作用?
通关展示:
思路讲解
与往常的其他关卡一样,本关也是直接按照注释提示填补代码即可。
根据第7行注释提示的if语句,还有第11行的else,我们能够快速地分析出,这是一段双分支判断语句(if-else)
知识点:双分支判断语句(if-else)
它的代码格式为:
if 条件:
代码语句1
else:
代码语句2
它是一个双分支语句,你可以理解成一个岔路口,有两条路供你前行。
如果if后的条件满足,则执行if代码块下的代码语句1
如果不满足,则执行else代码块下的代码语句2
代码块的概念我们上次在讲解关卡 迷失在书库 时有讲解过,不清楚的同学可以点击链接:
【转载】理解「代码块」概念,养成良好编程习惯 | 亲子课堂 第 3 课
此时我们已经知道关卡这里是要我们填写一个双分支语句,那么条件和对应的语句呢?
对于条件,第七行的注释是:
使用isReady语句来检查“cleave”
isReady是什么?这是我们在关卡 森林劈砍者 中接触到的新函数:
如果不了解它的使用,你可以在中间的函数栏中找到它,点击查看它的介绍:
它的作用是检查一个动作是否可以使用,在森林劈砍者中,它是作为if后的条件来使用的,因为它是一个有返回值的函数。
知识点:返回值
返回值是什么?
我来问大家一个问题,hero.attack(enemy)和hero.findNearestEnemy(),在使用的时候有什么区别?
hero.attack()函数,括号内必须要有东西,而hero.findNearestEnemy()则不用。
并且hero.attack(),大家明显可以看到它是一个动作,执行完以后英雄会进行攻击。
而hero.findNearestEnemy()使用完以后,似乎什么也没有发现,且必须这么使用:
一定要用在变量的赋值里。
这是因为它也是一个有返回值的函数,大家对它已经十分熟悉了,知道它的作用是找到最近的一个敌人,把它的名字赋入变量之中。
它的返回值,就是敌人的名字。
因此必须要用一个变量来承接它的返回值。
hero.isReady()也是如此,它用来检查一个动作是否可以使用,是否——返回的是布尔型的返回值。
布尔型就是:0和1,True和False。
看起来有点难懂,直接翻译来说,真和假,是和否,就是布尔型。
等于这个函数返回的结果是,检查的动作 可以使用 或 不可以使用。
所以可以直接放在if后面,作为条件来使用。
当然你也使用变量来承接也是一样的
知道了这两个知识点以后,此时的过关思路已非常清晰了:
1. 编写一个双分支语句
2. 当劈斩准备好了,执行劈斩
1. 劈斩没准备好,直接攻击
通关代码
以上便是森林关卡「边地僵局」的过关教学了~
本攻略发于极客战记
极客战记——学编程,用玩的!