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 minden nyelvnél, most is kezdjük az alapoknál: szöveg írása a képre, ciklusok, plusz néhány jellegzetesen DBPro-s parancs, mely más Basicben ritkán, vagy soha nem fordul elő. Játékírás közben, a BUG-októl eltekintve, a nagy probléma az szokott lenni, hogy erősen megnő a program mérete, és nem tudunk rajta eligazodni!

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 parancsok következnek, amelyek minden BASIC nyelvben megtalálhatók, készítsük el első nagyobb programunkat:

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ő