UpiPang Blog
Menü is kell
A tegnap esti partin a gombokat meg játékosok számát úgy állítottuk be, hogy szépen beírtam a program kódjába, amit kellett. Ez így házon belül a tökéletes megoldás, de azért 100%-osnak nem nevezném.
Úgyhogy fogtam magam, és faragtam hozzá egy menüt, ahol mindezeket be lehet állítani. Azt akartam, hogy a menü minél minimálabb legyen méretben és infrastruktúrában egyaránt. Úgyhogy először elkezdtem írni függetlenül a program többi részétől, hogy izolált legyen, de aztán rájöttem: '''ha már úgyis itt van a GameObject
-es infrastruktúra, akkor akár használhatnám a menühöz is. Utána pedig rögtön rájöttem, hogy akkor semmiből nem áll megcsinálni, hogy a menüben legyenek pattogó labdák a háttérben, úgyhogy lettek.
A MenuItem
egy olyan GameObject
, ami egy szöveget ír ki, és ahhoz is méretezi magát. Mindig egy ilyen objektum van kiválasztva, az még egy kék hátteret is rajzol magának (ez a legkönnyebb megoldás).
Egy probléma volt: a golyók folyton belógtak a szövegek elé. Hiába raktam elején a szöveget a @GameObjects
tömb tetejére (azok rajzolódnak "legfelülre"), a golyók mindig beelőzték őket idővel. A következő egy sort tanulságképpen megosztom, hogy néha mennyire egyszerű megoldás van ilyesmikre:
while (ref($GameObjects[$#GameObjects]) ne 'MenuItem') { unshift @GameObjects, (pop @GameObjects); }
Ez emberi nyelven annyit tesz: ha a legutolsó eleme a @GameObjects
tömbnek nem MenuItem
típusú, akkor tedd át a tömb elejére.
A menün és kívül a további változások:
- Beépítettem a játékba Sadam zenéjét, nagyon jól illik hozzá. Kösz Ádám!
- Némi takarítgatást végeztem a kódon.
- A labdák sűrűbben jönnek, ha több a játékos.
- "P" gombbal meg lehet állítani a játékot.
Rövid pislantás a TODO listámra:
- Super Ball (kills everything or pauses for 8 seconds)
- Gray Ball of Death (cannot be killed except with Super Ball)
- Color the border during death sequence
- Music, sound effects
- More levels, game balance for multiple players
- Extra life at 200.000 points
- Message while paused
- Smaller playfield height
A legújabb változat megtekinthető itt: linuxosoknak upload:upipang7/upipang.tar.bz2 ; windowsosoknak upload:UpiPang.zip
SAdam 2006.VI.24 13:11
Szia! Kösz, hogy benyomtad a zenét, majd még igyexem többet is csinálni (most már van menünk is stb.) Annyi, hogy sztem egy rövid (pl. 1 sec) delay-t be lehetne tenni, mielőtt a zene újraindul.