Page 5 - Enterpress Magazin - 2020. 3-6.
P. 5

2020. május – december                                                                           5. oldal




           Játékfejlesztésem története I.






                     Az Emberkétől a Hungry Creature-ig









                    Írta: Bodnár Tamás
                    (Szipucsu)






        A 80-as évek vége felé írtam első „játékprogramomat”,  küzdelmek árán így sikerült elérnem valamikor 1995
        amely az Emberke volt. A program négyszög alakú ka-   őszén, ha jól emlékszem:
        raktereket véletlenszerűen szétszórt a képernyőn, az
        emberke alakú karaktert pedig a belső botkormánnyal   3750 LET UT,FEL,LE,JO,BA=0
        lehetett mozgatni. Egy percünk volt, hogy minél több   3760 IF KEP$(SZO1(A)-1,SZO2(A))=” „ THEN LET
        négyszöget összeszedjünk. A program még a négy-            UT=UT+1:LET FEL=1
        szöggel való ütközést sem érzékelte, és ha kimentünk   3770 IF KEP$(SZO1(A)+1,SZO2(A))=” „ THEN LET
        a játéktérből, hibaüzenettel leállt. De azért így is jól el
        lehetett szórakozni vele. Egy picit mindig szépítettem        UT=UT+4:LET LE=1
        rajta, így idővel lett Emberke 10 is. Később nagyon meg-  3780 IF KEP$(SZO1(A),SZO2(A)-1)=” „ THEN LET
        örültem, hogy a Hetedhéten túl című Enterprise-os          UT=UT+8:LET BA=1
        könyvben a Hamikában volt ütközésérzékelés, így on-   3790 IF KEP$(SZO1(A),SZO2(A)+1)=” „ THEN LET
        nan el tudtam lopni a GET #102:A$ elvét, ami lekérdezi        UT=UT+2:LET JO=1
        a kurzor pozíciójában lévő karaktert. Így már számolta   3800 IF UT=5 OR UT=10 THEN GOTO 3970
        az összegyűjtött négyszögeket, és a játéktér körül keret-  3810 IF FEL+LE+JO+BA=0 THEN LET
        karakterek (ez a szó visszafele olvasva is ugyanúgy van!)        I1(A),I2(A)=0:GOTO 3970
        is voltak, a játéktéren belül pedig falak.            3820 IF FEL+LE+JO+BA=1 THEN LET
                                                                   I1(A)=I1(A)*(-1):LET I2(A)=I2(A)*(-1):GOTO 3970
        Hála a Zzzip-nek, rájöttem, hogy ebből még többet is   3830 SELECT CASE RND(4)
        ki lehet hozni, így megjelentek a pályán a szörnyek is.   3840 CASE 0
        Innen egy kicsit komolyabbra fordult a programozás. A
        játék pályáit DATA sorokban tároltam. Hogy gyorsabb   3850  IF FEL=1 THEN LET I1(A)=-1:LET I2(A)=0:GOTO 3960
        legyen, azt találtam ki, hogy a pálya kirajzolása után a   3860   LET I1(A)=1:LET I2(A)=0
        program a képernyő tartalmát, az összes karaktert a   3870 CASE 1
        képernyőről végignézi, és beolvassa egy tömbbe (a     3880  IF LE=1 THEN LET I1(A)=1:LET I2(A)=0:GOTO 3960
        KEP$(X,Y) tömbbe), így a pálya falai abban a tömbben   3890   LET I1(A)=-1:LET I2(A)=0
        voltak benne. A szörnyek így nem a képernyőről olvas-  3900 CASE 2
        ták ki, hogy hol van fal és merre lehet menni, hanem a   3910  IF JO=1 THEN LET I1(A)=0:LET I2(A)=1:GOTO 3960
        tömbből, ez gyorsabb volt. Így csak azt kellett a képer-  3920   LET I1(A)=0:LET I2(A)=-1
        nyőről kiolvasni, hogy az emberkénk hova lép, szóközre,   3930 CASE 3
        bogyóra, netalán a szörny karakterére.                3940  IF BA=1 THEN LET I1(A)=0:LET I2(A)=-1:GOTO 3960
                                                              3950   LET I1(A)=0:LET I2(A)=1
        Addig még csak-csak elvoltam a PRINT #102,AT utasí-   3960 END SELECT
        tással, a GET #102:A$-gel, a JOY és az RND függvény-
        nyel, viszont a szörnyek mozgása kicsit más volt. A   3970 RETURN
        pacman játékokban megfigyelhetjük, hogy a szörnyek
        általában egy adott irányba mozognak, amíg kereszte-  Addig módosítgattam ezt az eljárást, amíg úgy nem
        ződéshez nem érnek, és ott újra felvesznek valamilyen  működött, ahogy elképzeltem, utána meg már nem
        irányt. Ezt próbáltam én is megvalósítani valahogy. Négy  foglalkoztam vele, csak örültem, hogy működik.
        szörny volt a pályán, mindegyiknél figyelni kellett, hogy  Pedig ez eléggé szedett-vedett, és lehetne rajta szépí-
        kereszteződéshez vagy zsákutcához érnek-e, és akkor  teni. A 3760-3790-es sorokban megnézi a program,
        új irányt kellett nekik meghatározni. Ezt először, kisebb  hogy az adott szörny alatt, fölött, tőle jobbra és balra
   1   2   3   4   5   6   7   8   9   10