Swift Playgrounds на русском, World Building 6 урок | Build a Loop

preview_player
Показать описание
Друзья, я рад приветствовать всех на второй части по урокам в Swift Playgrounds. Мы с вами приступаем к шестому уроку в части по Построению мира. Успехов в прохождении!!!

Мой телеграм канал, где перевод уроков по swift playgrounds выходит чаще и раньше чем видео!

1-6 Build a Loop 1-6
Построение мира

Всем привет, сегодня у нас шестой урок по теме построения мира, урок называется: создайте цикл.

Испытание: Постройте свой мир и соберите рандомно появляющиеся кристаллы, представленные константой totalGems.

В этой головоломке, количество кристаллов появляется рандомно при каждом запуске вашего кода. Ваша цель - добавить изменения в мир головоломку таким образом, чтобы вы смогли эффективно по нему передвигаться собирая кристаллы до тех пор пока не соберёте их все. Количество кристаллов определено значением, которое хранится в константе totalGems.

Отслеживайте количество собранных кристаллов для того чтобы выяснить в какой момент код должен остановиться.

#swiftplaygroundsнарусском #swiftplayground #learntocode2 #swift
Рекомендации по теме
Комментарии
Автор

спасибо вам за ваши уроки. мне очень нравится!
а код не работает всегда. если кристалл появляется во второй раз в (0;1) персонаж там больше не доходит и нонстоп ходит между синим порталами

Zurabi-jsto
Автор

Лень было разбираться с порталами)

greenPortal.isActive = false
yellowPortal.isActive = false
bluePortal.isActive = false

let character = Character()
var gemCounter = 0

world.place(Block(), atColumn: 0, row: 2)
world.place(Block(), atColumn: 1, row: 3)
world.place(Block(), atColumn: 3, row: 3)
world.place(Block(), atColumn: 6, row: 3)
world.place(Block(), atColumn: 6, row: 0)
world.place(Block(), atColumn: 1, row: 0)
world.place(character, facing: east, atColumn: 0, row: 0)

func collect() {
if character.isOnGem{
character.collectGem()
gemCounter += 1
}
}

func navigate() {
if character.isBlockedRight && !character.isBlocked {
character.moveForward()
}else{
character.turnLeft()
}

}


while gemCounter != totalGems {
collect()
navigate()
}

АртёмБоровский-йт
Автор

Чуть другое расположение блоков

var gemCounter = 0

world.place(Block(), atColumn: 3, row: 3)
world.place(Block(), atColumn: 0, row: 2)

let Василий = Expert()
world.place(Василий, facing: east, atColumn: 2, row: 3)

while gemCounter < totalGems {
if Василий.isOnGem {
Василий.collectGem()
gemCounter += 1
}else if Василий.isBlocked {
Василий.turnRight()
}else {
Василий.moveForward()
}
}

AquaRioUK