这一关需要先观察规律,第一,多调试几次发现中间的井盖一行只有收尾才会出现钻石,中间不会出现,所以我们character的路线可以是一个绕圈的循环;其次,因为character已经解锁了jump功能,所以从一个山峰调到井盖再到另一个山峰时,可以通过jump的形式,而不必让主角走平地。通过上下调动井盖高度,发现往上移动两个单位的高度时,主角可以完全从山峰跳到井盖,再跳到另一个山峰。最后,主角的绕圈循环其实是一个6*2的矩形,只要把6步和2步的动作写好,依次循环即可。而写6步和2步可以用到带参方法。所以这一关真的是把之前学到的方法来了个大汇总。
let totalGems=randomNumberOfGems
let expert=Expert() //新建专家
world.place(expert, facing: north, atColumn:0, row:4) //定义专家位置
let character=Character()//新建主角
world.place(character, facing: south, atColumn:4, row:6)//定义主角位置
var number=0 //初始化已收集宝石的个数
func jumpOfCharacter(step:Int) {//jump带参方法
for i in1... step {
if character.isOnGem && number<totalGems//已收集宝石小于随机数时才继续收集
character.collectGem()//顺便收集宝石
number +=1
}
character.jump()
}
}
expert.turnLock(up:true, numberOfTimes:2)//专家操作井盖
while number<totalGems {//走矩形,循环收集宝石
jumpOfCharacter(step:6)
character.turnRight()
jumpOfCharacter(step:2)
character.turnRight()
}
网友评论