Tracks
/
Swift
Swift
/
Ejercicios
/
La búsqueda de alas
La búsqueda de alas

La búsqueda de alas

Ejercicio de aprendizaje

Introducción

Swift incluye un tipo incorporado llamado Bool para representar valores de verdad (booleanos): true y false.

Operadores lógicos

Swift incluye tres operadores lógicos (!, && y ||) para combinar y evaluar expresiones Boolean.

AND lógico (&&)

El operador and (&&) devuelve true solo si ambos operandos son true. Si cualquiera de los operandos es false, devuelve false. Coloca una expresión o un valor Boolean a cada lado del símbolo &&:

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

OR lógico (||)

El operador or (||) devuelve true si al menos uno de los operandos es true. Solo devuelve false cuando ambos operandos son false. Coloca una expresión o un valor Boolean a cada lado del símbolo ||:

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

NOT lógico (!)

El operador not (!) invierte un valor Boolean. Devuelve true si el valor es false, y false si el valor es true. Coloca el operador ! justo antes del valor o de la expresión:

!true  // false
!false // true

Cómo usar los paréntesis (())

Puedes usar paréntesis para agrupar expresiones y controlar el orden de evaluación. En Swift, las expresiones que están dentro de los paréntesis se evalúan primero:

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

Agrupar con paréntesis también determina cómo se aplica el operador NOT a las expresiones complejas:

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

Usa paréntesis cuando necesites aclarar el orden de evaluación o hacer más fáciles de leer las condiciones complejas. Evita agregar paréntesis innecesarios cuando la precedencia predeterminada ya es clara.

Instrucciones

Estás en proceso de desarrollar el nuevo y muy apreciado juego Wings Quest. En el juego eres un pájaro que se mueve de un lado a otro y recoge semillas. El jugador gana al recoger todas las semillas. Si el jugador entra en contacto con un águila, perderá todas sus semillas y perderá el juego. Hay una excepción a esta regla: el jugador puede tener un potenciador activo que lo hace volar más alto que los demás pájaros.

Tu objetivo es escribir algunas reglas que se usarán en el juego.

1. Define si el pájaro obtiene puntos extra

En el juego, el pájaro obtiene puntos extra si toca un águila mientras tiene un potenciador.

Define la función bonusPoints(powerUpActive:touchingEagle:), que toma dos argumentos: powerUpActive, que indica si el pájaro tiene un potenciador activo, y el argumento touchingEagle, que indica si el pájaro está tocando un águila. La función debe devolver true solo si el pájaro tiene un potenciador activo y está tocando un águila, y false en caso contrario.

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

2. Define si el pájaro anota puntos

En el juego, el jugador obtiene puntos al recoger una semilla o un potenciador.

Define la función score(touchingPowerUp:touchingSeed:), que toma dos argumentos: touchingPowerUp, que indica si el pájaro está tocando un potenciador, y el argumento touchingSeed, que indica si el pájaro está tocando una semilla. La función debe devolver true si el pájaro está tocando un potenciador o una semilla, y devolver false en caso contrario.

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

3. Define si el pájaro pierde

Define la función lose(powerUpActive:touchingEagle:), que toma dos argumentos: powerUpActive, que indica si el pájaro tiene un potenciador activo, y el argumento touchingEagle, que indica si el pájaro está tocando un águila. La función debe devolver true si el pájaro está tocando un águila y no tiene un potenciador activo, y devolver false en caso contrario.

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

4. Define si el pájaro gana

Define la función win(hasPickedUpAllSeeds:powerUpActive:touchingEagle:), que toma los argumentos:

  • hasPickedUpAllSeeds si el pájaro ha recogido todas las semillas.
  • powerUpActive si el pájaro tiene un potenciador activo.
  • touchingEagle si el pájaro está tocando un águila.

La función debe devolver true si el pájaro ha reunido todas las semillas y no ha perdido según los argumentos definidos en la parte 3, y devolver false en caso contrario.

win(hasPickedUpAllSeeds: false, powerUpActive: true, touchingEagle: false)
// Returns false
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Swift Exercism

¿Todo listo para empezar La búsqueda de alas?

Regístrate en Exercism para aprender y dominar Swift con 35 conceptos116 ejercicios y mentoría humana real, todo gratis.