WebProg-2014/Gyakorlat4

A MathWikiből
A lap korábbi változatát látod, amilyen Kkovacs (vitalap | szerkesztései) 2015. március 4., 10:54-kor történt szerkesztése után volt.

Mindenek elõtt

Hozzatok létre egy új projectet Asteroids2 néven. Hozzatok benne létre egy asteroids package-et. Majd töltsétek le innen a hiányos java file-okat. (Ezek az elõzõ gyakorlat megoldásait tartalmazzák, plusz még egy-két módosítást, így mindenkinek le kell töltenie.)


Pontszámok

Az AsteroidsGame osztálynak van egy statusbar nevû változója, az initUI-ban van inicializálva (azaz itt jön létre egy objektum amit tárol). Láthatjátok, hogy egy 0-t tartalmazó Stringet kap, és ha elindítjátok a játékot azt is láthatjátok, hogy ezáltal a bal alsó sarokban egy 0 van a játékban. Ez lesz a pontszám, de még nem mûködik.

Most nézzünk bele a MainLoop asteroidBulletCollision metódusába. Ez fut le akkor, ha ütközik egy lövedék egy aszteroidával. Láthatjátok, hogy megkapja az aszteroidát ami ütközik és a lövedéket. Az aszteroidának meghívja a destroy metódusát majd a for ciklusban az újonnan létrejött aszteroidákat berakja az asteroidContainer-be (emlékezzetek vissza a destroy visszaadott egy tömböt az újonnan készítendõ aszteroidákról). A destroy hívása után kellene növelnünk a számlálót eggyel, egy aszteroida egy pontot ér.

  • Hozzunk létre egy privát adattagot a MainLoop-nak, amiben tároljuk a pontokat (egész szám), én score-nak fogom nevezni.
  • A következõ függvényhívás átállítja a statusbar értékét a megadottra:
statusbar.setText(String.valueOf( ide kell az érték ));
  • Viszont van egy kis gond, hisz a statusbar az AsteroidsGame adattagja volt, azt itt nem érjük el. Hát csináljunk ide is egy referenciát hozzá:
    • Menjünk vissza az AsteroidsGame osztályba és hozzunk létre egy publikus függvényt getStatusbar névvel, ami visszaadja a statusbar adattagot. A visszatérési értékét ebbõl már tudnotok kell, hogy mi.
    • Térjünk vissza a MainLoop-ra, itt hozzunk létre egy megfelelõ típusú privát adattagot, amiben tároljuk a statusbar-t. Majd ezt vagy a konstruktorban vagy az initBoard-ban állítsuk be a következõ módon:
statusbar = parent.getStatusbar();
    • A parent, ha megnézitek az AsteroidsGame objektum, szóval elkérjük a statusbar-ját és így már mi is "tároljuk".
  • Most, hogy már van statusbar itt is mûködni fog a korábbi setText-es kód, szóval próbáljátok ki.
  • Ha még mindig 0-t mutat, ne felejtsétek el, hogy a score változót növelni kellene amikor egy aszteroida elpusztul, szóval tegyétek meg a növelést a destroy után.


Ûrhajó pusztulása

Személyes eszközök