Треки
/
Swift
Swift
/
Вправи
/
У пошуках крил
У пошуках крил

У пошуках крил

Навчальна вправа

Вступ

Swift надає вбудований тип Bool для представлення булевих значень (англ. Boolean): true та false.

Логічні оператори

Swift має три логічні оператори для поєднання й обчислення булевих виразів: ! (логічне заперечення), && (логічне і) та || (логічне або).

Логічне і (&&)

Оператор і (&&) повертає true, тільки якщо обидва операнди дорівнюють true. Якщо хоч один з операндів дорівнює false, він повертає false. З кожного боку від символу && ставимо вираз або булеве значення:

true && true  // true
true && false // false

Логічне або (||)

Оператор або (||) повертає true, якщо принаймні один з операндів дорівнює true. Він повертає false, лише коли обидва операнди дорівнюють false. З кожного боку від символу || ставимо вираз або булеве значення:

true || true   // true
true || false  // true
false || false // false

Логічне заперечення (!)

Оператор заперечення (!) інвертує булеве значення. Він повертає true, якщо значення дорівнює false, і false, якщо значення дорівнює true. Ставмо оператор ! безпосередньо перед значенням або виразом:

!true  // false
!false // true

Використання дужок (())

Ми можемо використовувати дужки, щоб групувати вирази й керувати порядком обчислення. У Swift спершу обчислюється те, що стоїть у дужках:

true && false && false || true   // true
true && false && (false || true) // false

Групування за допомогою дужок також визначає, як оператор заперечення застосовується до складних виразів:

!true && false   // false (evaluates (!true) first, then false && false)
!(true && false) // true  (evaluates (true && false) first to false, then !false)
Note

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

Вказівки

Ми розробляємо нову гру Wings Quest, яка має стати надзвичайно популярною. У грі ми граємо за птаха, який рухається та збирає насіння. Гравець перемагає, коли збирає все насіння. Якщо гравець торкнеться орла, він втратить усе своє насіння і програє. Із цього правила є виняток: гравець може мати активний підсилювач, який дозволяє йому літати вище за інших птахів.

Наша мета - написати кілька правил, які будуть використовуватися у грі.

1. Визначити, чи отримує птах бонусні очки

У грі птах отримує бонусні очки, якщо торкається орла, маючи активний підсилювач.

Визначимо функцію bonusPoints(powerUpActive:touchingEagle:), яка приймає два аргументи: powerUpActive, що показує, чи має птах активний підсилювач, та аргумент touchingEagle, що показує, чи торкається птах орла. Функція повинна повертати true, лише якщо птах має активний підсилювач і торкається орла, і повертати false в іншому випадку.

bonusPoints(powerUpActive: false, touchingEagle: true)
// Returns false

2. Визначити, чи набирає птах очки

У грі гравець набирає очки, коли підбирає насіння або підсилювач.

Визначимо функцію score(touchingPowerUp:touchingSeed:), яка приймає два аргументи: touchingPowerUp, що показує, чи торкається птах підсилювача, та аргумент touchingSeed, що показує, чи торкається птах насіння. Функція повинна повертати true, якщо птах торкається підсилювача або насіння, і повертати false в іншому випадку.

score(touchingPowerUp: true, touchingSeed: true)
// Returns true

3. Визначити, чи програє птах

Визначимо функцію lose(powerUpActive:touchingEagle:), яка приймає два аргументи: powerUpActive, що показує, чи має птах активний підсилювач, та аргумент touchingEagle, що показує, чи торкається птах орла. Функція повинна повертати true, якщо персонаж торкається орла і не має активного підсилювача, і повертати false в іншому випадку.

lose(powerUpActive: false, touchingEagle: true)
// Returns true

4. Визначити, чи перемагає птах

Визначимо функцію win(hasPickedUpAllSeeds:powerUpActive:touchingEagle:), яка приймає такі аргументи:

  • hasPickedUpAllSeeds показує, чи зібрав птах усе насіння.
  • powerUpActive показує, чи має птах активний підсилювач.
  • touchingEagle показує, чи торкається птах орла.

Функція повинна повертати true, якщо птах зібрав усе насіння і не програв згідно з аргументами, визначеними в частині 3, і повертати false в іншому випадку.

win(hasPickedUpAllSeeds: false, powerUpActive: true, touchingEagle: false)
// Returns false
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Swift Exercism

Час розпочати У пошуках крил?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Swift, а також 35 концепцій116 вправ та справжнє наставництво від людей, і все це безкоштовно.