Crystal tiene un tipo conocido como Bool.
Representa los valores true y false.
Crystal tiene tres operadores lógicos (!, ||, &&), que combinan valores booleanos y forman expresiones que producen valores diferentes.
&&)El operador and en Crystal se representa con && y devuelve true si ambos valores son true; en caso contrario, devuelve false.
Al usar el operador and, se coloca un valor booleano a la derecha de && y otro a la izquierda.
true && true
# => true
true && false
# => false
||)El operador or en Crystal se representa con || y devuelve true si al menos uno de los valores dados es true.
Si ambos valores son false, devuelve false.
Al usar el operador or, se coloca un valor booleano a la derecha de || y otro a la izquierda.
true || true
# => true
true || false
# => true
false || false
# => false
!)El operador not en Crystal se representa con ! y devuelve true si el valor booleano dado es false, y devuelve false si se le proporciona true.
Al usar el operador not, se coloca un valor booleano después del operador (!).
!true
# => false
!false
# => true
())Cuando trabajas con valores booleanos, puedes usar paréntesis para decidir qué valores se evalúan primero. El resultado puede variar según cómo se usen los paréntesis. En Crystal, lo que está entre paréntesis se evalúa primero.
true && false && false || true
# => true
true && false && (false || true)
# => false
Como lo que está entre paréntesis se evalúa primero, en el siguiente ejemplo el operador not se aplicará a la expresión que hay dentro de los paréntesis.
!true && false
# => false
!(true && false)
# => true
Solo deberías usar paréntesis cuando afecten al resultado; de lo contrario, es mejor omitirlos.
Estás desarrollando el nuevo y muy valorado juego Crystal Hunter. En el juego, eres un personaje que se mueve y recoge cristales. El jugador gana cuando recoge todos los cristales. Si el jugador entra en contacto con un bandido, perderá todos sus cristales y la partida. Hay una excepción a esta regla: el jugador puede tener activo un potenciador que lo hace invisible para los bandidos.
Tu objetivo es escribir algunas reglas que se usarán en el juego.
En el juego, el personaje obtiene puntos extra si toca a un bandido mientras tiene un potenciador.
Define el método Rules#bonus_points?, que recibe dos argumentos (si el personaje tiene un potenciador activo y si el personaje está tocando a un bandido) y devuelve un valor Boolean que indica si el personaje obtendrá puntos extra.
El método debe devolver true únicamente si el personaje tiene un potenciador activo y está tocando a un bandido, y false en caso contrario.
Rules.new.bonus_points?(false, true)
# => false
El jugador obtiene puntos en el juego cuando recoge un cristal o un potenciador.
Define el método Rules#score?, que recibe dos argumentos (si el personaje está tocando un potenciador y si el personaje está tocando un cristal) y devuelve un valor Boolean que indica si el personaje ha puntuado o no.
El método debe devolver true si el personaje toca un potenciador o un cristal, y false en caso contrario.
Rules.new.score?(true, true)
# => true
Define el método Rules#lose?, que recibe dos argumentos (si el personaje tiene un potenciador activo y si el personaje está tocando a un bandido) y devuelve un valor Boolean que indica si el personaje pierde o no.
El método debe devolver true si el personaje toca a un bandido y no tiene un potenciador activo, y false en caso contrario.
Rules.new.lose?(false, true)
# => true
Define el método Rules#win?, que recibe tres argumentos (si el personaje ha recogido todos los cristales, si el personaje tiene un potenciador activo y si el personaje está tocando a un bandido) y devuelve un valor Boolean que indica si el personaje gana o no.
El método debe devolver true si el personaje ha reunido todos los cristales y no ha perdido según los argumentos definidos en el apartado 3, y false en caso contrario.
Rules.new.win?(false, true, false)
# => false
Regístrate en Exercism para aprender y dominar Crystal con 26 conceptos142 ejercicios y mentoría humana real, todo gratis.