Kurzusok
/
Crystal
Crystal
/
Feladatok
/
Kristályvadász
Kristályvadász

Kristályvadász

Tanulófeladat

Bevezetés

A Crystalben van egy Bool nevű típus. Ez a true és false értékeket jelöli.

Logikai operátorok

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.

És(&&)

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

Vagy(||)

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

Nem(!)

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

Zárójelek használata(())

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
Note

Zárójelet csak akkor használj, ha az befolyásolja az eredményt; egyébként hagyd el.

Utasítások

É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.

1. Határozd meg, hogy a karakter kap-e bónuszpontokat

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

2. Határozd meg, hogy a karakter szerez-e pontot

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

3. Határozd meg, hogy a karakter veszít-e

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

4. Határozd meg, hogy a karakter nyer-e

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
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Crystal Exercism

Készen állsz elkezdeni a(z) Kristályvadász feladatot?

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.