Crystal ha un tipo noto come Bool.
Rappresenta i valori true e false.
Crystal ha tre operatori logici (!, ||, &&), che combinano i Bool e creano espressioni che producono valori diversi.
&&)L'operatore and in Crystal è rappresentato da && e restituisce true se entrambi i valori sono true; altrimenti restituisce false.
Quando si usa l'operatore and, un Bool va messo a destra di && ed un altro a sinistra.
true && true
# => true
true && false
# => false
||)L'operatore or in Crystal è rappresentato da || e restituisce true se almeno uno dei valori dati è true.
Se entrambi i valori sono false, allora restituisce false.
Quando si usa l'operatore or, un Bool va messo a destra di || ed un altro a sinistra.
true || true
# => true
true || false
# => true
false || false
# => false
!)L'operatore not in Crystal è rappresentato da ! e restituisce true se il Bool dato è false e restituisce false se viene fornito true.
Quando si usa l'operatore not, un Bool va messo dopo l'operatore (!).
!true
# => false
!false
# => true
())Quando lavori con i booleani, puoi usare le parentesi per decidere quali Bool valutare per primi. Il risultato può cambiare a seconda di come vengono usate le parentesi. In Crystal, ciò che è tra parentesi viene valutato per primo.
true && false && false || true
# => true
true && false && (false || true)
# => false
Poiché ciò che è tra parentesi viene valutato per primo, nel seguente esempio l'operatore not si applica all'espressione dentro le parentesi.
!true && false
# => false
!(true && false)
# => true
Usa le parentesi solo quando influenzano il risultato; altrimenti vanno omesse.
Stai sviluppando il nuovo acclamato gioco Crystal Hunter. Nel gioco interpreti un personaggio che si muove e raccoglie cristalli. Il giocatore vince raccogliendo tutti i cristalli. Se il giocatore entra in contatto con un bandito, perde tutti i suoi cristalli e la partita. C'è un'eccezione a questa regola: il giocatore può avere un power-up attivo che lo rende invisibile ai banditi.
Il tuo obiettivo è scrivere alcune regole che verranno usate nel gioco.
Nel gioco, il personaggio ottiene punti bonus se tocca un bandito mentre ha un power-up attivo.
Definisci il metodo Rules#bonus_points?, che prende due argomenti (se il personaggio ha un power-up attivo e se il personaggio sta toccando un bandito) e restituisce un valore booleano che indica se il personaggio otterrà punti bonus.
Il metodo deve restituire true solo se il personaggio ha un power-up attivo e sta toccando un bandito, e false altrimenti.
Rules.new.bonus_points?(false, true)
# => false
Nel gioco, il giocatore guadagna punti quando raccoglie un cristallo o un power-up.
Definisci il metodo Rules#score?, che prende due argomenti (se il personaggio sta toccando un power-up e se il personaggio sta toccando un cristallo) e restituisce un valore booleano che indica se il personaggio ha segnato punti oppure no.
Il metodo deve restituire true se il personaggio tocca un power-up o un cristallo, e restituire false altrimenti.
Rules.new.score?(true, true)
# => true
Definisci il metodo Rules#lose?, che prende due argomenti (se il personaggio ha un power-up attivo e se il personaggio sta toccando un bandito) e restituisce un valore booleano che indica se il personaggio perde oppure no.
Il metodo deve restituire true se il personaggio tocca un bandito e non ha un power-up attivo, e restituire false altrimenti.
Rules.new.lose?(false, true)
# => true
Definisci il metodo Rules#win?, che prende tre argomenti (se il personaggio ha raccolto tutti i cristalli, se il personaggio ha un power-up attivo e se il personaggio sta toccando un bandito) e restituisce un valore booleano che indica se il personaggio vince oppure no.
Il metodo deve restituire true se il personaggio ha raccolto tutti i cristalli e non ha perso in base agli argomenti definiti nella parte 3, e restituire false altrimenti.
Rules.new.win?(false, true, false)
# => false
Iscriviti a Exercism per imparare e padroneggiare Crystal con 26 concetti142 esercizi e il mentoring di persone reali, tutto gratis.