Kurzusok
/
PHP
PHP
/
Feladatok
/
Annalyn beszivárgása
Annalyn beszivárgása

Annalyn beszivárgása

Tanulófeladat

Bevezetés

Boolean-ok

A bool típusnak (a boolean rövidítése) csak két értéke van: true és false. A true és false literálértékeknél a kódban nem számít a kis- és nagybetű.

<?php

$value_is_true = true;
$value_is_false = false;

A Boolean értékek gyakran egy operátor eredményeként jelennek meg logikai kifejezésekben, majd vezérlési szerkezetekben használjuk őket.

Logikai operátorok

Több logikai operátor is létezik:

  • !$a: true-t ad vissza, ha $a nem true
  • $a && $b: true-t ad vissza, ha $a és $b is true
  • $a || $b: true-t ad vissza, ha $a vagy $b közül legalább az egyik true
Caution

Létezik and és or operátor is, amelyek rendre megfelelnek a && és || operátornak. Ezek viselkedése nem azonos a && és || operátoréval, és váratlan eredményeket adhatnak, ezért a használatukat nem javasoljuk.

Utasítások

Ebben a feladatban egy új RPG-játék küldetéslogikáját valósítod meg, amelyet egy barátod fejleszt. A játék főszereplője Annalyn, egy bátor lány, akinek van egy elszánt és hűséges kutyája. Sajnos azonban baj történik: a legjobb barátját elrabolták, miközben az erdőben bogyókat keresett. Annalyn megpróbálja megtalálni és kiszabadítani a legjobb barátját, és erre a küldetésre akár a kutyáját is magával viheti.

Miután egy ideig a legjobb barátja nyomát követi, megtalálja a tábort, amelyben a barátját fogva tartják. Kiderül, hogy két emberrabló van: egy hatalmas lovag és egy ravasz íjász.

Miután megtalálta az emberrablókat, Annalyn végiggondolja, hogy az alábbi cselekvések közül melyiket hajthatja végre:

  • Gyors támadás: gyors támadást akkor lehet végrehajtani, ha a lovag alszik, mivel időbe telik, amíg magára ölti a páncélját, így sebezhető lesz.
  • Kémkedés: akkor lehet kémkedni a csoport után, ha legalább az egyikük ébren van. Ellenkező esetben a kémkedés időpocsékolás.
  • Jelzés a fogolynak: a fogolynak madárhangokkal lehet jelezni, ha a fogoly ébren van, és az íjász alszik, mivel az íjászokat madárjelekre képezték ki, így elfoghatják az üzenetet.
  • A fogoly kiszabadítása: Annalyn megpróbálhat belopakodni a táborba, hogy kiszabadítsa a foglyot. Ez kockázatos vállalkozás, és csak kétféleképpen sikerülhet:
    • Ha Annalyn magával viszi a kutyáját, akkor ki tudja menteni a foglyot, ha az íjász alszik. A lovag fél a kutyától, az íjásznak pedig nem lesz ideje felkészülni, mielőtt Annalyn és a fogoly elmenekül.
    • Ha Annalyn nincs ott a kutyája, akkor neki és a fogolynak nagyon óvatosnak kell lennie! Annalyn akkor szabadíthatja ki a foglyot, ha a fogoly ébren van, a lovag és az íjász pedig alszik, de ha a fogoly alszik, nem menthető ki: a fogoly megijedne Annalyn hirtelen felbukkanásától, és felébresztené a lovagot meg az íjászt.

Négy részfeladat vár rád: meg kell valósítanod annak logikáját, hogy az erdőben talált három szereplő állapota, valamint Annalyn kutyájának jelenléte alapján eldönthető legyen, hogy a fenti cselekvések elvégezhetők-e.

1. Nézd meg, hogy lehetséges-e a „Gyors támadás”

Valósíts meg egy canFastAttack nevű függvényt, amely egy Boolean értéket vár, ami azt jelzi, hogy a lovag ébren van-e. A függvény true-t ad vissza, ha a szereplő állapota alapján a „Gyors támadás” végrehajtható. Ellenkező esetben false-t ad vissza:

<?php
$is_knight_awake = true;

$infiltration = new AnnalynsInfiltration();
$infiltration->canFastAttack($is_knight_awake);
// => false

2. Nézd meg, hogy lehetséges-e a „Kémkedés”

Valósíts meg egy canSpy nevű függvényt, amely három Boolean értéket vár, amelyek rendre azt jelzik, hogy a lovag, az íjász és a fogoly ébren van-e. A függvény true-t ad vissza, ha a szereplők állapota alapján a „Kémkedés” végrehajtható. Ellenkező esetben false-t ad vissza:

<?php
$is_knight_awake = false;
$is_archer_awake = true;
$is_prisoner_awake = false;

$infiltration = new AnnalynsInfiltration();
$infiltration->canSpy($is_knight_awake, $is_archer_awake, $is_prisoner_awake);
// => true

3. Nézd meg, hogy lehetséges-e a „Jelzés a fogolynak”

Valósíts meg egy canSignal nevű függvényt, amely két Boolean értéket vár, amelyek rendre azt jelzik, hogy az íjász és a fogoly ébren van-e. A függvény true-t ad vissza, ha a szereplők állapota alapján a „Jelzés a fogolynak” végrehajtható. Ellenkező esetben false-t ad vissza:

<?php
$is_archer_awake = false;
$is_prisoner_awake = true;

$infiltration = new AnnalynsInfiltration();
$infiltration->canSignal($is_archer_awake, $is_prisoner_awake);
// => true

4. Nézd meg, hogy lehetséges-e a „Fogoly kiszabadítása”

Valósíts meg egy canLiberate nevű függvényt, amely négy Boolean értéket vár. Az első három paraméter rendre azt jelzi, hogy a lovag, az íjász és a fogoly ébren van-e. Az utolsó paraméter azt jelzi, hogy Annalyn kutyája jelen van-e. A függvény true-t ad vissza, ha a szereplők állapota és Annalyn kutyájának jelenléte alapján a „Fogoly kiszabadítása” végrehajtható. Ellenkező esetben false-t ad vissza:

<?php
$is_knight_awake = false;
$is_archer_awake = true;
$is_prisoner_awake = false;
$is_dog_present = false;

$infiltration = new AnnalynsInfiltration();
$infiltration->canLiberate(
    $is_knight_awake,
    $is_archer_awake,
    $is_prisoner_awake,
    $is_dog_present
);
// => false
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
PHP Exercism

Készen állsz elkezdeni a(z) Annalyn beszivárgása feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) PHP nyelvet 11 fogalom122 feladat segítségével, valódi emberi mentorálással, mindez ingyen.