Bombázó játék
Meglepő "építési" napló ez itt a LEGO építmények között, de még akkor sem idegen tőlük, ha ez egy kis video játék, hiszen a "konzol", amin fut, egy EV3 Brick, és annak programozása is modulok egymáshoz fűzésével történik, azaz folyamatábra szerű programokat kell építenünk a játék megalkotásához!
Az EV3-hoz csak egyetlen Touch szenzor csatlakozik.
Nem mellesleg a játékhoz "építettem" grafikusan egy bombázót is :-)
A játék maga egy klasszikus és igen egyszerű történet: repül egy 12 töltetet szállító bombázó a célterület felett, ahol a játékos a bpmbázótiszt és meg kell semmisítenie az ellenség épületeit a bombák megfelelő időpontban történő kioldásával. Három lehetséges végeredmény következhet be: sikerül mind az öt véletlenszerűen elhelyezkedő épületet telibe találni, vagy elfogynak a bombák és nem sikerül megsemmisíteni a megadott célobjektumokat, illetve nem fogynak el a bombák, de a repülő kénytelen üzemanyag fogyása miatt tovább repülni dolga végezetlenül, mert a bombázótiszt nem elég ügyes, hogy pontos találatai legyenek.
Elsőnek nézzük, milyen egy pontos munkát végző bombázótiszt!
Onnan indult ez a történet, hogy kipróbáltam, milyen Bluetooth kapcsolattal programozni, vezérelni az EV3 Brick-et, nagyon professzionálisan működik a rendszer ezzel a kapcsolódással is, a két eszköz párosítása után már villám gyorsan létesíthető a kapcsolat a kocka és a keretprogram indítását követően.
A keretprogram ablakának jobb alsó részén látható a Brick vezérlő modul, annak van 3 "füle" (bal oldalt a kék az aktív), amelyeket váltva láthatjuk a kapcsolódás módját, az EV3 felirat mellett az akkumulátor töltöttségét (szaggatott vonal), a csatlakoztatott eszközöket (A,B,C,D - motoro portok, 1,2,3,4 - szenzor porok), az is látszik, hogy a 3-as portra dugot Touch szenzor éppen be van nyomva, mert 1-es az állapota!
A kocka memóriáját is tudjuk a keretprogramból felügyelni, törölhetünk feleslegessé vált adatokat, képeket, programokat, hang fileokat:
Ez a játékos oldaláról rém egyszerűnek nevezhető kis program megvalósítás szempontjából már kellően összetett és szórakoztató feladat! KI kell használnunk az EV3 programozásának jó néhály kedvező adottságát, alábbi képen csak a terjedelem és a felépítés módja látszik, kihasználtam a párhuzamos szálak által biztosított lehetőségeket, mely ágak között az infoprmáció átadás változók felhasználásával történt (szám és logikai változók illetve tömbök szerepelnek a programban):
Bal oldali ágban történik a változók definiálása, a véletlenszerű épületek pozíciójának generálása, itt be kellett iktatni egy olyan programrészt, amely felügyeli, hogy az 5 véletlen számban (5 épület) ne legyen két egyező, mert rendszeresen ilyen értékeket dobott magától a generátor:
Minden érték generáláskor egy ötször lefutó ciklus kiolvassa a memória tömb értékeit és ha az aktuálisan 1-17 között generált véletlen szám egyezik a már korábban generáltakkal, akkor új véletlen generálást indít, ha nincs egyezés, akkor a tömb soron következő helyére beírja a generált értéket. Ha feltellt az 5 változósblokk, akkor jön a házak felrajzolása (még mindíg a bal oldali ágban vagyunk):
5-ször ismétlődő ciklus sorban kiolvassa a tömb értékeit, majd ezt "x" koordinátaként felhasználva 5 "házat épít" segítségükkel, melyk 5 pixel szélesek és 10 pixel magasak.
A jobb oldali ágak közül a legfelső "repteti" a repülőt, végig a kezdő sor "x" koordinátáin, majd ha eléri a képernyő jobb szélét, akkor meghatározott "magassággal" lejjebb kezdi a következő sort, a gép hatszor repül át a célterület felett, aztán vissza indul a bázisra, hogy legyen elég üzemanyga:
A második jobb oldali ág a bomba kioldását, repülését és detonálását vezérli, a harmadik program ág a találatokat figyeli:
Itt az az érdekesség, hogy az épületet az 5 pixel szélességében bárhol el lehet találni, hogy összeomoljon, ehhez egy szórás tartomány figyelést tettem a kódba. Ha a bomba az épület mellett robban, akkor látható sérülést okoz, de találatnak nem számít és nem is "omlik össze" a ház.
A győzelem figyelése a pontos találatok számának figyelésével valósult meg, amint a találatok száma változó értéke elérui az 5-öt, a program üdvkiáltás mellett egy sikert mutató kezet is felvillant a képernyőn, majd befejezi működését:
Ha Valakit érdekel ez a kis program, akkor ide kattintva letöltheti google drive-ról!
Technikai infó, hogy át lehet írni a programot egyszerűen, hogy még a Touch szenzor se kelljen hozzá, hanem pl. a BrickButton-ok közül az egyik indítsa a bombát, a "bomba" ciklus kezdő várakozásában kell csak átállítani a feltételt "Touch Sensor"-rúl "Brick Buttons"-ra:
Köszönöm, hogy elolvastad!
2017-02-09
2017 február 9, 23:00