A Crystalben van egy Bool nevű típus.
Ez a true és false értékeket jelöli.
A Crystalnek három logikai operátora van (!, ||, &&), amelyek Bool értékeket kombinálnak, és olyan kifejezéseket alkotnak, amelyek különböző értékeket adnak eredményül.
&&)A Crystalben az és operátort a && jelöli, és akkor ad vissza true-t, ha mindkét érték true; egyébként false-t ad vissza.
Az és operátor használatakor az egyik Bool a && jobb oldalára, a másik a bal oldalára kerül.
true && true
# => true
true && false
# => false
||)A Crystalben a vagy operátort a || jelöli, és akkor ad vissza true-t, ha a megadott értékek közül legalább az egyik true.
Ha mindkét érték false, akkor false-t ad vissza.
A vagy operátor használatakor az egyik Bool a || jobb oldalára, a másik a bal oldalára kerül.
true || true
# => true
true || false
# => true
false || false
# => false
!)A Crystalben a nem operátort a ! jelöli: true-t ad vissza, ha a megadott Bool false, és false-t, ha true-t kap.
A nem operátor használatakor a Bool értéket az operátor (!) után kell megadni.
!true
# => false
!false
# => true
())Amikor logikai értékekkel dolgozol, zárójelekkel döntheted el, melyik Bool értékelődjön ki először. Az eredmény attól függően változhat, hogyan használod a zárójeleket. A Crystalben először a zárójelben lévő rész értékelődik ki.
true && false && false || true
# => true
true && false && (false || true)
# => false
Mivel a zárójelben lévő rész értékelődik ki először, a következő példában a nem operátor a zárójelben lévő kifejezésre vonatkozik.
!true && false
# => false
!(true && false)
# => true
Zárójelet csak akkor használj, ha az befolyásolja az eredményt; egyébként hagyd el.
Épp a nagyra becsült új játékot, a Crystal Huntert fejleszted. A játékban egy karaktert irányítasz, aki mozog és kristályokat gyűjt. A játékos akkor nyer, ha összegyűjti az összes kristályt. Ha a játékos kapcsolatba kerül egy banditával, elveszíti az összes kristályát és a játékot. Ez alól a szabály alól van egy kivétel: a játékosnak lehet aktív power-upja, ami láthatatlanná teszi őt a banditák számára.
A célod, hogy megírj néhány szabályt, amelyeket a játékban felhasználnak.
A játékban a karakter bónuszpontokat kap, ha úgy ér hozzá egy banditához, hogy közben aktív power-upja van.
Definiáld a Rules#bonus_points? metódust, amely két argumentumot vár (van-e a karakternek aktív power-upja, és hozzáér-e a karakter egy banditához), és egy Boolean értéket ad vissza, ami megmondja, hogy a karakter kap-e bónuszpontokat.
A metódus csak akkor adjon vissza true-t, ha a karakternek aktív a power-upja, és hozzáér egy banditához, egyébként false-t.
Rules.new.bonus_points?(false, true)
# => false
A játékos pontot szerez, amikor felvesz egy kristályt vagy egy power-upot.
Definiáld a Rules#score? metódust, amely két argumentumot vár (hozzáér-e a karakter egy power-uphoz, és hozzáér-e a karakter egy kristályhoz), és egy Boolean értéket ad vissza, ami jelzi, hogy a karakter szerzett-e pontot.
A metódus true-t adjon vissza, ha a karakter hozzáér egy power-uphoz vagy egy kristályhoz, egyébként false-t.
Rules.new.score?(true, true)
# => true
Definiáld a Rules#lose? metódust, amely két argumentumot vár (aktív-e a karakter power-upja, és hozzáér-e a karakter egy banditához), és egy Boolean értéket ad vissza, ami jelzi, hogy a karakter veszít-e.
A metódus true-t adjon vissza, ha a karakter hozzáér egy banditához, és nincs aktív power-upja, egyébként false-t.
Rules.new.lose?(false, true)
# => true
Definiáld a Rules#win? metódust, amely három argumentumot vár (felszedte-e a karakter az összes kristályt, aktív-e a karakter power-upja, és hozzáér-e a karakter egy banditához), és egy Boolean értéket ad vissza, ami jelzi, hogy a karakter nyer-e.
A metódus true-t adjon vissza, ha a karakter összegyűjtötte az összes kristályt, és a 3. részben meghatározott argumentumok alapján nem veszített, egyébként false-t.
Rules.new.win?(false, true, false)
# => false
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Crystal nyelvet 26 fogalom142 feladat segítségével, valódi emberi mentorálással, mindez ingyen.