2006.VI.21
Játszható verzió készült
Nos, elértünk egy fontos mérföldkövet: az első játszhatónak mondható változat elkészült:
- Belekerült a hatszögletű és nagyot pattanó golyók családja. Éljen az objektumorientáltság: a
Hexa
osztály kódja szinte üres, mert a legtöbb tulajdonságát aBall
osztálytól örökli. - Felülről, mint az áldás, potyognak a golyók bizonyos időközönként. Még nincsenek különböző szintek, de a mostani nehézség szerintem kb a 20. szintnek felel meg. A bejövőfélben lévő golyókat a
DarkBall
oszály valósítja meg: szépen, apránként bearaszolnak a golyók, hogy aztán boldoggá tegyék a játékost. ADarkBall
nem aBall
osztályból, hanemGameObject
-ből származik, mivel a már pattogó golyókkal nincs közös tulajdonsága (pl nem lehet kilőni). ADarkBall
élete végén legyárt egyBall
vagyHexa
objektumot. - Van keretünk és háttérképünk is! Így már egész jól néz ki a képernyő.
- Minden golyónak pontosan egy apróléka "mágikus": ha kilövöd, kapsz 2 másodpercet, amíg a golyók nem támadnak. Ez idő alatt az új
GamePause
osztály kijelzi, hogy még mennyi időd van hátra.
A sok változtatás egy csomagban letölthető: upload:upipang5/upipang.tar.bz2 ; Windowsosok forduljanak a szokásos zip file-hoz.
Kipróbáltuk. Működik!
Ulmar, Surbá és jómagam kipróbáltuk az UPiPang többszemélyes változatát.
Jó. Működik.
- Többen is játszhatnak egyszerre (nem ezért kezdtem el ezt az egészet programozni?) Egész jól néz ki, amikor 7 játékos kavar fel-alá a pályán, és telítik a levegőt szigonyokkal...
- Egyelőre 49 szint van. Ezek eltérnek sebességben, a potyogó golyók sűrűségében és összetételében.
- Pontszámok vannak. Meg életek. Ha ez utóbbi elfogy, a játék újraindul.
- Elhalálozáskor a játékos kipottyan a képernyőből. Ez egész vicces.
- Van már gamepad támogatás is.
Linuxosok örüljenek neki: upload:upipang6/upipang.tar.bz2
Windowsosoknak meg ott a zip file a szokásos helyén.
2006.VI.22
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
Mi legyen a neve a gyereknek??
Ezennel szavazást írok ki: Mi legyen a program címe? (Az UpiPang amolyan átmeneti, "working title"..)
Saját ötletem: Pang Zero
Az utolsó simítások
Néhány változtatás még búcsúzóul: Van két új speciális labda. Az egyik a Szuper Labda, ami vagy 8 másodperc időt ad (amikor zöld), vagy elpusztítja az összes labdát (amikor arany). Gonosz ikertestvére, a Halál Labda (fekete színű) elpusztíthatatlan: ha eltalálod, akkor két ugyanolyan lesz belőle! Kétféleképpen lehet tőle megszabadulni: vagy megvárod, amíg magától meghal (ha fél percig nem piszkálják, akkor ez történik vele), vagy a Szuper Labda arany változatával le lehet szedni.
Egyelőre ennyi, szombaton megyek edzőtáborba, holnap pedig már nem fogok UpiPangBlogot írni.
Mindenkinek jó Pangelést kívánok!
Linux: upload:upipang8/upipang.tar.bz2 ; Windows upload:UpiPang.zip
Apocalypse KÖZÖS
"Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better." (Samuel Beckett)