Iskolafejlesztés NRW - programozás GLOOP-tal - oktatási projektek - egyesületek
Tájolási terület (ugrócímkék)
- OOP GLOOP-tal
- Gyors indítás
- Tanítási projekt
- bevezetés
- Szekvenciális programozás
- Vezérlő struktúrák
- Saját osztályok
- Egyesületek
- Öröklés
- dokumentáció
- telepítés
- GYIK
- Kapcsolattartó
- Engedély
CMS_VALUE [3]
Míg a saját osztályokat már bevezették és egyszerű kapcsolatokkal látták el, a következő szakasz az objektumok közötti adatáramlással foglalkozik. Eddig az objektumoknak csak akkor volt hozzáférésük más objektumokhoz, ha maguk készítették őket. Ez már nem elegendő a bonyolultabb problémákhoz. Ha egy objektumnak hozzá kell férnie ahhoz, amelyet nem maga hozott létre, akkor egy megfelelő referenciát kell átadni paraméterként a konstruktorban vagy egy metódusban. Ez azt jelenti, hogy ugyanazon objektumhoz különböző helyekről lehet hozzáférni, különböző azonosítókkal. Ez megköveteli a hallgatóktól a referencia mélyebb megértését, amelyet a következő modulban kell kidolgozni.
anyagok:
- Bevezető szakasz UV IV.1 (Link)
Sorozatjelenet
Ez a modul egy klasszikus játékötlet segítségével indul. Olyan játékot kell programozni, amelyben egy kis UFO látható a képernyő alján, és a játékos a nyílbillentyűkkel balra és jobbra mozgathatja.
Az aszteroidák most felülről repülnek be, amit el kell kerülni. Ha az UFO-t eltalálja egy aszteroida, akkor a játéknak vége.
Kezdetben a játékot csak három aszteroidával szabad megvalósítani. Továbbá minden objektum az XY síkban van, vagyis kétdimenziósan modellezik.
1. ábra: Az UFO játékprojekt tervezési vázlata
Ennek a problémának az elemzése gyorsan arra az eredményre vezet, hogy egy UFO több GLO objektumból áll, amelyeket szinkron módon kell mozgatni, ha az UFO kitér. Ilyen kompozíció már ismert.
A probléma itt a részletekben rejlik, ha azt kérdezik, hogyan lehet megvalósítani az UFO és egy aszteroida ütközését. Az egyik lehetséges megközelítés az, hogy kezdetben kizárja ezt a problémát, és csak az UFO és az aszteroidák mozgásának vezérlését valósítja meg. Egy megfelelő ütközés nélküli modellezés ekkor így néz ki:
2. ábra: Egyszerű prototípus modellezése ütközés nélkül
Megfelelő programot a hallgatók maguk is kidolgozhatnak, vagy prototípusként megadva és elemezve.
Célszerű a programot úgy meghosszabbítani, hogy egy alulról a kameraképből vándorolt aszteroida új helyzetbe kerüljön a kamera érzékelési tartományának felső szélén túl, hogy ismét az UFO felé repülhessen . Ily módon az akadályok folyamatos áramát szimulálni lehet csupán három objektummal.
Az aszteroida visszaállítása kiszervezhető egy megfelelő privát módszerre.
Ezen kívül az ütközést még mindig meg kell valósítani. Minden aszteroidának hozzáféréssel kell rendelkeznie az UFO-hoz, hogy ellenőrizhesse az ütközést és szükség esetén a módszert felrobban () az UFO hívhat. Ehhez az aszteroida konstruktorában átadják az UFO-ra való hivatkozást, és ez menti el. A kiterjesztett modellezés ekkor így néz ki:
3. ábra: Egyszerű prototípus modellezése ütközéssel
A módszerek visszaállítás alapértelmezettre() és találkozott() az osztály privát módszerei kisbolygó és bent vannak Mozog() nak,-nek kisbolygó hívott. A módszer, a metódus találkozott() teszteli az UFO-val való ütközést, és visszaadja az értéket igaz, ha van ilyen. A módszer, a metódus Mozog() nak,-nek kisbolygó majd felrobban az UFO.
4. ábra: Az UFO játék két dimenzióban
Annak eldöntésére, hogy van-e ütközés, az aszteroida Pitagorasz-tétel alapján kiszámítja a közte és az UFO közötti távolságot. Ehhez meg kell találnia az UFO helyzetét a módszerek segítségével gibX () és gibY () tudakozódhat. Ha a távolság egy bizonyos küszöbérték alatt van, akkor ütközést feltételezünk.
Ezen a ponton meg kell jegyezni, hogy a típusú objektum ufó most két különböző helyről érhető el. Ezenkívül két referenciát használnak, amelyek akár azonos azonosítóval is rendelkezhetnek, mivel különböző osztályokba tartoznak.
Ha az UFO játék így fejeződik be, akkor a bővítés első lépése lehet a harmadik dimenzióra való kiterjesztés. A kamera 90 fokkal megdől, és az UFO mozgása a módszerek körül felfelé () és lefelé haladni () kiterjesztett. Az aszteroidák elhelyezkedése szintén egy dimenzióval bővül, ahogy az aszteroidák és az UFO közötti távolság kiszámítását három dimenzióra kell átalakítani.
Mivel ma már lényegesen több hely van a kitérésre, egy mező használatával meg kell növelni az aszteroidák számát. Az eredmény egy olyan szimuláció lehet, mint az 5. ábra.
5. ábra: Az UFO játék három dimenzióban
Természetesen lehetőség van a játék sebességének változásának beépítésére, több kihagyás engedélyezésére a játék vége előtt, vagy hozzá lehet adni egy lézert, amelynek segítségével az aszteroidák kidobhatók pályájukról.
elmélyülés
Az objektumok többszörös hivatkozásának elvének elmélyítése érdekében több olyan projektötlet áll rendelkezésre, amelyek hasonló modellezésen alapulnak, mint az UFO játék.
A labdafogási projekt egy alternatíva: három golyó mozog egy négyzet alakú játéktéren. Amikor elérik a mező szélét, változtasson irányt, hogy ne hagyják el a mezőt. A játékos irányít egy kis csapda dobozt a játéktéren, és ütközést okozhat a labdákkal, és így "elkapja" őket. Ha egy golyót elkapnak, eltűnik. Amikor az összes golyót elkapják, a játéknak vége.
A fogó dobozt a játékos úgy irányítja, hogy a billentyűzet segítségével meg tudja határozni a doboz új mozgási irányát. Ezután a doboz önmagában tovább halad a megfelelő irányban. Ha azzal fenyeget, hogy elhagyja a pályát, akkor automatikusan megváltoztatja az irányt is.
6. ábra: Tervezési vázlat a Kugelfangen-projekthez
A projekt modellezésének tartalmaznia kell az osztályokat Golyócsapda, Golyó, doboz és meccsmező tartalmazza. A Pens and Eger könyvtár vagy a Greenfoot kontextusában végzett modellezés általában az osztály nélkül történik meccsmező, mert játékterként értelmezik a képernyőt. Mivel a GLOOP könyvtárnak nincs képernyője, itt külön osztályt kell kialakítani. Egy lehetséges modellezés így nézhet ki:
7. ábra: A gömbfogási projekt modellezése
Az osztály objektumának létrehozásával Golyócsapda a játék elkezdődik. Ez létrehozza az összes többi objektumot, és meghívja a doboz és a három golyó metódusát egy animációs ciklusban mozog () tovább. A billentyűzet bejegyzésétől függően a módszer setMovement () hívta a dobozt. A doboz új mozgásiránya két paraméter segítségével kerül át rá, ezáltal pVX az X irányú mozgás összetevője és pVZ a Z irányú mozgás komponense. A játékot tehát az XZ síkban modellezik. Miközben mozognak, a doboz és a labda is ellenőrzi, hogy elérték-e a játékteret. Ehhez hozzáférhetnek a játéktérhez, és lekérdezhetik annak szélességét és mélységét. A golyók azt is ellenőrzik, hogy ütközés van-e a dobozzal, és esetleg inaktívvá és láthatatlanná válnak-e.
A játék akkor ér véget, amikor az összes labda inaktív.
A következő forráskód a labda mozgatásának módszerét jelenti:
Forráskódos módszer a golyók mozgatására
A kész eredmény ekkor úgy nézhet ki, mint a 8. ábrán látható.
8. ábra: Modellmegoldás a Kugelfangen projekthez
Természetesen egy mező segítségével háromnál több golyó könnyedén létrehozható. A játékszabályok is módosíthatók. Például a mező nem tudta automatikusan megváltoztatni az irányt, amikor elhagyta a játékteret, de átesett az élen, és ezzel befejezte a játékot. Pontszámláló is telepíthető. A játéknak akkor lehet vége, ha elér egy bizonyos számú pontot. Mielőtt eléri ezt a pontszámot, új golyók jelennek meg.
E két projekt mellett számos más lehetőség is rendelkezésre áll az ilyen típusú objektum-kapcsolatok gyakorlására. Például egy autó áthaladhat egy erdőn, vagy a biliárdasztal felszerelhető ketyegő golyókkal.
9. ábra: A vezetés és a biliárd, mint további szakosítási lehetőségek
- QUA-LiS NRW
- Szakképzés
- Normál biztonsági mentés
- továbbképzés
- Adat védelem
- lenyomat