这一关之前发过,为了方便能按顺序阅读,再编辑发一下。
这关,可以多个角色,也可以两个角色,我们选用的是两个角色。一个用来控制升降砖块,一个用来收集宝石。
需要用的知识都是我们之前训练过的。
我们试着做一下。
代码如下:
let totalGems = randomNumberOfGems
let expert = Expert()
let character = Character()
var GemNum = 0
var JumNum = 1
var RoaNum = 3
world.place(expert, facing: north, atColumn: 0, row: 4)
world.place(character, facing: .north, atColumn: 4, row: 0)
func turnAround() {
character.turnRight()
character.turnRight()
}
func charDo() {
if character.isOnGem {
character.collectGem()
GemNum += 1
}
}
func LRAorund() {
if RoaNum%3 == 0 {
character.turnLeft()
character.jump()
charDo()
character.turnLeft()
JumNum += 1
RoaNum += 1
}else if RoaNum%3 == 1 {
character.turnRight()
character.jump()
charDo()
character.turnRight()
JumNum += 1
RoaNum += 1
}else if RoaNum%3 == 2 {
character.turnLeft()
character.turnLeft()
character.jump()
charDo()
JumNum += 1
RoaNum += 1
}}
expert.turnLock(up: true, numberOfTimes: 3)
while GemNum < totalGems {
charDo()
while JumNum % 7 != 0 {
charDo()
character.jump()
JumNum += 1
}
LRAorund()
}
执行后:
在这里,由于宝石数量是随机的,而且很多砖块都是需要.jump()功能的,所以,我们要用.jump()遍历所有的位置。
注释大家自己加上去吧。如果还有更好的方法,可以自己试一下。看看哪种最有效?