Track
/
Swift
Swift
/
Esercizi
/
La ricerca delle ali
La ricerca delle ali

La ricerca delle ali

Esercizio di apprendimento

Introduzione

Swift fornisce un tipo integrato chiamato Bool per rappresentare i valori di verità: true e false.

Operatori logici

Swift fornisce tre operatori logici (!, && e ||) per combinare e valutare espressioni booleane.

AND logico (&&)

L'operatore and (&&) restituisce true solo se entrambi gli operandi sono true. Se uno dei due operandi è false, restituisce false. Metti un'espressione o un valore booleano su ciascun lato del simbolo &&:

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

OR logico (||)

L'operatore or (||) restituisce true se almeno uno degli operandi è true. Restituisce false solo quando entrambi gli operandi sono false. Metti un'espressione o un valore booleano su ciascun lato del simbolo ||:

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

NOT logico (!)

L'operatore not (!) inverte un valore booleano. Restituisce true se il valore è false, false se il valore è true. Metti l'operatore ! subito prima del valore o dell'espressione:

!true  // false
!false // true

Usare le parentesi tonde (())

Puoi usare le parentesi tonde per raggruppare le espressioni e controllare l'ordine di valutazione. In Swift, le espressioni tra parentesi vengono valutate per prime:

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

Raggruppare con le parentesi determina anche come l'operatore NOT si applica a espressioni complesse:

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

Usa le parentesi quando devi chiarire l'ordine di valutazione o rendere più leggibili le condizioni complesse. Evita di aggiungere parentesi non necessarie quando la precedenza predefinita è già chiara.

Istruzioni

Stai sviluppando il nuovo gioco di grande successo Wings Quest. Nel gioco sei un uccello che si muove e raccoglie semi. Il giocatore vince raccogliendo tutti i semi. Se il giocatore entra in contatto con un'aquila, perde tutti i suoi semi e perde la partita. C'è un'eccezione a questa regola: il giocatore può avere un power-up attivo che lo fa volare più in alto degli altri uccelli.

Il tuo obiettivo è scrivere alcune regole che verranno usate nel gioco.

1. Definire se l'uccello ottiene punti bonus

Nel gioco, l'uccello ottiene punti bonus se tocca un'aquila mentre ha un power-up.

Definisci la funzione bonusPoints(powerUpActive:touchingEagle:) che prende due argomenti: powerUpActive, che indica se l'uccello ha un power-up attivo, e l'argomento touchingEagle, che indica se l'uccello sta toccando un'aquila. La funzione deve restituire true solo se l'uccello ha un power-up attivo e sta toccando un'aquila, e false in caso contrario.

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

2. Definire se l'uccello segna punti

Nel gioco, il giocatore ottiene punti quando raccoglie un seme o un power-up.

Definisci la funzione score(touchingPowerUp:touchingSeed:) che prende due argomenti: touchingPowerUp, che indica se l'uccello sta toccando un power-up, e l'argomento touchingSeed, che indica se l'uccello sta toccando un seme. La funzione deve restituire true se l'uccello sta toccando un power-up o un seme, e restituire false in caso contrario.

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

3. Definire se l'uccello perde

Definisci la funzione lose(powerUpActive:touchingEagle:) che prende due argomenti: powerUpActive, che indica se l'uccello ha un power-up attivo, e l'argomento touchingEagle, che indica se l'uccello sta toccando un'aquila. La funzione deve restituire true se il personaggio sta toccando un'aquila e non ha un power-up attivo, e restituire false in caso contrario.

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

4. Definire se l'uccello vince

Definisci la funzione win(hasPickedUpAllSeeds:powerUpActive:touchingEagle:) che prende gli argomenti:

  • hasPickedUpAllSeeds se l'uccello ha raccolto tutti i semi.
  • powerUpActive se l'uccello ha un power-up attivo.
  • touchingEagle se l'uccello sta toccando un'aquila.

La funzione deve restituire true se l'uccello ha raccolto tutti i semi e non ha perso in base agli argomenti definiti nella parte 3, e restituire false in caso contrario.

win(hasPickedUpAllSeeds: false, powerUpActive: true, touchingEagle: false)
// Returns false
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Swift Exercism

Vuoi iniziare La ricerca delle ali?

Iscriviti a Exercism per imparare e padroneggiare Swift con 35 concetti116 esercizi e il mentoring di persone reali, tutto gratis.