Swift Playgrounds на русском, Types 3 урок | Setting the Right Portal

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

Мой телеграм канал, где перевод уроков по swift playgrounds выходит чаще и раньше чем видео! Если отключат Ютьюб, вы знаете где найти уроки по Свифту)

1-3 Setting the Right Portal 1-3
Типы

Цель: Измените состояние каждого из порталов чтобы собрать драгоценные камни.

В этой головоломке, есть два портала, и вам нужно их оба использовать для перемещения вашего персонажа к другой части головоломки. Но вам также нужно и перемещаться через некоторые зоны, таким образом вы должны ссылаться к экземпляру каждого портала поочередно изменяя свойство isActive.

Для того чтобы это сделать, вы должны установить состояние для каждого экземпляра портала. Состояние - это сохраненная информация переменной в любой момент времени. Таким образом, иногда экземпляр портала хранит значение true у свойства isActive, в других случаях он хранит значение false.

1. Спланируйте, когда активировать или деактивировать каждый из порталов для сбора всех кристаллов.

2. Используйте точечную нотацию для изменения свойства isActive у bluePortal и pinkPortal по мере решения головоломки.

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

У нас код получился детский, но короче, чем все остальные варианты

func oonr () {
moveForward()
moveForward()
collectGem()
turnLeft()
turnLeft()
}


oonr()
bluePortal.isActive = false
oonr()
bluePortal.isActive = true
moveForward()
oonr()
moveForward()
turnLeft()
turnLeft()
moveForward()
collectGem()

Юлиана-лш
Автор

С первого раза получилось написать. на одном дыхании. Но функцию контроля порталов разместил сразу после функции навигации. все работает. пересмотрел несколько раз как написал ты и нифига не понял почему функцию контроля порталами ты разместил в конце после условий...

var gemCounter = 0

func navi() {
if !isBlocked {
moveForward()
}
else {
turnLeft()
turnLeft()
}
}

func controlPortal() {
if gemCounter == 1 {
bluePortal.isActive = false
}
else if gemCounter == 2 {
bluePortal.isActive = true
pinkPortal.isActive = false
}
else if gemCounter == 3 {
pinkPortal.isActive = true
}


}

while gemCounter != 4 {
navi()
var gemCounter = 0

func navi() {
if !isBlocked {
moveForward()
}
else {
turnLeft()
turnLeft()
}
}

func controlPortal() {
if gemCounter == 1 {
bluePortal.isActive = false
}
else if gemCounter == 2 {
bluePortal.isActive = true
pinkPortal.isActive = false
}
else if gemCounter == 3 {
pinkPortal.isActive = true
}


}

while gemCounter != 4 {
navi()
controlPortal()
if isOnGem {
collectGem()
gemCounter += 1
}

}


if isOnGem {
collectGem()
gemCounter += 1
}

}

Sweatyawe
Автор

bluePortal.isActive = false
pinkPortal.isActive = false
var gemCounter = 0
while gemCounter != 4{
while !isOnGem && !isBlocked {
moveForward()
}
if isOnGem && gemCounter != 4{
collectGem()
gemCounter += 1

}
if isBlocked && gemCounter != 4{
turnLeft()
turnLeft()

}
if gemCounter == 1{
bluePortal.isActive = true
pinkPortal.isActive = true
}
if gemCounter == 3 {
turnLeft()
turnLeft()
bluePortal.isActive = false
}

}

KrisBond-ebge