let expert = Expert ()
let character = Character ()
var Gem = 0
var Gem2 = 0
func expertTurnArround() {
expert.turnRight()
expert.turnRight()
}
func GoDaddyGo() {
for _ in 1 ... 2 {
expert.turnLock(up: true, numberOfTimes: 4)
expertTurnArround()
}
expert.turnLeft()
for _ in 1 ... 2 {
expert.turnLock(up: true, numberOfTimes: 4)
expertTurnArround()
}
}
func GoDaddyGoDown() {
for _ in 1 ... 2 {
expert.turnLock(up: false, numberOfTimes: 4)
expertTurnArround()
}
expert.turnLeft()
for _ in 1 ... 2 {
expert.turnLock(up: false, numberOfTimes: 4)
expertTurnArround()
}
}
// Collect gems above
GoDaddyGo()
while Gem < 3 {
for _ in 1 ... 1{ character.move(distance: 2)
if character.isOnGem {
character.collectGem()
Gem += 1
character.turnRight()
} else if character.isOnGem {
character.move(distance: 2)
}
}
}
character.move(distance: 1)
for _ in 1 ... 2 {
expert.turnLock(up: false, numberOfTimes: 3)
expertTurnArround()
}
expert.turnLeft()
for _ in 1 ... 2 {
expert.turnLock(up: false, numberOfTimes: 3)
expertTurnArround()
}
character.turnLeft()
character.moveForward()
character.collectGem()
Gem2 += 1
character.turnLeft()
character.turnLeft()
while Gem2 < 4 {
for i in 1 ... 3 {
if character.isOnGem {
character.collectGem()
Gem2 += 1
expertTurnArround()
}else {
character.move(distance: 2)
character.turnRight()
}
}
}
вот это точно ковнокод) че тут можно было улучшить?
Хорошо, а если там другая трасса будет? Ок, если значения в циклах будет захардкодены? Попробуйте написать проще, при этом давая переменным более осмысленные имена. Gem, GoDaddyGo — слишком лаконично, expertTurnArround — орфографически не очень. Пока рано об этом думать, но почитайте про форматирование кода.