Kő Papír Olló!

Bevezető

kő–papír–olló egy olyan játék, amit szinte mindenki ismer — gyors, egyszerű és bárhol elő lehet venni. Érdekesség, hogy a játék több száz éves, és már nagyon régi kultúrákban is használták döntésekhez. Most megmutatjuk, hogyan lehet ezt az egyszerű játékot micro:biten is elkészíteni, és hogyan fejleszthetjük lépésről lépésre egyre tovább.

Ebben a projektben 5 lépésre osztva fogjuk felépíteni a teljes játékot.

Most kezdjük az első lépéssel!

1. Véletlen választás

Ebben az első lépésben elkészítjük a kő–papír–olló játék legkisebb, legegyszerűbb építőelemét:
a micro:bitet megtanítjuk magától választani kő, papír vagy olló közül.

Ez még nem egy teljes játék, és nem is dönt arról, ki nyer – csak arról szól, hogy a micro:bit hogyan „dob” egy lehetőséget. A következő lépésekben erre építünk majd tovább.

Mit kell elérnünk ebben a feladatban?

A micro:bit:

  1. érezze, ha megrázzuk,

  2. ilyenkor válasszon egyet a három lehetőség közül,

  3. a választást egy ikon formájában jelenítse meg,

  4. és amíg nem rázod meg újra, addig ugyanaz az ikon legyen látható.

1. lépés: Hozz létre egy változót

  1. Nyisd meg a Változók menüt.

  2. Hozz létre egy új változót „eredmeny” névvel.

  3. Tedd be az eredmeny = 0 blokkot az „Indítás” blokkba!

Ez a változó fogja tárolni, hogy a micro:bit éppen mit választott.

2. lépés: Kezeld a rázást

  1. Helyezd el a szerkesztőben az „amikor rázás érzékelve” blokkot a Bemenet menüből!
  2. Most tedd bele:
    A Változók menüből húzd be az „eredmeny legyen” blokkot.
  3. A 0 helyére a Matek menüből húzd be a „véletlenszám 0 és 10 között” blokkot, majd írt át, hogy 1 és 3 között sorsoljon számot a micro:bit!

Ezzel elérted, hogy rázáskor a micro:bit 1 és 3 között választ egy számot, és ezt elmenti az eredmeny változóba.

3. lépés: Eredmény megjelenítése

  1. Helyezd el a szerkesztőben az Alapok menüből az „állandóan” blokkot, ha még nincs ott.
  2.  A Feltételek menüből tegyél egy elágazást az állandóan blokkba.
  3. Töltsd ki az elágazást: ha az eredény 1, mutassunk követ, 2 esetén papírt és ha 3 akkor pedig ollót. Egyébként töröljük a kijelzőt.
Megoldás

2. Erdedmény küldése rádión

Ebben a lépésben már nem egyedül játszik a micro:bit, hanem két eszköz együtt. Mindkét micro:bit kiválaszt egy jelet (kő/papír/olló), elküldi az eredményét rádión, és a program eldönti, ki nyert.

A végeredmény az lesz, hogy rázás után mindkét játékos látja, hogy ebben a körben nyert, vesztett, vagy döntetlen lett.

Mit kell elérnünk ebben a feladatban?

A micro:bit:

  1. külön tárolja a saját és az ellenfél választását,
  2. rázáskor sorsol egy jelet és elküldi azt rádión,
  3. fogadja a másik micro:bit üzenetét,
  4. ha mindkét választás megvan, eldönti az eredményt, megjeleníti az ikont, majd töröl mindent a következő körre.

1. lépés: Saját és ellenfél eredményének tárolása

  1. Nyisd meg a Változók menüt.

  2. Nevezd át az „eredmeny” változót „eredmeny_sajat”-ra

  3. Hozz létre egy új változót „eredmeny_ellenfel” névvel

  4. Tedd be az eredmeny_ellenfel = 0 blokkot is az „Indítás” blokkba!

Ezzel elérjük, hogy a micro:bit mindig tudja:

  • mit választott ő maga,

  • és mit kapott a másiktól.

2. lépés: Rádiócsoport beállítása

  1. Nyisd meg a Rádió menüt.
  2. Helyezd el a „rádió: csoport legyen…” blokkot az Indítás részben.
  3. Állítsd a csoport számát például 1-re (ugyanarra mindkét micro:bitnél).

Fontos: csak azok a micro:bitek beszélgetnek, amelyek ugyanazon a csoportszámon vannak.

3. lépés: Csere-bere

  1. Helyezd el egy feltételt az „amikor rázás érzékelve” blokkba: csak akkor sorsoljon, ha eredmeny_sajat == 0.
  2. Helyezd el benne a korábbi értékadást véletlen számmal.
  3. Végül helyezd át az állandóan blokkból a megjelenítést is az értékadás után!
  •  
  •  

Fontos: A külső feltételünk azért szükséges, hogy  meg kelljen várjuk amíg a másik játékos is mutat.

4. lépés: Eredmény kiértékelése #1

  1. Helyezd el a Rádió menüből a „rádiós adat vételekor receivedNumber” blokkot.
  2. Állítsd az eredmeny_ellenfel változó értékét a receivedNumber-re.
  3. Helyezd el a feltételt: Ha a saját eredményünk NEM nulla akkor…
  4. Ezen belül valósítsd meg a kiértékelést. Pipa ha nyertünk, alvós vagy egyenlő ikon ha döntetlen és X ha vesztettünk.
  5. Ezt tartsuk meg 2 másodpercig, majd nullázzuk le az eredményeket. Így tudjuk elérni, hogy új kört játszhassunk!
  6. Töröld a kijelzőt.

Fontos: Figyeljük meg, hogy nem kell minden esetet kezeljünk! Ha nem nyertünk, vagy nem döntetlen, akkor biztosan vesztettünk, így a különben ágba mehet az X!

5. lépés: Eredmény kiértékelése #2

  1. Másold át a rádiós adat vételekor blokkból a feltételeket
  2. Állítsd át, hogy ne a saját eredményünk, hanem az ellenfeléét ellenőrizzük, hogy NEM egyenlő 0-val.

Fontos: Figyeljünk oda, hogy amíg a beérkező üzenetnél azt ellenőriztük, hogy a sajátunk NEM nulla, küldéskor azt ellenőrizzük, hogy az ellenfél eredménye NEM nulla! Vajon miért?

Megoldás

3. Függvények!

A korábbi feladatunk már nagyon szuperül tud két játékos között egy mérkőzést lejátszani, viszont a kódunkban nagy a rendetlenség. 😥

Ebben a lépésben rendet rakunk a kódban: a győztes eldöntését egy külön „kiertekeles” nevű függvénybe tesszük. Így átláthatóbb lesz a program, és ha később változtatni szeretnénk a szabályokon vagy az ikonokon, elég csak egy helyen módosítani.

Mit kell elérnünk ebben a feladatban?

A játék kiértékelését tegyük külön függvénybe, és a megfelelő helyeken csak ezt a függvényt hívjuk meg.

1. lépés: Hozz létre egy új függvényt!

  1. Nyisd le a „Haladó”, majd azon belül a Függvények menüpontot. Itt kattints a „Függvény létrehozása…” gombra.

  2. Hozz létre egy új függvényt „kiertekeles” névvel. A „Kész” gombra kattintással meg is el is készítetted!

  3. A függvény egyelőre üres, de ide fog kerülni minden, ami eddig az eldöntéséről szólt.

Ettől kezdve, ha meghívod a kiertekeles függvényt, ugyanazt a folyamatot futtatod le mindenhol!

2. lépés: Átpakolás a függvénybe

  1. Helyezdát az „amikor rázás érzékelve” blokkból és a „rádiós adat vételekor” blokkból a megyegyező sorokat a függvénybe! (Természetesen csak az egyik helyről, a másikról pedig töröljük!)
  2. Emlékezzünk vissza! Ha kapunk eredményt akkor a saját, ha küldünk eredményt akkor az ellenfél eredményét ellenőrizzük! Mivel az nem ismétlődő kód azt NE másoljuk át!  

Ezzel elérted, hogy rázáskor a micro:bit 1 és 3 között választ egy számot, és ezt elmenti az eredmeny változóba.

3. lépés: Függvény hívása

  1. Helyezd el a szerkesztőben az Függvények menüből a „hívás kiertekeles” blokkot a rázásban, ahol eddig az a kód volt ott!
  2. Helyezd el a szerkesztőben az Függvények menüből a „hívás kiertekeles” blokkot a rádiós adat fogadásában, ahol eddig az a kód volt ott!
Megoldás

4. Választás gombokkal

Ebben a lépésben már nem a micro:bit sorsol, hanem te döntöd el, hogy követ, papírt vagy ollót mutatsz. 

A választást az A és B gombokkal állítod be, a rázás pedig mostantól azt jelenti: „készen vagyok, elküldöm az ellenfélnek, amit választottam”.

Mit kell elérnünk ebben a feladatban?

  1. Vonjuk át az ikon kirajzolást is egy függvénybe
  2. Gombokkal válasszunk kő, papír és olló között
  3. Rázással „elküldjük” a választ

1. lépés: Kirajzolás is függvénybe

  1. Hozz létre a tanultak szerint egy ikon_kirajzolas nevű függvényt!

  2. Mozdítsd át a kirajzolásért felelős kódot ebbe a függvénybe!

2. lépés: Várakozik változó felvétele

  1. Vegyünk fel egy „varakozik” változót! 

  2. Állítsuk az értékét hamis-ra!

Ez a változó abban fog segíteni, hogy egyszerre csak egy eredményt küldjünk el, és egyszerűsíti a kiértékelést is!

3. lépés: Gombokkal válasszunk!

  1. Az A gomb lenyomásakor az eredmeny_sajat értékét úgy változtasd, hogy visszafelé lépkedjen

  2. A B gomb lenyomásakor pedig előrefelé lépkedjen

  3. Figyeljük meg, hogy a két blokk 4 helyen leszámítva pontosan megegyezik! Érdemes lehet duplikálni a meglévő kódot!

4. lépés: Rázásra elküldjük a választ

  1. Bővítsd ki a rázás feltételét: csak akkor történjen bármi, ha nem várakozunk éppen!

  2. A feltételen belül pedig írd bele: várakozás (arra, hogy az ellenfél mit fog mutatni) = igaz!
  3. Ne felejtsük el a kiértékeléskor visszaállítani a várakozás értékét hamisra! Hiszen miután kiderül ki nyerte a kört, már újból tudunk új értéket mutatni!
Megoldás

5. A nyertes megjelenítése

Ebben a lépésben ….

…..

Mit kell elérnünk ebben a feladatban?

A micro:bit:

…..

1. lépés: Pontszámok és név változók

….

2. lépés: Győztünk!

….

3. lépés: Ellenfél győzött

Fontos: a micro:bit megkülönbözteti, hogy milyen típusú adatot kapott a rádión keresztül. Így ha szöveget kapunk, akkor tudjuk, hogy a másik játékos győzött, ha pedig számot küld nekünk, akkor az csak a kő-, papír- vagy ollóhoz tartozó szám!

Megoldás
Scroll to Top