D o k u m e n t a c e
k zapoctovemu programu Lode
Uzivatelska cast
Temer vse podstatne je popsano v Napovede - Pravidla, jenz
obsahuji i podrobna pravidla hry a obsluhu programu, ktere je
windowsovsky intuitivni.
Navod ve zkratce: Hra je urcena pro jednoho ci dva hrace. V
prvni casti hry si zapisi oba hraci pravidly dane typy lodi do
svych hracich poli. Pokud maji hotovo zacina druha faze hry,
ostrelovani. Nyni si hraci navzajem strileji do hracich poli
(navzajem = levy hrac strili do pole, kde si pred tim zadaval
lode pravy hrac a naopak). Pokud hrac zasahne strili dal, pokud
mine strili druhy hrac. Hra konci, jakmile jeden z hracu nema
zadnou lod. Opakuji, ze podrobna pravidla lze vyvolat v programu
stiskem F1.
Zadavani - prvni cast hry - se spousti stiskem F2, ci polozkou
Nova hra v nabidce Hra. Ukoncit rozehranou hru lze kombinaci Alt
+ K (polozka Konec hry v Hra). Ulozit a nacist hru nelze, nebot
se mi to prozatim nepodarilo implementovat.
Behem hry se hlasky zobrazuji ve spodni casti okna spolu s
jmenem hrace jenz strilel a souradnicemi kam strilel.
Nabidky:
- Hra - Moznost vyvolat novou hru (Nova hra) nebo ukoncit
hru stavajici (Konec Hry)
- Hraci - Kdo bude hrat? V polozce Levy, lze zvolit z
moznosti Clovek a Pocitac (TCPIP neni implementovano,
nebot jsem nemel moznost odladovani v siti) nebo zmenit
jmeno hrace - polozka Jmeno (tohotez lze dosahnout
poklepanim na jmeno hrace pod hracim polem). Polozka
Pravy je symetricky stejna.
- Nastaveni - Volba typu hry. Polozka Dotek rohy zpusobi,
ze ve hre je povoleno, aby se lode dotykaly rohy. V
polozce Odryvat okoli lze nastavit, jak se bude behem hry
chovat okoli potopene lode. Volba Vubec znamena, ze okoli
se nebude odkryvat vubec a hrac se musi orientovat pouze
pomoci hlasek, popr. zvuku. Volba Jen oznacit zpusobi po
potopeni lode oznaceni okolnich tlacitek - policek
znackou o. POZOR tato policka jsou stale
aktivni a lze je zmacknout. Konecne volba Uplne odkryva
cele okoli lode. Polozka Zvuk zapina ozvuceni hry a je
pristupna pouze pokud jsou nalezeny zvukove soubory.
Hudba zapnout nelze, nebot jsem sice neco zplodil, ale 20
MB soubor se mi zdal prilis. Kliknutim na Uloz nastaveni
dojde k ulozeni soucasneho nastaveni do konfiguracniho
souboru, jimz se ridi hra pri startu.
- Napoveda - Polozka Pravidla vyvola okno s jiz zminenymi
podrobnymi pravidly a jemnym pruvodcem. Ukaz popisky
zapina hinty u komponent a volbou O hre Lode
lze zobrazit okno s informacemi.
Hlavni okno obsahuje:
- dve hraci pole patrici hraci, jehoz jmeno je
pod kazdym z nich
- stredni pole s informacemi o lodich - tvary lodi, jejich
celkove pocty (plasticke rozhazene pismo) a jejich
aktualni - jeste nepotopene - pocty ve hre (cerna barva
pisma)
- spodni lista s casem a prubeznymi hlaskami
- navic pri zadavani jsou zobrazeny tlacitka pro
umistovani, mazani, generovani, ukladani a nahravani lodi
Co to potrebuje:
- programovano v Delphi 3.00 Professional na Pentium
100MHz, 16MB RAM, Windows 95
- cokoli podobneho by melo stacit (teda ty Delphi jsou
potreba pouze pro zdrojaky)
- k prehravani zvuku je dobre mit zvukovou kartu a mpeg3
layer kodek, protoze jsem pro usporu mista na zvuky
pouzil ztratovou kompresi mpeg, apropo zvuky jsou z webu
a doufam, ze polozka bez autorskych prav je pravdiva
Programatorska cast
Programovano v Delphi 3.00 Professional.
Puvodni napad: Naprogramovat klasickou hru Lode jako hru pro
dva hrace na jednom pocitaci a po siti.
Konecny vysledek: Naprogramovana klasicka hra Lode jako hru
pro dva hrace na jednom pocitaci, ci jednoho hrace proti pocitaci
(popripadne takzvna demo ukazka, kdy hraje pocitac sam se sebou).
Soubory:
- lode.dpr - projekt delphi, hlavni zastresujici soubor
programu
- unitLode.pas - asi nejdulezitejsi unit programu Lode,
obsahuje okno Hlavni a temer vsechny procedury a funkce
pouzite v programu
- unitPravidla - unit s oknem zobrazujici pravidla hry
- unitAboutBox - unit s oknem zobrazujici okno s
informacemi
- unitJmeno - unit s editacnim oknem jmena hrace
- unitUvod - unit s tim modrym okynkem, co je videt
malinkou chvilinku na zacatku
- ProLode.pas - unit s konstantami a typy pro hru Lode
- lode.cfg - konfiguracni soubor (neni nutny, pripadne se
vytvori)
- ProLode.res - obrazky lodi
- *.dfm - formulare
- *.wav - zvukove soubory
Lode:
Az na mensi zasah s vytvorenim okna uvod a jeho zniceni pred
spustenim aplikace, vytvorily tento soubor Delphi samy - tudiz
nic programatorsky zajimaveho.
unitUvod:
Zajimaveho je pouze to, ze okno se vytvori jako prvni v
Lode.dpr a jeste pred spustenim apikace se znici. (odkoukano z
[1]).
ProLode:
Obsahuje definici konstant a typu pro hru.
unitAboutBox:
Formular a unita jsou zkopirovany z nabidky File/New... v
Delphach. Provedeny bezvyznamne zasahy.
unitJmeno:
Okno obsahuje editacni okenko - pri otevreni zobrazi jmeno,
jez je editovano a po uzavreni hlida platnost vstupu. Neplatnym
vstupem je prazdny retezec.
unitPravidla:
Unit s podrobnym a vycerpavajicim popisem pravidel hry a neco
malo o vecech okolo, jako jsou nabidky, zadavani lodi
lode.cfg:
Konfiguracni soubor s ulozenym nastavenim. Lze i rucne
editovat. Neni-li pritomen, automaticky se vytvori.
unitLODE:
- obsahuje definici typu, konstant, promennych a hlavne dva
objekty THrac a THlavni (Hlavni form)
- objekt THrac se stara o vizualni prubeh hry - butonky v
hracim poli, hraci pole, vyhledani nahodne a
pravdepodobne nejlepsi souradnice
- THlavni - hlavni okno hry, definice vsech tlacitek,
polozek menu apod.
- procedury a funkce pro umistovani a generovani lodi
objekt THrac:
- procedury s nazvem *butonky* obstaravaji tlacitka na
hracim poli - pruchody spojovym seznamem
- procedury PripravSe, Prirad jsou inicializacni
- procedura Premen se vola pri zmene hrace z cloveka na
pocitac a obracene
- funkce Nahodne a Napasuj vybiraji z jeste nepouzitych
policek (vynechava ty, na nichz je jiz jasne, ze lod byt
nemuze) bud nahodne policko, nebo dosud nepouzite lode se
snazi umistit na odryte casti lode a strili na
nejpravdepodobnejsi misto (i kdyz to tak docela neni)
objekt THlavni:
- procedury reagujici na tlacitka a polozky v menu vetsinou
nejsou nijak komplikovane a nereaguji nijak prekvapive
(nastavi checked na true, otevre okno, ...)
- procedura Timer1Timer reagujici na Timer v pripade, ze je
na tahu pocitac rozhoduje, zda bude strilet na policko
nahodne (jestlize nema nastrelenou zadnou lod) nebo
napasovane (vystrelil a lod jeste neni potopena)
- procedury NahrejNastaveni, UlozNastaveni otevira soubor
lode.cfg a nastavi podle nej typ a volby hry, pokud
neexistuje vytvori jej
- procedura NakresliMezipoli vytvori z obrazku v
ProLode.res, trojim psanim pres sebe a naklonenim pisma
obrazek mezi hracimi poli (podnety zase z [1])
- procedura Palim je hlavni vyhodnocovaci funkce, dotazem
do hraciho pole Game na polozku Pozice je zjisteno zda
hrac minul ( hodnota = 0) nebo zasahl (hodnota > 0),
hodnota v poli je totiz dana pozici lode v Umisteni,
kontrolou se zjisti zda lod zhorela (v tom pripade se
take odkryji potrebna pole a zapisi se do nepristupnych)
a zda hrac nevyhral.
- procedury StartHry, KonecHry, StartZadavani,
KonecZadavani odkryvaji a schovavaji tlacitka a
vyvolavaji zpravy
- procedura PrepniHrace meni aktivnihohrace mezi pravym a
levym hracem (podle toho jak uspel pri strileni)
- procedury HracVlevo, HracVpravo nastavuji hrace pri
startu aplikace - jakasi inicializace
- procedura prehrej pracuje s komponentou MediaPlayer -
prehrava zvuk
- procedura Kontrola obnovuje pocty lodi a dostupnost
tlacitek
nazarazene procedury a funkce:
- funkce JeVPoli, JeLodVPoli, JeOtocenaVPoli, LzeUmistit
pracuji s lodmi pri umistovani do hraciho pole (zadavani
lodi, generovani nahodnych lodi, vybirani souradnic ke
strelbe)
- procedury OtocLod, UmistiLod pracuji s lodmi a hracimi
poly
- procedury UkazLodVPoli, SmazLodVPoli lod do pole nakresli
nebo smaze
- procedury StartRekurze a Rekurze umisti nahodne vsechny
lode do hraciho pole, algoritmus je zalozen na rekurzi a
umistovani vzdy nejvetsi lode, jenz zbyva (viz. komentare
v programu)
Moznosti a vylepseni:
Spousta. Vylepseni algoritmu pocitace, popr. vice voleb urovni
hry. Vylepseni datovych implmentaci objektu THrac. Moznost
sitoveho spojeni. Lepsi prace se zvukem. Statisticke informace o
prubehu a vysledku hry na jejim konci. Ulozeni a nahrani hry.
Vice voleb hry. Lepsi napoveda. A mnoho, mnoho dalsich
Omezeni:
- Hru nelze ukladat (ani tedy nahravat).
- Nelze prehrat hudbu.
- Pro prehravani zvuku je potreba mpeg3 layer kodek!
- Pod Windows
Inspirace:
Tomas Holan - DELPHI v prikladech [1]
Thomas Binzinger - Naucte se programovat v Delphi
napoveda v Delphi 3.00 + Password anglicky vykladovy slovnik s
ceskymi ekvivalenty
Strucny pruvodce TCPIP
Autor:
Rene Mihula :) 1999