IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Nightwalker

Informace | Screenshoty | Bytosti | Nedostatky | Stáhnout

Tuto hru jsem napsal jako rocnikovou praci v Pascalu a nize si muzete stahnout i jeji kompletni zdrojovy kod. Jedna se o klasickou platformovou hru podobnou napriklad supermariu. Obsahuje strileni, nepratele, leveleditor, hudbu na pozadi (XMIDI ), pruchod mezi lokacemi a konecne doublebuffering.

 

Popis a vyznam zakladnich jednotek ( unit ) :


Keypres2 - zajistuje praci s klavesnici
Narozdil od jednotky CRT dokaze vnimat nekolik stisknutych klaves najednou, bez pouziti bufferu. S funkci readkey by byla tato hra v podstate nehratelna.

VGA256 - VGA grafika
Je to unita z baliku SVGA4 pro praci v grafickem rezimu 320x200x256 barev. Je temer KOMPLETNE CELA v asembleru, takze o rychlosti neni pochyb. Podporuje nejruznejsi funkce, ktere prosto prevalcuji pomalou vestavenou BGI grafiku.

SVGA - SVGA grafika
Podobna jednotka jako VGA256, ale umoznuje praci ve vyssich rozlisenich v rezimu SVGA.

Midpak - prehrava na pozadi XMI soubory
Soucast baliku Plus System Pro od ruskeho nadsence Vadima Bodrova. Unita umoznuje prehravani XMI souboru na pozadi na SoundBlasteru, Adlibu a spouste dalsich zvukovych zarizenich ( dokonce i Covox ).

 

Popis a vyznam dalsich jednotek (unit) :


Dialogs - Prace s dialogy
Tuto jednotku jsem napsal, abych mohl snaze udelat roomeditor. Umoznuje vykreslovat nejruznejsi dialogy a okna.

Engine - zakladni inicializace
Unita pro zkontrolovani systemu, jestli je kompatibilni se zvukovym nastavenim a zapnuti Handleru jednotky KeyPress2.

Files - prace se soubory
Umi zjistit, jestli existuje soubor a ma par funkci na cteni dat ze souboru ROM.

Mouse - prace s mysi v roomeditoru
Zajistuje praci s mysi v rezimu SVGA.

VgaMouse - prace s mysi ve hre
Zajistuje praci s mysi v rezimu VGA ( mod 13h ).

Tinyfont - Tenky font
Jelikoz v modu 13h je vse velike, napsal jsem si tuto jednotku, abych mohl psat mensim pismem...

 

Format rom souboru


Soubory *.rom v adresari Backs jsou jednotlive mistnosti ve hre a obsahuji udaje o pozadi, pocasi, terenu, vlozenych objektech a prilehlych mistnostech. Napsal jsem pro jejich vytvareni a upravovani sice editor ( roomedit ), ale ten neumi vse a tak sem radsi prikladam kompletni popis techto souboru. Jako prvni jsou udaje o terenu. Teren je vlastne dvourozmerne pole o velikosti 25 x 19 ( nightwalker vyuziva pouze 16 x 10 ), kde jsou zapsany jednotlive kosticky ( tiles ), ze kterych je potom mistnost ( room ) slozena. Toto pole je tedy zapsano v prvnich 19-ti radcich. Kazda polozka pole ("kosticka") ma 4 znaky. Prvni 3 znaky jsou jmeno obrazku bez pripony ve slozce tiles ( napr. 001 ), pokud je jmeno 000, polozka je prazdna. Posledni 4. znak urcuje charakter "kosticky" :
0 - pozadi ( je za hrdinou a da se pres ni chodit a propadnout )
1 - zed ( neda se pres ni jit, propadnout ani vyskocit na ni, kdyz hrdina stoji pod ni )
Na 20. radku je ulozena UPLNA ( zase ne absolutni ;-) ) cesta k souboru s pozadim ( musi to byt PCX 320x200x256 barev ). V nasledujicich ctyrech radcich jsou ulozeny nazvy prilehlych mistnosti. Pokud tam mistnost neni, radka je prazdna ( bez mezer !! ) :
21. radek - mistnost nahore
22. radek - mistnost dole
23. radek - mistnost vlevo
24. radek - mistnost pravo
Na dalsich 10-ti radcich jsou ulozeny informace o "objektech", ktere jsou v mistnosti. Jejich maximalni pocet je tedy 10. Objekt je vlastne slozka ve slozce objects, ktera obsahuje tyto soubory :
lxx.pcx - leve faze objektu ( pokud ma objekt 2 faze pohybu, budou to soubory l00.pcx a l01.pcx )
rxx.pcx - prave faze objektu ( pokud ma objekt 2 faze pohybu, budou to soubory r00.pcx a r01.pcx )
l99.pcx - leva zmrzla faze objektu ( zoobrazi se, kdyz ma objekt inteligenci vetsi nez 0 a kdyz je hrdinou zmrazen )
r99.pcx - prava zmrzla faze objektu ( zoobrazi se, kdyz ma objekt inteligenci vetsi nez 0 a kdyz je hrdinou zmrazen )
Kazdy objekt ma 9 parametru, ktere jsou oddeleny carkami ( carka musi byt i za poslednim parametrem !!! ), a vse je malymi pismeny. Prvni parametr je jmeno objektu. Pokud objekt neni vyuzit, je jeho jmeno "none". Potom nasleduji souradnice x a y. Ted to nejdulezitejsi - inteligence. No ja to nazyvam inteligence, ale ono je to vlastne jen, jak se ma dany objekt pohybovat. Hodnoty :
0 - objekt se nepohybuje ( je pouzit jen obrazek s nazvem l00.pcx )
1 - objekt se pohybuje doleva a doprava ( jsou pouzity obrazky lxx.pcx a rxx.pcx )
2 - objekt se pohybuje nahoru a dolu ( jsou pouzity obrazky lxx.pcx - nahoru a rxx.pcx - dolu )

Dalsim atributem je rychlost ( speed ), je to o kolik pixelu se ma objekt posunout kazdy krok ( step - je dano speed of step ). Pak nasleduje imagespeed, to je, za kolik kroku se ma prepnout na dalsi fazi ( jak rychle se stridaji jednotlive obrazky, kdyz se objekt pohybuje ). Dalsi atribut je pocet fazi ( maxphase ). Kdyz ma objekt soubory l00.pcx a l01.pcx, maxphase musi byt 2. Nasledujici dva atributy jsem nazval xy1 a xy2. Kdyz bude inteligence objektu 1 , xy1 100 a xy2 200, bude se objekt pohybovat doleva, nez dosahne souradnice 100, potom se otoci a jde k druhe hranici 200. To se stale opakuje. Na poslednim radku je udaj o pocasi. Pokud ma prset, je tam "rain", jinak tam muze byt cokoli. K verzi 0.5 je to vse. Pro ukazku prikladam strukturu souboru 01.rom.

01.rom ( 2.mistnost s demonem )
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000002100210021002100210021000000000000000000000000000000000000
0000000000000000000000000000000000210021001000100010001000110011000000000000000000000000000000000000
0000000000000000000000000021002100100010001000100010001000110011000000000000000000000000000000000000
0021002100210021002100210010001000100010001000100010001000110011000000000000000000000000000000000000
0011001100110010001000100010001000100010001000100010001000110011000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Backs\moon.pcx


00
10
daemon,243,64,1,2,2,2,207,273,
tree02,154,39,0,0,0,1,20231,2188,
tree02,122,58,0,0,0,1,20231,2188,
none,0,0,0,0,0,0,0,0,
none,0,0,0,0,0,0,0,0,
none,0,0,0,0,0,0,0,0,
none,0,0,0,0,0,0,0,0,
none,0,0,0,0,0,0,0,0,
none,0,0,0,0,0,0,0,0,
none,0,0,0,0,0,0,0,0,
rain

 

Temné bytosti



 

 

 

 
Unknown daemon Fishbone Darkangel Firemaster

 


 

 

 
Ghost Hellworm just Lord

 

<

Chyby a nedostatky


Hra ma nekolik nedostatku. Hlavnim je kolisani rychlosti. Jelikoz jsem nestihl pouzit jednotku pro obsluhovani preruseni, pouzivam proceduru delay z vestavene jednotky CRT. Ta ma ale obcas jine intervaly nez ma mit. Pokud tedy hra po spusteni pobezi moc rychle, je treba ji ukoncit a spustit znovu.

Nedostatky co se tyce hry jsou, ze neplati gravitace ( postava skace po uhloprickach ) a pada a skace konstantni rychlosti. Ve vode neplati gravitace, takze voda se chova jako vzduch. Nestihl jsem predelat postavicku, takze je trochu kostickovana. Hra si nepamatuje nejakym externim souborem, kam by se zapisovaly ). Roomedit neni sobestacny, to znamena, ze paky, klice, dvere a napoje se musi naprogramovat ve zdrojaku hry. Slo by to napravit nejakym editorem objektu, ale myslim, ze to dnes, v dobe existence vyvojovych nastroju jako je Gamemaker nebo o neco slozitejsi Delphi nema smysl.

 

Skicy


Skica Lorda

Skica Firemaster

 



Galerie


 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 1157x (1.34 MB)
Aplikace je včetně zdrojových kódů v jazyce Pascal

 

Všechny články v sekci
Pascal
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
Ještě nikdo nehodnotil, buď první!
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity