DarkBASICPro |
Néhányan
ismerhetik e program régebbi változatát, az volt a sima DarkBASIC. Ez a nyelv
mai viszonylatban elég lassú volt, de lehetett vele 2D-s és 3D-s játékokat is
készíteni. Azóta eltelt 3 év, és végre megkaptuk a frissítést, vagyis a
BarkBASICPro-t (nevezzük ezentúl DBPro-nak). Képességeit tekintve megéri az
ára, mely egy jobb PC-s játék árával vetekszik! Néhány hónap alatt meg lehet
tanulni profi szinten, és még néhány hónap múlva tudunk írni vele egy új
Quake3-at vagy egy StarCraft-ot! Igazából bármilyen játéktípust el lehet vele készíteni, tetristől a
WorldCraft-ig. Kissé részletesebben:
ismeri a BMP, JPG, TGA, és még sokféle képformátumot; 2 és 3 dimenziós
(maximum 1 000 000 polygon) programozást tesz lehetővé; le tudja játszani a
WAV,MID, és MP3 hangokat; megbirkózik
az AVI videókkal is. Ez a cikk a tanulás menetét fogja segíteni, követni fogjuk a DBPro
súgóját, ugyanis onnan csak kevés ember tudja megtanulni, mivel a súgóban csak
a konkrét parancsok vannak meghatározva! Mint Nos, ezt a
hibát a DBPro egy egyszerű paranccsal kiküszöböli: #INCLUDE
"külső_kód-fájl_neve.kiterjesztése" Ezzel a módszerrel beiktatott fájlt a főprogramból egy funkciónévvel
lehet meghívni. Ezt a nevet mi határozzuk meg mégpedig a következőképpen: (a
külső-fájl szerkezete) FUNCTION
funkciónév (ezzel fogjuk a későbbiekben aktiválni az alprogramot) + még
hozzáteszünk egy () részt végrehajtandó parancsok ENDFUNCTION A fentiekhez
egy példa: FUNCTION loadmedia() load image "sun.bmp",1 load bitmap "sea.jpg",2 load sound "dog.wav",1 ENDFUNCTION És ezek után
a főprogramban egy sorral meghívjuk az akár több ezer soros betöltést: loadmedia() Ezt a módszert
tehát akkor használjuk, ha a főprogramban nem akarunk eltévedni! Most pedig azok a SYNC ON SYNC RATE 0 CLS SET DISPLAY MODE 800,600,16 PRINT "Sok szerencsét a DBPro
megtanulásához!!!" FOR T=1 TO 10 PRINT "Sok szerencsét a DBPro
megtanulásához!!!" NEXT
T Ezek
viszonylag logikus parancsok, de vannak amelyek magyarázatra szorulnak: A SYNC parancs a DBPro egy jellegzetes parancsa, és a
képfrissítést szabályozza. Minden program elejére be kell tenni a SYNC ON parancsot, amellyel bekapcsoltuk a képfrissítést! De
vigyázzunk, mert ez nem egyezik meg a monitorunk tudásával! Ha alacsony a
frissítés, a játék akadozni fog! Most megadhatjuk, hogy milyen gyorsan
történjék a frissítés (nevezzük ezentúl FPS-nek: frame per second). Ez a
művelet a SYNC RATE paranccsal hajtható végre. Ha ezt
írom be, hogy: SYNC
RATE 0 Akkor a
legmagasabb FPS-t kapom, ami csak a géptől telik! De ha a 0-át átírom: SYNC
RATE 100 Akkor 100
lesz az FPS. A legmagasabb FPS érték, melyet a DBPro-n mértek, kb. 250 körül
mozgott! Most
biztosan azt gondolják, hogy ennek nem sok értelme van! Csakhogy az FPS, a
játék alakulásával, a 3D-s funkció bekapcsolásával és egyéb hardvert kívánó
műveletekkel csökken! Ez persze nem olyan vészes csökkenés, de csak játszásra
tervezett csúcsszámítógép nélkül ne menjünk mondjuk 1 000 000 polygon
fölé a 3D-ben! A következő
parancs egy rövidítés, a képernyő törlésére szolgáló CLS
(CLear Screen). Egy szintén
logikus parancs jön, ami viszont már komolyabb magyarázatot igényel: SET
DISPLAY MODE 800,600,16 Ezzel
állíthatjuk be a felbontást, és a színmélységet! Egy soron elmagyarázom: SET
DISPLAY MODE x, y, c ahol
az x a képernyő szélessége, az x képernyő
magassága, a c pedig a színmélység (8,16,32,48
bit) Most pedig
egy parancs, mely minden Basicben megtalálható: PRINT
"...." Ezt
a parancsot használjuk szövegek kiírására, a szöveg helyét a képernyőn
szabályozhatjuk, alaphelyzetben azonban a képernyő bal-felső sarkában jelenik
meg. A szöveg-pozíciót képpontra adhatjuk meg: SET
CURSOR x koordináta, y koordináta : PRINT "...." Kötelező a
két parancsot egy sorba írni, mivel a következő sorban a PRINT újra a
képernyő bal-felső részébe ír! Valami felett majdnem átsiklottunk: a Basicben
az egy sorba írt parancsok közé kettőspontot kell tenni! És most egy
izgalmasabb parancs-együttes: a ciklusok! A FOR-NEXT
ciklus felépítése: FOR változó=kezdeti_érték TO cél_érték STEP X ahol
X az a szám, amennyit hozzá akarunk
adni a változó értékéhez minden egyes cikluslefutás végén. Ez a rész csak
néha kell parancsok, melyeket annyiszor hajt végre a program, amennyi a kezdeti_érték és cél_érték
közötti különbsége! print
változó <- ekkor a ciklusban folyamatosan növekvő számot
írja ki NEXT
változó Kitöltött
példa a fentiek megértéséhez: FOR A=10 TO 20 STEP 2 print A NEXT
A Indítás után
ez az eredmény: 10 12 14 16 18 20 És
végül egy parancsot, mely a programok zárása általában: END
(erre akkor van szükség, amikor egy cikluson belül vagyunk, és onnan akarjuk
bezárni az egész programot!) |
Kőhegyi
Gergő |