





STRUN POPIS HRY LOVEE. 





Obsah :

1) Ovldanie
2) Programov rieenie
* Programov truktry
* Centrlna sluka programu
* Pull down menu
* Pri spusten programu
* Algoritmus pre pota
* Editor plch
* Ukladanie do sboru

1)	Ovldanie.
Tato hra be pod DOSom, v reime VGA (v inch som to neskal). Ovldan je plne myou, klvesnice sa je nutne dotkn len pri zadvan, pripadne menen mena hrov. Umouje .. zahra si lovee nehnevaj sa ! Riadenie hry je ve3/4mi intuitvne, v podstate ide len o makanie tlatiek.
Po spusten sa Vs program najprv opta na poet hrov. Je mon si vybra od dvoch a po iestich. V nasledovnom okne si potom mono pre kadho hra vybra farbu (to je jedin, o je NUTN vybra, lebo farba hra identifikuje), meno a rozhodn, i ho bude riadi pota, alebo hr. V prpade, e iadne meno nezadte, prirad mu program tandardn meno ('Hr', ak ho ma riadi hr a 'Stroj', ak je riaden potaom). tandardn nastavenie ovldania je Stroj. Meno hra sa zadva jednoduchm psanm, Backspace vymazva.
V nasledujcom okne si mono vybra poet figriek. Od jednej a po dev. Vybra si mono bu uknutm na prslun drhu (kadmu potu figriek prislcha osobitn drha), alebo uknutm na slo, ktor predstavuje zvolen poet figriek.
Ovldanie vlastnej hry je hraka. Vpravo hore je ve3/4k erven tlatko 'HOD', ktor imituje hdzanie kockou. V okne nad nim sa zobrazuje padnut slo. V prpade, e hr nem monos potiahnu, nasleduje tak alieho hra. Vpravo dole sa zobrazuje meno hra (v jeho farbe), ktor je na ahu. V prpade, e je mon aha, program ak, km hr neukne na figrku, s ktorou chce potiahnu. Ak ma monos aha iba s jednou figrkou, pota potiahne zaho. 
V priebehu hry je mon kedyko3/4vek zmeni mena hrov, pripadne spsob ich ovldania. Sta zvoli z menu Editova-Hrov. Okno na editciu hrov je nato3/4ko preh3/4adn, e sa nm nebudem zaobera. Menu sa vyvol jednoducho tm, e sa myou zjde na horn okraj obrazovky.
Ostatne funkcie u bohuia3/4 spsobia optovn spustenie hry. Toto sa tka jednak zmeny potu hrov (ak ho zvme, program si dodatone vypta informcie o pribudnutch hroch) a figriek a jednak editcie plochy.
Editor plch je vlastne program v programe, jeho vvoj mi trval rovnako dlho ako napsanie zbytku programu. V programe je toti pre kad poet hrov a kad poet figriek definovan osobitn drha. To je 36 drh ! Kad z nich je mon 3/4ubovo3/4nm spsobom upravova.
Vpravo hore s tyri tlatka, stlanm ktorch urujeme, o prve editujeme. Editova je mon drhu, kryty, tartovacie polka a domky. Vo veobecnosti prav tlatko myi vymazva a 3/4av kresli. U krytov a tartov je navye ete treba ukn na domek, ktorho kryty, respektve tart ideme upravova (aby program po nakreslen napr. tartu vedel, komu patr). U tartov a najm krytov Vm program neumon nakresli viac polok, ako je pvodn poet, take je treba najprv vymazva a a potom kresli. Polohu domkov menme jednoducho metdou drag-and-drop.
Ke sme s vsledkom spokojn, stlame Koniec. Program sa poksi zrekontruova drhu, ie uri poradie polok. Tu je treba podotkn, e susedne polka MUSIA lea ved3/4a seba a dotka sa aspo rohom. V prpade, e program naraz na viacero monch pokraovan, vyhod vpravo dialgov okno, kde sa ns pta, i zvolen smer je dobr, zl, alebo i treba zaa odznova. Po spenom skonen rekontrukcie (teda iba ak sa mu podarilo zoradi vetky polka) sa ns spta, i zvolen drhu potvrdme. Po potvrden ju zape na disk a spusti hru u na novej drhe.
2)	Programov rieenie - strun popis.
* Programov truktry :
V programe pouvam nieko3/4ko zkladnch truktr, ktor predstavuj pozadie toho, o sa objavuje na obrazovke. Tie hlavn tu uvdzam.
type napole=^pole;
     pole= record
           dalej:napole;				- nasledujce polko
           kde:array[1..2] of integer;			- sradnice polka
           end;
    start= record
           nastarte:pole;				- vlastn polko
           prec:napole;				- smernk do krytu
           end;

     dom= record
          kdedom:array[1..2] of integer;			- sradnice domu
          kolko:0..9;					- poet figriek v dome
          nastart:^start;					- smernk na tartovacie polko
          kdehraci:array[1..10] of record 			- informcie o hroch
                                  kdehrac:napole;			- smernk na pole, kde je hr
                                     uz:boolean;			- plat, ak hr stoj na tarte a m 
                                  end;				  za sebou u cel okruh 
          farba,vdome:byte;				- farba hra a poet u ukrytch figriek
          meno:string;					- meno hra
          comp:boolean;					- plat, ak hra ovlda pota
          end;

Hracia plocha ako tak je len grafick objekt na obrazovke. Zkladnm objektom v mojom programe je pole, reprezentujce jedno polko na hracej ploche, ktor m rozmery 20x20 hracch polok. Polko obsahuje informcie o tom, kde sa na ploche nachdza a ktor polko nasleduje po om. Zoznam polok predstavuje hraciu drhu.
pecilne polka s tartovacie polka, ktor musia okrem vlastnost benho polka ete umoova prechod do krytu po obden celej drhy. tartovacie polko je reprezentovan truktrou start.
Kompletn informcia o hrovi sa skrva v truktre dom. Tto obsahuje informciu o mene, farbe, spsobe ovldania hra, o pote figrie, ktor ete nevytartovali, i o pote u ukrtch figriek, smernk na tartovacie polko hra i na vetky jeho figrky. Akko3/4vek opercie s figrkami sa vykonvaj cez tto truktru. Napriek tomu vak tento program nie je psan objektovo, pretoe v asoch, ke som psal jadro tohto programu, mi bolo objektov programovanie cudzie.
Okrem tchto truktr sa v programe nachdza ete nieko3/4ko dleitch globlnych premennch : 
* pocet	- poet hrov
* fig		- poet figriek
* kocka	- slo, naposledy hoden na kocke	
* natahu	- slo hra, ktor je na ahu.
* cesta	- ukazovate3/4 na hraciu drhu.
* doma	- array[1..6] of dom 
* Centrlna sluka programu.
Zkladn funkcia programu je hdza kockou a aha figrkami. Program sa na zaiatku pozrie, kto je na ahu. Potom si zist, i m danho hra na starosti on, alebo uvate3/4. Ak hra ovlda stroj, hde kockou, inak ak na stlaenie tlatka HOD. Kockou hde procedra hod. Po hoden kockou si zist, ko3/4ko hrovch figriek me v danej situcii aha (procedra mozetahat) a ak nem hra na starosti, nech uvate3/4a, aby rozhodol, ktorou figrkou potiahne. Vlastn ah vykonvaj procedry pohni (respektve zacni, ak m do hry vkroi nov figrka). Algoritmus, ktorm vyber ah pota, popem neskr.
Po ahu aktualizuje program informcie o hroch a op ak na hodenie kockou.
* Pull down menu.
Ke uvate3/4 pohne myou na horn okraj obrazovky, objav sa menu. Toto menu spracva procedra menu. Je reprezentovan dvoma pointrami. V pointri pt1 je uloen horn lita menu a do pt2 sa ukladaj jednotliv ponuky. Menu je citliv priamo na polohu myi, na jeho zobrazeni, i zmiznutie nie je potrebn ni stla.
Pomocou menu je mon ukoni program (klvesov skratka Esc), zmeni poet hrov (klvesy F2 a F6), poet figriek (klvesy 1 .. 9) a editova tak informcie o hroch ako aj samotn hraciu plochu. Poloka Figrky - Vyber dokonca op vyvol vberov okno, v ktorom sme si na zaiatku vyberali drhu.
* Pri spusten programu
Po spusten programu sa vykonva ako prv procedra hraci, ktor vyzska poet hrov a zape ho do premennej pocet. Potom sa spust procedra farby, ktor v dialgovom okne postupne hroch zisuje informcie o hroch a uklad ich do premennej doma. Ak posledn sa potom spust procedra vyber, ktor vyzska poet figriek a tm aj informciu o tom, ktor drha sa m na obrazovku nata. Po natan drhy sa spust hlavn sluka programu. Ako prv je na ahu hr slo jedna.
* Algoritmus pre pota
Algoritmus pre pota je nanajv jednoduch. Pota posudzuje jednotliv mon ahy a prirauje im "hodnotu", alebo ak chcete "vhodnos" pod3/4a presne urench priort. Priority s uveden v porad od najhodnotnejej k najmenej hodnotnej.
* utiec do krytu				- 	16 bodov
* vyhodi sperovho hra			- 	8 bodov
* preskoi tartovacie polko spera	-  	-1 bod
* preskoi sperovho hra		-	-2 body
* stpi na sperov tart			-	-4 body.
Pota potom potiahne figrkou, ktorej bodov ohodnotenie bolo najvyie. V prpade, e dve figrky maj rovnak bodov ohodnotenie, potiahne pota figrkou s nim poradovm slom.
* Editor plch
Editor plch je projekt v projekte. Reprezentuje ho procedra edit, ktor by pokojne mohla by prekoprovan do samostatnho programu, akurt vyuva globlne premenn pocet a fig.
V prvej fze sa spust procedra nacitaj, ktor zo sboru data.cns nata prslun drhu. Potom sa u spust hlavn sluka programu, ktor sa sklad zo tyroch podsluiek, pod3/4a toho, ak innos uvate3/4 prve vyvja. Rozoznvanie objektov na obrazovke je isto grafick. Jedine polohu krytov a tartovacch polok si v tomto prpade musm pamta(pouvam na to truktry u:array[1..6,1..9] of pole na kryty a s:array[1..6] of pole na tartovacie polka), pretoe pri nakreslen novho by som implicitne nevedel uri, ktormu hrovi patr. Preto je pri upravovan krytov a tartovacch polok nutn vopred ukn na prslun domek, aby bola prslunos novovytvorench objektov jednoznane uren.
Po stlaen tlatka Koniec sa spust rekurzvna procedra, ktor sa poksi zrekontruova drhu. To je dos nron loha, pretoe pre program je na obrazovke len sple farebnch krkov, o ktorch nem iadnu in informciu. Preto som monosti drhy obmedzil tm, e susedn polka musia lea ved3/4a seba (musia ma spolon aspo jeden roh). Rekurzvna procedra pridaj zarad ako prv polko do drhy tartovacie polko hra s poradovm slom 1. V nultom kroku prebehne po vetkch monch pozcich a spota vetky krky, ktor prislchaj drhe - to znamen ierne a erven. Toto slo si uchov v premennej poc. V i-tom kroku sa potom "poobzer" po susednch polkach, i sa tam nenachdza al ierny krok. Ak sa tam nenachdza, skontroluje, i u zoradila vetky polka (poet u zoradench polok si uchovva v premennej zatial). Ak s u vetky polka zoraden, vytvor dialgov okno, v ktorom uvate3/4a poiada o potvrdenie vytvorenej drhy. Ak nie, stala sa niekde chyba a treba ju opravi. Procedra vybehne z rekurzie a ponech prpadn pravy na uvate3/4a.
Ak procedra v okol njde prve jeden krok, pokrauje danm smerom bez zavhania. V prpade, e sa v susedstve nachdza viac ako jeden kandidt na nasledujce polko, oznauje kandidtov postupne ervenm krkom a v dialgovom okne si od uvate3/4a vyiada potvrdenie, i zamietnutie toho - ktorho polka. Potom sa rekurzia vyberie zvolenm smerom.
Slaenie tlatka Zrui vrti uvate3/4a do hry bezo zmien, avak hra zana odznovu. Musm prizna, e na tomto mieste som si lohu trochu z3/4ahil, ale uprednostoval som jednoduchos, preh3/4adnos a najm bezpenos programu pred komplikovanosou a preto si postavenie figrok po zapnut editora plochy nepamtm.
* Ukladanie do sboru
Hoci sa to nezd, data.cns je textov sbor (dvod treba op h3/4ada v tom, e jadro programu som psal ete na strednej kole, ke bola prca s textovm sborom vrcholom mjho programtorskho umenia). Jednotliv drhy s v om zapsan vo forme sradnc, priom kadej drhe prislchaj dva riadky.
Na zaiatku kadho dvojriadkovho bloku s tyri dvojice sel z intervalu 1..20. To s sradnice domu. Pod3/4a toho, ko3/4ko hrov dan plocha m, sa tento blok opakuje nieko3/4ko krt. Potom nasleduje 0. V druhom bloku nasleduje dvojslie sradnc tartovacieho polka - op v pote hrov danej drhy. Z nimi je op nula a koniec riadku.
Druh riadok zana postupnmi sradnicami krytov prvho, druhho hra, a tak alej. Po nevyhnutnej nule napokon nasleduj sradnice samotnej drhy, ktorch poet je v sbore teoreticky neobmedzen, ale vzh3/4adom na plochu 20x20 polok predsa len rozumn. Posledn polko je rovnak ako prv, jeho sradnice s teda v sbore zaznamenan dvakrt.

To je myslm vetko, elm Vm prjemn zbavu !

										Ondro Vransk
