Crystal possède un type appelé Bool.
Il représente les valeurs true et false.
Crystal possède trois opérateurs logiques (!, ||, &&), qui combinent des booléens et forment des expressions produisant des valeurs différentes.
&&)En Crystal, l'opérateur ET est représenté par && et renvoie true si les deux valeurs valent true ; sinon, il renvoie false.
Quand on utilise l'opérateur ET, on place un booléen à droite du && et un autre à gauche.
true && true
# => true
true && false
# => false
||)En Crystal, l'opérateur OU est représenté par || et renvoie true si au moins une des valeurs données vaut true.
Si les deux valeurs valent false, alors il renvoie false.
Quand on utilise l'opérateur OU, un booléen doit être placé à droite du || et un autre à gauche.
true || true
# => true
true || false
# => true
false || false
# => false
!)En Crystal, l'opérateur NON est représenté par ! et renvoie true si le booléen donné vaut false, et renvoie false si on lui fournit true.
Quand on utilise l'opérateur NON, un booléen doit être placé après l'opérateur (!).
!true
# => false
!false
# => true
())Quand on travaille avec des booléens, on peut utiliser des parenthèses pour décider quels booléens évaluer en premier. Le résultat peut être différent selon la façon dont les parenthèses sont utilisées. En Crystal, ce qui se trouve entre parenthèses est évalué en premier.
true && false && false || true
# => true
true && false && (false || true)
# => false
Comme ce qui se trouve entre parenthèses est évalué en premier, dans l'exemple suivant, l'opérateur NON s'appliquera à l'expression située entre parenthèses.
!true && false
# => false
!(true && false)
# => true
Tu ne dois utiliser des parenthèses que lorsqu'elles changent le résultat ; sinon, il vaut mieux les omettre.
Tu es en train de développer le nouveau jeu très apprécié Crystal Hunter. Dans le jeu, tu incarnes un personnage qui se déplace et ramasse des cristaux. Le joueur gagne en ramassant tous les cristaux. Si le joueur entre en contact avec un bandit, il perd tous ses cristaux et la partie. Il y a une exception à cette règle : le joueur peut avoir un power-up actif qui le rend invisible aux bandits.
Ton objectif est d'écrire des règles qui seront utilisées dans le jeu.
Dans le jeu, le personnage obtient des points bonus s'il touche un bandit alors qu'il a un power-up.
Définis la méthode Rules#bonus_points? qui prend deux arguments (si le personnage a un power-up actif et si le personnage touche un bandit) et renvoie un booléen qui indique si le personnage obtient des points bonus.
La méthode doit renvoyer true uniquement si le personnage a un power-up actif et touche un bandit, et false sinon.
Rules.new.bonus_points?(false, true)
# => false
Le joueur gagne des points dans le jeu lorsqu'il ramasse un cristal ou un power-up.
Définis la méthode Rules#score?, qui prend deux arguments (si le personnage touche un power-up et si le personnage touche un cristal) et renvoie un booléen indiquant si le personnage a marqué des points ou non.
La méthode doit renvoyer true si le personnage touche un power-up ou un cristal, et renvoyer false sinon.
Rules.new.score?(true, true)
# => true
Définis la méthode Rules#lose?, qui prend deux arguments (si le personnage a un power-up actif et si le personnage touche un bandit) et renvoie un booléen qui indique si le personnage perd ou non.
La méthode doit renvoyer true si le personnage touche un bandit et n'a pas de power-up actif, et renvoyer false sinon.
Rules.new.lose?(false, true)
# => true
Définis la méthode Rules#win?, qui prend trois arguments (si le personnage a ramassé tous les cristaux, si le personnage a un power-up actif et si le personnage touche un bandit) et renvoie un booléen indiquant si le personnage gagne ou non.
La méthode doit renvoyer true si le personnage a rassemblé tous les cristaux et n'a pas perdu d'après les arguments définis dans la partie 3, et renvoyer false sinon.
Rules.new.win?(false, true, false)
# => false
Inscris-toi sur Exercism pour apprendre et maîtriser Crystal avec 26 concepts142 exercices, et un vrai mentorat humain, le tout gratuitement.