Rutas
/
Swift
Swift
/
Ejercicios
/
En busca de alas
En busca de alas

En busca de alas

Ejercicio de aprendizaje

Introducción

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

Operadores lógicos

Swift ofrece 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 alguno 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

Uso de los paréntesis (())

Puedes usar paréntesis para agrupar expresiones y controlar el orden de evaluación. En Swift, las expresiones entre 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 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 que las condiciones complejas sean más fáciles de leer. Evita añadir paréntesis innecesarios cuando la precedencia predeterminada ya está 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 cuando recoge todas las semillas. Si el jugador entra en contacto con un águila, perderá todas sus semillas y perderá la partida. Hay una excepción a esta regla: el jugador puede tener activo un potenciador que le 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 recibe puntos extra

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

Define la función bonusPoints(powerUpActive:touchingEagle:), que recibe 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 puntúa

En el juego, el jugador consigue puntos cuando recoge una semilla o un potenciador.

Define la función score(touchingPowerUp:touchingSeed:), que recibe 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 recibe 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 personaje 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 recibe los siguientes 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 el apartado 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 pestaña nueva
Swift Exercism

¿Listo para empezar En busca de alas?

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