| | |
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Autor | Správa |
---|
Registrovaný: 07.10.08 Prihlásený: 07.10.08 Príspevky: 2 Témy: 1 | Napísal vcrabz: 07.10.2008 16:11 | |
|
Nevim jak v tomhle zprovoznit mys pise mi to chybu,
Identifier not found "cursorenable" Identifier not found "cursorsdisable" Identifier not found "ctistav"
Prosim o pomoc predem dekuji za odpoved.
Kód: {Reversi} Program Reversi;
Uses Crt, Mouse, Graph; {Barvy pouzivane ve hre} {vychozi nastaveni je v komentari} Const BPozadi = 0; {0} BPlochy = 6; {6} BCary = 7; {7} BHrace1 = 15; {15} BObrys1 = 7; {7} BHrace2 = 0; {0} BObrys2 = 7; {7} prodleva = 400; {400; casova prodleva pred tahem pocitace} {(aby hrac stihnul zaregistrovat ucinky sveho tahu)} Type TRadPole = 0..9; THerniPlocha = array [TRadPole, TRadPole] of byte; Var i, j, k, l: integer; {indexy pouzivane v cyklech} GDriver, GMode: integer; {promenne pouzite pro spusteni grafickeho rezimu} sx, sy, tlacitka, sourx, soury: word; {souradnice a tlacitka mysi} {jine souradnice (v grafickem rezimu, souradnice v hernim poli)} NewGameOn, PlayerOn, ExitOn: boolean; {stav tlacitek 'New game', 'Player' a} {'Exit' (on/off) pri najeti mysi nad tlacitko se zvyraznuje napis tlacitka} Finish, HracC, HZmenen: boolean; {stav hry (informace, zda nastal konec hry)} {hrac na tahu - pokud HracC=TRUE, hraje pocitac (standardne s cernymi kameny)} {zmena hrace - tj. hrac hraje s kameny druhe barvy, zacina hru} HPole: THerniPlocha; {herni plocha s kameny hracu, 0 - bez kamene, 1 - hrac, 2 - pocitac} Tahy, Ohodnoceni: THerniPlocha; {Tabulky vyuzivane pocitacem:} {tabulka moznych tahu a priorit tahu v hernim poli} klav: char; {pro indikaci stisknute klavesy; <Esc> - konec programu}
{----- Program obsahuje tyto podprogramy: ----- Procedure HerniPlocha Procedure KresliHKamen Procedure StartHry Procedure StartUmisteni Procedure Init Function LzeTahnout Procedure Zajmuti Procedure StavTlacitek Function Vysledek Procedure Vyhodnoceni Procedure Play Procedure TahPocitace }
Procedure HerniPlocha; {vykresli graficke prostredi programu: herni plochu, tlacitka} Begin SetBkColor(BPozadi); SetFillStyle(1, BPlochy); Bar(128, 38, 512, 422); {herni pole: 384x384, policka 48x48} SetColor(BCary); Line(126, 36, 514, 36); {obrysove cary} Line(126, 424, 514, 424); Line(126, 36, 126, 424); Line(514, 36, 514, 424); i:=38; repeat Line(128, i, 512, i); {delici cary vodorovne} i:=i+48 until i=470; i:=128; repeat Line(i, 38, i, 422); {delici cary svisle} i:=i+48 until i=560; SetColor(BPozadi); {nazev hry u herni plochy:} SetFillStyle(1, BCary); Bar(224,20,416,35); OutTextXY(270,24,'R e v e r s i'); SetColor(3); {tlacitko 'New game'} SetFillStyle(1, 8); Bar(540,10,620,40); OutTextXY(550,20,'New game'); Bar(540,50,620,80); {tlacitko 'Player'} if HZmenen then OutTextXY(550,60,'Player 2') else OutTextXY(550,60,'Player 1'); Bar(540,90,620,120); {tlacitko 'Exit'} OutTextXY(564,100,'Exit') End;
Procedure KresliHKamen(CisloH, s1, s2: byte); {Nakresli hraci kamen pro 1. (je-li CisloH=1) nebo 2. hrace (pocitac) na} {souradnicich herniho pole s1, s2. Je-li nastaven Player 2 (HZmenen), u hracu} {se prohodi barvy.} Begin if HZmenen then if CisloH=1 then CisloH:=2 {pri zmene hrace se meni barvy} else CisloH:=1; if CisloH=1 then begin SetColor(BHrace1); SetFillStyle(1, BHrace1) end else begin SetColor(BHrace2); SetFillStyle(1, BHrace2) end; CursorDisable; {nakresleni hraciho kamene na souradnicich policka v grafickem rezimu} PieSlice(104+s2*48, 14+s1*48, 0, 360, 16); if CisloH=1 then SetColor(BObrys1) else SetColor(BObrys2); Circle(104+s2*48, 14+s1*48, 16); CursorEnable End;
Procedure StartHry; {inicializuje start hry, umistuje startovni kameny hracu}
Procedure StartUmisteni(cislo:byte); {vnorena; podle nahodne generovaneho cisla umisti startovni kamen pocitace} Begin case cislo of 0: begin HPole[4,4]:=2; KresliHKamen(2,4,4); end; 1: begin HPole[4,5]:=2; KresliHKamen(2,4,5); end; 2: begin HPole[5,4]:=2; KresliHKamen(2,5,4); end; 3: begin HPole[5,5]:=2; KresliHKamen(2,5,5); end end End;
Begin {inicializace promennych pri startu nove hry} Finish:=false; if not HZmenen then HracC:=true {standardne hraje prvni pocitac} else HracC:=false; {jinak hraje prvni hrac jako Player 2} Randomize; {generovani nahodne pozice prvnich 2 kamenu hrace} k:=Random(4); l:=Random(4); if k=l then if k<3 then inc(l) else dec(l); {pokud se pro kameny vygeneruji stejna cisla, l se zvetsi (popr. zmensi)} StartUmisteni(k); {umisteni kamene do stredu pole podle nahodneho cisla} StartUmisteni(l); {Na dve volna mista ve stredu pole se umisti kameny protihrace:} for i:=4 to 5 do for j:=4 to 5 do if (HPole[i,j]=0) then begin HPole[i,j]:=1; KresliHKamen(1,i,j) end End;
Procedure Init; {inicializace promennych a grafiky na zacatku hry} Begin {vynulovani HPole s popisem rozmisteni kamenu} for i:=1 to 8 do for j:=1 to 8 do HPole[i,j]:=0; CursorDisable; DetectGraph(GDriver, GMode); {inicializace grafickeho modu} InitGraph(GDriver, GMode,''); HerniPlocha; {nakresleni herni plochy a tlacitek} CursorEnable; NewGameOn:=false; PlayerOn:=false; ExitOn:=false End;
Function LzeTahnout(HracC:boolean; x,y:byte):boolean; {vraci true, pokud muze hrac podle pravidel tah provest na souradnicich [x,y], tj. pokud dojde k obkliceni souperovych kamenu} Var Lze: boolean; {proveditelnost obkliceni} KamenHrace, KamenSoupere: 1..2;
Begin LzeTahnout:=false; if HPole[x,y]<>0 then LzeTahnout:=false {policko uz je obsazene} else begin {na policku neni jeste zadny kamen} Lze:=false; {Oznaceni vlastnich kamenu a kamenu protihrace:} if HracC then KamenHrace:=2 else KamenHrace:=1; if HracC then KamenSoupere:=1 else KamenSoupere:=2;
{hledani tahu na SZ (severozapadnim smerem v matici HPole)} if (x-1>0) and (y-1>0) then if HPole[x-1,y-1]=KamenSoupere then begin {o policko dale SZ smerem je kamen soupere} k:=x-1; l:=y-1; {presun na toto policko} while (k-1>0) and (l-1>0) and (not Lze) do begin {pokud budeme stale na sachovnici} dec(k); dec(l); {posuneme se o dalsi policko ve smeru} if HPole[k,l]=0 then Break {pokud je policko prazdne, tah neexistuje} else if HPole[k,l]=KamenHrace then Lze:=true {pokud jsme nasli ve smeru vlastni kamen, tahem lze soupere obklicit} {=> tah existuje} end end; {hledani tahu na SV} if (not Lze) and (x-1>0) and (y+1<9) then if HPole[x-1,y+1]=KamenSoupere then begin k:=x-1; l:=y+1; while (k-1>0) and (l+1<9) do begin dec(k); inc(l); if HPole[k,l]=0 then Break else if HPole[k,l]=KamenHrace then Lze:=true end end; {hledani tahu na JZ} if (not Lze) and (x+1<9) and (y-1>0) then if HPole[x+1,y-1]=KamenSoupere then begin k:=x+1; l:=y-1; while (k+1<9) and (l-1>0) do begin inc(k); dec(l); if HPole[k,l]=0 then Break else if HPole[k,l]=KamenHrace then Lze:=true end end; {hledani tahu na JV} if (not Lze) and (x+1<9) and (y+1<9) then if HPole[x+1,y+1]=KamenSoupere then begin k:=x+1; l:=y+1; while (k+1<9) and (l+1<9) do begin inc(k); inc(l); if HPole[k,l]=0 then Break else if HPole[k,l]=KamenHrace then Lze:=true end end; {hledani tahu na S} if (not Lze) and (x-1>0) then if HPole[x-1,y]=KamenSoupere then begin k:=x-1; while (k-1>0) do begin dec(k); if HPole[k,y]=0 then Break else if HPole[k,y]=KamenHrace then Lze:=true end end; {hledani tahu na J} if (not Lze) and (x+1<9) then if HPole[x+1,y]=KamenSoupere then begin k:=x+1; while (k+1<9) do begin inc(k); if HPole[k,y]=0 then Break else if HPole[k,y]=KamenHrace then Lze:=true end end; {hledani tahu na Z} if (not Lze) and (y-1>0) then if HPole[x,y-1]=KamenSoupere then begin l:=y-1; while (l-1>0) do begin dec(l); if HPole[x,l]=0 then Break else if HPole[x,l]=KamenHrace then Lze:=true end end; {hledani tahu na V} if (not Lze) and (y+1<9) then if HPole[x,y+1]=KamenSoupere then begin l:=y+1; while (l+1<9) do begin inc(l); if HPole[x,l]=0 then Break else if HPole[x,l]=KamenHrace then Lze:=true end end;
if Lze then LzeTahnout:=true; end; {policko je (ne)obsazene} End; {LzeTahnout}
Procedure Zajmuti(HracC:boolean; x,y:byte); {Zajme nepratelske kameny pri tahu hrace HracC na policku o souradnicich [x,y].} {Zajate kameny se v HPole prepisou na vlastni kameny hrace a prebarvi se.} Var KamenHrace, KamenSoupere: 1..2; Begin {urceni cisla kamenu hrace a soupere v matici HPole podle aktualniho hrace} if HracC then KamenHrace:=2 else KamenHrace:=1; if HracC then KamenSoupere:=1 else KamenSoupere:=2;
{Z: pri polozeni kamene obarveni kamenu v zapadnim smeru na sachovnici} if (y>2) then {na Z je mozne zajmout nejake kameny} if HPole[x,y-1]=KamenSoupere then {o 1 policko dale ve smeru je nalezen kamen soupere} for j:=y-2 downto 1 do {od toho pole dale na okraj sachovnice} if (HPole[x,j]=0) then Break {je-li nalezeno prazdne policko, zajmuti se nekona} else if HPole[x,j]=KamenHrace then begin {je-li nalezen kamen hrace na [x,j], lze zajmout} {kameny soupere na polich [x,j+1..y-1]} for k:=j+1 to y-1 do begin HPole[x,k]:=KamenHrace; {zajmuti kamene} KresliHKamen(KamenHrace,x,k) {prebarveni na plose} end; Break end; {V} if (y<7) then if HPole[x,y+1]=KamenSoupere then for j:=y+2 to 8 do if (HPole[x,j]=0) then Break else if HPole[x,j]=KamenHrace then begin for k:=y+1 to j-1 do begin HPole[x,k]:=KamenHrace; KresliHKamen(KamenHrace,x,k) end; Break end;
{J} if (x<7) then if HPole[x+1,y]=KamenSoupere then for i:=x+2 to 8 do if (HPole[i,y]=0) then Break else if HPole[i,y]=KamenHrace then begin for k:=x+1 to i-1 do begin HPole[k,y]:=KamenHrace; KresliHKamen(KamenHrace,k,y) end; Break end;
{S} if (x>2) then if HPole[x-1,y]=KamenSoupere then for i:=x-2 downto 1 do if (HPole[i,y]=0) then Break else if HPole[i,y]=KamenHrace then begin for k:=i+1 to x-1 do begin HPole[k,y]:=KamenHrace; KresliHKamen(KamenHrace,k,y) end; Break end;
{JV} if (x<7) and (y<7) then {na JV je mozne zajmout nejake kameny} if HPole[x+1,y+1]=KamenSoupere then begin {o 1 policko dale ve smeru je nalezen kamen soupere} i:=x+1; j:=y+1; {presun na toto policko} while (i<8) and (j<8) do begin {pokud budeme stale na sachovnici} inc(i); inc(j); {posun o policko dale ve smeru} if (HPole[i,j]=0) then Break {je-li nalezeno prazdne policko, zajmuti se nekona} else if HPole[i,j]=KamenHrace then begin {je-li nalezen kamen hrace na [i,j], lze zajmout} {kameny soupere na polich [k,l], k=x+1,..,i-1, l=y+1,..,j-1} l:=y; for k:=x+1 to i-1 do begin inc(l); HPole[k,l]:=KamenHrace; {zajmuti kamene} KresliHKamen(KamenHrace,k,l) {prebarveni na herni plose} end; Break end end end;
{SZ} if (x>2) and (y>2) then if HPole[x-1,y-1]=KamenSoupere then begin i:=x-1; j:=y-1; while (i>1) and (j>1) do begin dec(i); dec(j); if (HPole[i,j]=0) then Break else if HPole[i,j]=KamenHrace then begin l:=j; for k:=i+1 to x-1 do begin inc(l); HPole[k,l]:=KamenHrace; KresliHKamen(KamenHrace,k,l) end; Break end end end;
{SV} if (x>2) and (y<7) then if HPole[x-1,y+1]=KamenSoupere then begin i:=x-1; j:=y+1; while (i>1) and (j<8) do begin dec(i); inc(j); if (HPole[i,j]=0) then Break else if HPole[i,j]=KamenHrace then begin l:=j; for k:=i+1 to x-1 do begin dec(l); HPole[k,l]:=KamenHrace; KresliHKamen(KamenHrace,k,l) end; Break end end end;
{JZ} if (x<7) and (y>2) then if HPole[x+1,y-1]=KamenSoupere then begin i:=x+1; j:=y-1; while (i<8) and (j>1) do begin inc(i); dec(j); if (HPole[i,j]=0) then Break else if HPole[i,j]=KamenHrace then begin l:=j; for k:=i-1 downto x+1 do begin inc(l); HPole[k,l]:=KamenHrace; KresliHKamen(KamenHrace,k,l) end; Break end end end;
End; {Zajmuti}
Procedure StavTlacitek; {Kosmeticka uprava: zajisteni rozsvicovani napisu tlacitek pri najeti mysi} {na tlacitka (po startu programu a po vyhodnoceni hry).} Begin if (not NewGameOn) and (sx>67) and (sy>1) and (sx<78) and (sy<6) then begin NewGameOn:=true; SetColor(15); CursorDisable; OutTextXY(550,20,'New game'); CursorEnable end else if (NewGameOn) and ((sx<=67) or (sy<=1) or (sx>=78) or (sy>=6)) then begin NewGameOn:=false; SetColor(3); CursorDisable; OutTextXY(550,20,'New game'); CursorEnable end else if (not PlayerOn) and (sx>67) and (sy>6) and (sx<78) and (sy<11) then begin PlayerOn:=true; SetColor(15); CursorDisable; SetFillStyle(1, 8); Bar(540,50,620,80); if not HZmenen then OutTextXY(550,60,'Player 2') else OutTextXY(550,60,'Player 1'); CursorEnable end else if (PlayerOn) and ((sx<=67) or (sy<=6) or (sx>=78) or (sy>=11)) then begin PlayerOn:=false; SetColor(3); CursorDisable; SetFillStyle(1, 8); Bar(540,50,620,80); if HZmenen then OutTextXY(550,60,'Player 2') else OutTextXY(550,60,'Player 1'); CursorEnable end else if (sx>67) and (sy>6) and (sx<78) and (sy<11) and (tlacitka and 1>0) then begin if not HZmenen then HZmenen:=true else HZmenen:=false; CloseGraph; Init; StartHry end else if (not ExitOn) and (sx>67) and (sy>11) and (sx<78) and (sy<16) then begin ExitOn:=true; SetColor(15); CursorDisable; OutTextXY(564,100,'Exit'); CursorEnable end else if (ExitOn) and ((sx<=67) or (sy<=11) or (sx>=78) or (sy>=16)) then begin ExitOn:=false; SetColor(3); CursorDisable; OutTextXY(564,100,'Exit'); CursorEnable end End;
Function Vysledek:byte; {Scita kameny hrace a pocitace na hernim poli. Vraci 1, pokud zvitezil hrac,} {2, pokud pocitac a 3 pri remize (vitezi hrac s nejvetsim poctem kamenu).} Begin k:=0; {pocet kamenu hrace s kameny 1 v matici HPole} l:=0; {pocet kamenu hrace s kameny 2 v matici HPole (pocitac)} for i:=1 to 8 do for j:=1 to 8 do if HPole[i,j]=1 then inc(k) else if HPole[i,j]=2 then inc(l); if k>l then Vysledek:=1 {vyhrava hrac} else if l>k then Vysledek:=2 {vyhrava pocitac} else Vysledek:=3 {pripadna remiza} End;
Procedure Vyhodnoceni; {reprezentuje vysledek hry na obrazovce, zajistuje interaktivitu ovladani} {i po zobrazeni vyhodnoceni} Begin SetColor(15); {ram pro zobrazeni vyhodnoceni hry} SetFillStyle(1, 8); Bar(200,434,440,464); if Vysledek=1 then {vyhral hrac} OutTextXY(250,444,'You are the winner!') else if Vysledek=2 then {vyhral pocitac} OutTextXY(250,444,'You lost the game!') else {remiza} OutTextXY(302,444,'Draw!'); {Zajisteni rozsvicovani napisu tlacitek pri najeti mysi na tlacitka} {a pripadneho ukonceni programu pomoci tlacitka 'Exit' nebo klavesy <Esc>} {po zobrazeni vyhodnoceni hry:} Repeat if keypressed then klav:=readkey; CtiStav(tlacitka,sx,sy); StavTlacitek; {rozsvicovani napisu tlacitek} if (sx>67) and (sy>1) and (sx<78) and (sy<6) and (tlacitka and 1>0) then Finish:=false {nova hra po stisknuti tlacitka} else if (sx>67) and (sy>11) and (sx<78) and (sy<16) and (tlacitka and 1>0) then klav:=#27 {ukonceni hry po stisknuti tlacitka 'Exit'} Until (not Finish) or (klav=#27) or (keypressed) or (tlacitka and 2>0); if klav=#27 then begin {ukonceni po stisknuti <Esc>} CursorDisable; ClearDevice; CloseGraph; halt(1) end; CloseGraph; Init; StartHry {start dalsi hry} End;
Procedure Play(sourx,soury:word); {Kontroluje tah hrace na souradnicich herniho pole [sourx,soury], provadi} {tah na poli a zajmuti nepratelskych kamenu. Jestlize neexistuje tah hrace,} {meni hrace. Overuje konec hry, pri ukonceni hry spousti vyhodnoceni.} Var ExTahHrace: boolean; Begin ExTahHrace:=false; {predpokladame, ze neexistuje tah dalsiho hrace} if HracC then begin {hraje pocitac, tah je urcite proveditelny} HPole[sourx,soury]:=2; {umisteni kamene (2) do HPole} KresliHKamen(2,sourx,soury); {nakresleni na herni plochu} Zajmuti(HracC,sourx,soury); {zajmuti kamenu soupere} HracC:=false; {zmena hrace; je nutna az zde po provedeni predchozich kroku} for i:=1 to 8 do if ExTahHrace then Break else for j:=1 to 8 do if ExTahHrace then Break else if LzeTahnout(HracC,i,j) then ExTahHrace:=true; {pokud existuje alespon jeden tah hrace, hrac muze priste hrat} if not ExTahHrace then HracC:=true {jinak priste hraje opet pocitac} end else {hraje hrac} if LzeTahnout(HracC,sourx,soury) then begin {pokud je tah proveditelny} HPole[sourx,soury]:=1; KresliHKamen(1,sourx,soury); Zajmuti(HracC,sourx,soury); HracC:=true; delay(prodleva) {esteticka prodleva, aby hrac videl, kam tahnul, nez mu pocitac kamen prebarvi} end; if (not ExTahHrace) then begin Finish:=true; {ukonceni hry} for i:=1 to 8 do if not Finish then Break else for j:=1 to 8 do if not Finish then Break else begin {jestlize na sachovnici ex. tah jednoho z hracu, hra nebude ukoncena} if LzeTahnout(Finish,i,j) then Finish:=false; if LzeTahnout(not Finish,i,j) then Finish:=false end; if Finish then Vyhodnoceni end End;
Procedure TahPocitace; {zjistuje optimalni tah pocitace pomoci Ohodnoceni, pokud ex. vice moznosti,} {tah je z nich vybran nahodne} Var max, PocetTahu:byte; Begin max:=0; {maximalni ohodnoceni tahu pocitace} PocetTahu:=0; {pocet tahu s nejvyssim ohodnocenim} {nalezeni tahu s nejvetsi prioritou podle Ohodnoceni:} for i:=1 to 8 do for j:=1 to 8 do begin if LzeTahnout(HracC,i,j) then begin Tahy[i,j]:=2; {ulozeni mozneho tahu do tabulky tahu} if Ohodnoceni[i,j]>max then begin {nalezeni tahu s lepsim ohodnocenim} max:=Ohodnoceni[i,j]; PocetTahu:=1; sourx:=i; soury:=j end else if Ohodnoceni[i,j]=max then inc(PocetTahu) {nalezli jsme dalsi tah s maximalnim ohodnocenim} end else Tahy[i,j]:=0 end; Randomize; if max>0 then begin {jestlize byl nalezen tah pocitace} if PocetTahu>1 then begin {jestlize existuje vice optimalnich tahu} k:=Random(PocetTahu); inc(k); {k je nahodne cislo jednoho z nejlepsich tahu} l:=0; for i:=1 to 8 do for j:=1 to 8 do if (Tahy[i,j]=2) and (Ohodnoceni[i,j]=max) then begin inc(l); if l=k then begin {nalezeni k-teho nejlepsiho tahu v Ohodnoceni} sourx:=i; {souradnice nahodneho tahu s nejlepsim ohodnocenim} soury:=j end end end; Play(sourx,soury) {provedeni tahu pocitace} end else HracC:=false {jestli nebyl nalezen tah pocitace, pocitac nehraje a na tahu je hrac} End;
{TELO PROGRAMU: ************************************************************} Begin {vyplneni tabulky ohodnoceni tahu} Ohodnoceni[1,1]:=100; {rohy maji velky strategicky vyznam} Ohodnoceni[1,8]:=100; Ohodnoceni[8,1]:=100; Ohodnoceni[8,8]:=100; Ohodnoceni[1,2]:=2; {prime okoli rohu neni proto vyhodne} Ohodnoceni[2,1]:=2; Ohodnoceni[1,7]:=2; Ohodnoceni[2,8]:=2; Ohodnoceni[7,1]:=2; Ohodnoceni[8,2]:=2; Ohodnoceni[7,8]:=2; Ohodnoceni[8,7]:=2; Ohodnoceni[2,2]:=1; Ohodnoceni[2,7]:=1; Ohodnoceni[7,2]:=1; Ohodnoceni[7,7]:=1; for j:=3 to 6 do begin Ohodnoceni[1,j]:=50; {zbyle kraje jsou take vyznamne} Ohodnoceni[8,j]:=50; Ohodnoceni[2,j]:=5; {policka u kraju krome rohovych pozic} Ohodnoceni[7,j]:=5 end; for i:=3 to 6 do begin Ohodnoceni[i,1]:=50; Ohodnoceni[i,8]:=50; Ohodnoceni[i,2]:=5; Ohodnoceni[i,7]:=5 end; for i:=3 to 6 do {stred pole 4x4} for j:=3 to 6 do Ohodnoceni[i,j]:=10; Ohodnoceni[3,3]:=30; {rohy stredu pole} Ohodnoceni[3,6]:=30; Ohodnoceni[6,3]:=30; Ohodnoceni[6,6]:=30; Ohodnoceni[1,3]:=60; {krajni pole 2 policka od rohu} Ohodnoceni[1,6]:=60; Ohodnoceni[3,1]:=60; Ohodnoceni[3,8]:=60; Ohodnoceni[6,1]:=60; Ohodnoceni[6,8]:=60; Ohodnoceni[8,3]:=60; Ohodnoceni[8,6]:=60; CursorEnable; {zobrazeni kurzoru mysi} Init; {inicializace nove hry} HZmenen:=false; {jako prvni hraje standardne pocitac} StartHry; {Zajisteni rozsvicovani napisu tlacitek pri najeti mysi na tlacitka} {a pripadneho ukonceni programu pomoci tlacitka 'Exit' nebo klavesy <Esc>} {po startu hry:} Repeat if HracC=false then begin {pokud hraje hrac} if keypressed then klav:=readkey; CtiStav(tlacitka,sx,sy); StavTlacitek; {rozsvicovani napisu tlacitek} if (sx>67) and (sy>1) and (sx<78) and (sy<6) and (tlacitka and 1>0) then begin CloseGraph; Init; StartHry {start nove hry po stisknuti 'New game'} end else if not Finish and (sx>16) and (sx<65) and (sy>5) and (sy<54) and (tlacitka and 1>0) then begin {pri kliknuti na herni plochu} {prevod souradnic mysi na souradnice policka v hracim poli} k:=trunc((sx*7.9-128)/48+1); sourx:=trunc((sy*7.8-38)/48+1); {x-ova souradnice policka} soury:=k; Play(sourx,soury) {provedeni tahu hrace} end end else TahPocitace {hraje pocitac} Until (klav=#27) or ((sx>67) and (sy>11) and (sx<78) and (sy<16) and (tlacitka and 1>0)); {program bezi dokud neni stisknuto tlacitko 'Exit' nebo <Esc>} CursorDisable; ClearDevice; CloseGraph End.
|
|
Registrovaný: 19.09.06 Prihlásený: 17.01.24 Príspevky: 749 Témy: 31 Bydlisko: Ružomberok&... |
v pascale nie je vstavana mys priamo, cize mas 2 moznosti
1.: vyuzijes kniznicu, ktoru naprogramoval niekto pred tebou a riadne prestudujes dokumentaciu jej funkcii
2.: pomocou inline assembleru a prerusenia 33h vytvoris vlastne trivialne funkcie na pracu s mysou.
funkcia cursordisable by sa dala nahradit funkciou
asm
mov ax,$0002
int $33
end;
a takymito kratkymi funkciami sa daju nahradit vsetky.
http://www.geocities.com/SiliconValley/ ... 33list.htm
na tejto stranke su vsetky "podfunkcie" prerusenia 33h.
mam vistu, cize sa mozem mylit, ale praca s grafikou sa da riesit pomocou prerusenia - http://en.wikipedia.org/wiki/INT_10.
|
|
Registrovaný: 07.10.08 Prihlásený: 07.10.08 Príspevky: 2 Témy: 1 | Napísal autor témy vcrabz: 07.10.2008 19:37 | |
|
thx for help
|
|
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Nefunguje myš v Externé zariadenia | 1 | 747 | 15.03.2011 7:25 tiktak1953 | | Nefunguje myš v Ostatné | 2 | 310 | 07.06.2020 8:33 Peter Kopor | | Mys nefunguje spravne v Externé zariadenia | 1 | 490 | 13.04.2020 19:57 shiro | | Nefunguje myš ani klavesnica v Antivíry a antispywary | 19 | 512 | 29.08.2023 15:58 4040 | | Po reinštalácii AMD Driverov nefunguje myš v Externé zariadenia | 0 | 413 | 24.03.2012 18:46 kacenak | | PS/2 myš nefunguje pod Vistou v Ostatné | 4 | 816 | 26.05.2008 16:27 prandof | | Nefunguje klavesnica a mys (Bluetooth napájanie) v Ostatné | 2 | 756 | 07.02.2014 16:24 KocuR | | Myš habu Microsoft + Razer - po zapojeni nefunguje v Externé zariadenia | 2 | 649 | 25.07.2008 14:50 Thor Steinar | | USB3.0 nefunguje ako má, Myš a klávesnica v USB2.0 seká v Intel čipové sady | 16 | 1278 | 08.02.2013 13:58 ujo zigo | | Windows 10 - neviem odomknut windows, nefunguje klavesnica ani mys, v BIOSE funguju v Operačné systémy Microsoft | 11 | 1039 | 28.04.2021 8:28 4040 | | Nefunguje ziadna USB klavesnica ani ziadna USB mys v Externé zariadenia | 1 | 952 | 20.10.2011 22:03 michalesku | | program v pascale v Ponuka práce | 4 | 1091 | 03.04.2009 22:05 bbeni | | Programovanie v Pascale v Ostatné | 7 | 544 | 05.11.2018 21:07 kikuska222 | | Zadanie v pascale v Assembler, C, C++, Pascal, Java | 15 | 1476 | 04.10.2008 17:40 dsljohn | | Hra v pascale v Assembler, C, C++, Pascal, Java | 4 | 1120 | 11.01.2009 17:49 programator | | Program v pascale v Assembler, C, C++, Pascal, Java | 2 | 499 | 23.11.2011 13:25 jojinkho |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|