{ OKO.PAS Copyright (c) Jan Benkovic } { Program na hratie hry oko s pocitacom. } { } { Po zacati hry sa zobrazia karty. Vlavo hore je karta hraca, pravo } { hore je obratena karta pocitaca, vlavo dole je ties obratena karta} { pocitaca 2 a pravo dole je miesto pre karty banku. V strede je } { kopa a vrchna karta je obratena. Pri kazdej katre sa nachadzaju } { konta a vsadene ciastky hracov. Po odklepnuti si hrac moze vsadit.} { Pri nespravnom zadani vsadenej ciatky, alebo po odklepnuti bez } { napisania nejakej ciastky sa program sam vypne. Maximalna hodnota } { vsadenia je urcena bud hracovym kontom, alebo kontom Banku, ktore } { sa deli 3 aby kazdi hrac mohol vsadit rovanku ciastku. Po vsadeni } { program caka na stlacenie 'a' alebo 'n' pre tahanie dalsej karty, } { alebo prestanie tahania. Po stopnuti tahania pokracuje hrac } { stlacanim akejkolvek klavesi. Teraz si potiahne pocitac a Bank. } { Nakoniec hra vyhodnoti kto vyhral a mate moznost bud pokracovat, } { alebo hru ukoncit 'Esc', alebo klinkutim na koniec. Hra bude } { pokracovat pokial niekto s hracov nedosiahne nulu, alebo bank bude} { mat nulu. Ostatna cast hry ostava rovnaka ako pri normalnom OKU. } { Pri tejto verzii sa vynechali veci ako CERVENA SEDMA a } { TRI SEDMICKY, ktore mozu byt neskor dodane navise v novsich } { verziach. } { } { Datum:08.06.2000 http://www.trsek.com } uses crt,graph; type pole = array [1..32] of byte; var gd,gm : integer; pp,bb,e,g,pom : byte; koef_miesania :integer; k,a,err: integer; pom_hrac : byte; pom_PC1 : byte; pom_PC2 : byte; pom_bank : byte; PC1_karty,PC2_karty,karty : pole; c: char; aa,l,prem1,prem,karta : string; vsad_PC1: string; vsad_PC2: string; vsad_hrac: string; t: text; q,vrch,koniec,bank,hrac,PC_1,PC_2 : byte; jedenastka_h: byte; jedenastka_p1: byte; jedenastka_p2: byte; jedenastka_b: byte; OldPattern : FillPatternType; konto_hrac : longint; konto_PC1 : longint; konto_PC2 : longint; konto_bank : longint; o: integer; vsadene_PC1: longint; vsadene_PC2: longint; vsadene_hrac: longint; max_vsad: longint; p1,p2,p3 : byte; prehra_hrac,prehra_PC1,prehra_PC2,prehra_bank : byte; _hra : byte; vyber: byte; procedure err_koniec; begin cleardevice; setcolor(white); outtextxy(200,200,'V programe nastala chyba !!'); readkey; halt; closegraph; end; procedure nor_koniec; begin cleardevice; if _hra=0 then begin setcolor(green); outtextxy(230,150,'CREATED BY TRIO CREW'); setcolor(white); outtextxy(275,190,'Macko 007'); outtextxy(190,210,'http://freeweb.coco.cz/triocrew '); outtextxy(230,230,'Benkovic@internet.sk '); setcolor(red); outtextxy(240,470,'PRESS ANY KEY TO END'); readkey; end else begin setcolor(red); outtextxy(275,1,'RESULTS :'); setcolor(white); outtextxy(265,21,'Bank :'); str(konto_bank,prem); outtextxy(325,21,prem); outtextxy(265,41,'PC 1 :'); str(konto_PC1,prem); outtextxy(325,41,prem); outtextxy(265,61,'PC 2 :'); str(konto_PC2,prem); outtextxy(325,61,prem); outtextxy(265,81,'Hrac :'); str(konto_hrac,prem); outtextxy(325,81,prem); setcolor(yellow); if _hra=254 then outtextxy(40,200,'Prepacte ale hra bola prerusena koli dlzke premmenej, DAKUJEM !') else if konto_bank=0 then outtextxy(200,200,'Gratulujem vyhrali ste...') else if (konto_hrac=0)or(konto_PC1=0)or(konto_PC2=0) then outtextxy(230,200,'Jeden z hracov prehral') else outtextxy(195,200,'Hra bola prerusena uzivatelom'); readkey; cleardevice; setcolor(green); outtextxy(230,150,'CREATED BY TRIO CREW'); setcolor(white); outtextxy(275,190,'Macko 007'); outtextxy(190,210,'http://freeweb.coco.cz/triocrew '); outtextxy(230,230,'Benkovic@internet.sk '); setcolor(red); outtextxy(240,470,'PRESS ANY KEY TO END'); readkey; end; closegraph; halt; end; procedure vyk_karty (x,y,x1,y1 : integer;cislo : string); begin setcolor(red); rectangle(x-1,y-1,x1+1,y1+1); rectangle(x-2,y-2,x1+2,y1+2); bar (x,y,x1,y1); setcolor(black); if (pp=1)or(bb=1) then begin val(cislo,a,err); if err<>0 then err_koniec; if a<=9 then begin outtextxy(x+3,(345-(q*19+q)),cislo); outtextxy(x1-8,(460-(q*19+q)),cislo); outtextxy(x1-8,(345-(q*19+q)),cislo); outtextxy(x+3,(460-(q*19+q)),cislo); end else begin outtextxy(x+3,(345-(q*19+q)),cislo); outtextxy(x1-17,(460-(q*19+q)),cislo); outtextxy(x1-17,(345-(q*19+q)),cislo); outtextxy(x+3,(460-(q*19+q)),cislo); end; end else begin val(cislo,a,err); if err<>0 then err_koniec; if a<=9 then begin outtextxy(x+3,(19+(q*19+q)),cislo); outtextxy(x1-8,(19+(q*19+q)),cislo); outtextxy(x1-8,(134+(q*19+q)),cislo); outtextxy(x+3,(134+(q*19+q)),cislo); end else begin outtextxy(x+3,(19+(q*19+q)),cislo); outtextxy(x1-17,(19+(q*19+q)),cislo); outtextxy(x1-17,(134+(q*19+q)),cislo); outtextxy(x+3,(134+(q*19+q)),cislo); end; end; end; procedure zakr_karty(x,y,x1,y1 : integer); begin setcolor(red); rectangle(x-1,y-1,x1+1,y1+1); rectangle(x-2,y-2,x1+2,y1+2); SetFillStyle(XHatchFill,red); bar (x,y,x1,y1); setcolor(black); GetFillPattern(OldPattern); SetFillPattern(OldPattern,White); end; procedure plyer1 (posun_hrac:byte); begin repeat e:=e+1; str(hrac,prem); repeat c:=readkey until (c='a')or(c='A')or(c='n')or(c='N'); case c of 'a','A' : begin posun_hrac:=posun_hrac+1; q:=q+1; if (pom_hrac=11)and(karty[e+5]=11) then jedenastka_h:=1; hrac:=hrac+karty[e+5]; str(karty[e+5],prem1); vyk_karty(2,(14+(posun_hrac*19+posun_hrac)),102,(144+(posun_hrac*19+posun_hrac)),prem1); setcolor(white); end; 'n','N' : koniec:=koniec+1; end; until (hrac>=19)or(koniec=1); str(hrac,prem); end; procedure player2 (posun_PC1:byte); begin repeat e:=e+1; posun_PC1:=posun_PC1+1; if (pom_PC1=11)and(karty[e+5]=11) then jedenastka_p1:=1; case PC_1 of 1..13 : begin PC_1:=PC_1+karty[e+5]; zakr_karty(500,(14+(posun_PC1*19+posun_PC1)),600,(144+(posun_PC1*19+posun_PC1))); PC1_karty[e]:=karty[e+5]; end; 14..16 : begin g:=random(5)+1; if (g>=1)and(g<=3) then begin PC_1:=PC_1+karty[e+5]; PC1_karty[e]:=karty[e+5]; zakr_karty(500,(14+(posun_PC1*19+posun_PC1)),600,(144+(posun_PC1*19+posun_PC1))); end else koniec:=koniec+1; end; 17..21 : koniec:=koniec+1; end; until (PC_1>=19)or(koniec=1); end; procedure player3(posun_PC3:byte); begin repeat posun_PC3:=posun_PC3+1; e:=e+1; if (pom_PC2=11)and(karty[e+5]=11) then jedenastka_p2:=1; case PC_2 of 1..15 : begin PC_2:=PC_2+karty[e+5]; PC2_karty[e]:=karty[e+5]; zakr_karty(2,340-(posun_PC3*19+posun_PC3),102,470-(posun_PC3*19+posun_PC3)); end; 16..17 : begin g:=random(5)+1; if (g>=1)and(g<=3) then begin PC_2:=PC_2+karty[e+5]; zakr_karty(2,340-(posun_PC3*19+posun_PC3),102,470-(posun_PC3*19+posun_PC3)); PC2_karty[e]:=karty[e+5]; end else koniec:=koniec+1; end; 18..21 : koniec:=koniec+1; end; until (PC_2>=19)or(koniec=1); end; procedure player4(posun_PC4:byte); begin bb:=1; repeat if (bank+vrch=21)or(bank+vrch=20)or(bank+vrch=19)or(bank+vrch=18)then begin posun_PC4:=posun_PC4+1; q:=q+1; bank:=bank+vrch; zakr_karty(250,135,350,265); str(vrch,l); vyk_karty(500,340-(posun_PC4*19+posun_PC4),600,470-(posun_PC4*19+posun_PC4),l); end; posun_PC4:=posun_PC4+1; e:=e+1; if (pom_bank=11)and(karty[e+5]=11) then jedenastka_b:=1; case bank of 1..14 : begin q:=q+1; str(karty[e+5],l); vyk_karty(500,340-(posun_PC4*19+posun_PC4),600,470-(posun_PC4*19+posun_PC4),l); bank:=bank+karty[e+5]; end; 15..17 : begin g:=random(5)+1; if (g>=1)and(g<=2) then begin q:=q+1; bank:=bank+karty[e+5]; str(karty[e+5],l); vyk_karty(500,340-(posun_PC4*19+posun_PC4),600,470-(posun_PC4*19+posun_PC4),l); end else koniec:=koniec+1; end; 18..21 : koniec:=koniec+1; end; until (bank>=19)or(koniec=1); bb:=0; end; procedure miesanie; begin a:=0; koef_miesania:=0; assign(t,'oko.dat'); reset(t); randomize; repeat e:=e+1; readln(t,karta); val(karta,a,err); if err<>0 then err_koniec; if (a<>3)and(a<>4)and(a<>2)and(a<>7)and(a<>8)and(a<>9)and(a<>10)and(a<>11) then err_koniec; karty[e]:=a; until e=32; close(t); repeat for e:=1 to 32 do begin g:=random(32)+1; pom:=karty[g]; karty[g]:=karty[e]; karty[e]:=pom; end; koef_miesania:=koef_miesania+1; until koef_miesania=2501; end; procedure vsadenie_hraca; begin gotoxy(16,2); readln(aa); val(aa,vsadene_hrac,err); if err<>0 then vsadene_hrac:=0; if (vsadene_hrac>max_vsad)or(vsadene_hrac>konto_hrac) then begin outtextxy(160,18,'- Nevsadil si sapravne'); readkey; setcolor(black); outtextxy(160,18,'- Nevsadil si sapravne'); setcolor(white); vsadenie_hraca; end; end; procedure hra; begin cleardevice; if (konto_bank<=2)or(konto_hrac=0)or(konto_PC1=0)or(konto_PC2=0)or(_hra=254)then nor_koniec; setcolor(white); outtextxy(270,150,'-=LOADING=-'); outtextxy(260,220,'Miesaine...'); miesanie; outtextxy(350,220,'OK'); outtextxy(260,240,'Nulovanie...'); inc(_hra); prehra_bank:=0; prehra_hrac:=0; prehra_PC1:=0; prehra_PC2:=0; p1:=0; p2:=0; p3:=0; randomize; koniec:=0; vsadene_PC1:=0; vsadene_PC2:=0; vsadene_hrac:=0; e:=0; for k:= 1 to 32 do begin PC1_karty[k]:=0; PC2_karty[k]:=0; end; bank:=0; PC_1:=0; PC_2:=0; hrac:=0; vrch:=0; pom_hrac:=0; pom_PC1 :=0; pom_PC2 :=0; pom_bank :=0; jedenastka_h:=0; jedenastka_p1:=0; jedenastka_p2:=0; jedenastka_b:=0; outtextxy(350,240,'OK'); outtextxy(260,260,'Tahanie....'); bank:=karty[1]; PC_1:=karty[2]; PC_2:=karty[3]; hrac:=karty[4]; vrch:=karty[5]; pom_hrac:=karty[4]; pom_PC1 :=karty[2]; pom_PC2 :=karty[3]; pom_bank :=karty[1]; outtextxy(350,260,'OK'); cleardevice; str(vrch,prem); setcolor(red); rectangle(250-1,135-1,350+1,265+1); rectangle(250-2,135-2,350+2,265+2); bar (250,135,350,265); setcolor(black); if vrch<=9 then begin outtextxy(250+3,140,prem); outtextxy(350-8,140,prem); outtextxy(350-8,255,prem); outtextxy(250+3,255,prem); end else begin outtextxy(250+3, 140,prem); outtextxy(350-17,140,prem); outtextxy(350-17,255,prem); outtextxy(250+3, 255,prem); end; setcolor(white); outtextxy(460,465,'Bank ma :'); zakr_karty(500,34,600,164); setcolor(white); outtextxy(460,5,'Konto PC : '); outtextxy(545,5,vsad_PC1); str(PC_1,prem); PC1_karty[1]:=PC_1; outtextxy(460,18,'Vsadil : '); max_vsad:=(konto_bank)DIV(3); case PC_1 of 3..5 : begin case konto_PC1 of 1..10 : vsadene_PC1:=1; 11..25 : vsadene_PC1:=5; 26..50 : vsadene_PC1:=random(10)+11; 51..100 : vsadene_PC1:=random(10)+11; 101..200 : vsadene_PC1:=random(20)+21; 201..250 : vsadene_PC1:=random(55)+11; 250..500 : vsadene_PC1:=random(90)+11; else vsadene_PC1:=random(140)+51; end; if vsadene_PC1>max_vsad then vsadene_PC1:=max_vsad; end; 7..9 : begin case konto_PC1 of 1..10 : vsadene_PC1:=1; 11..25 : vsadene_PC1:=10; 26..50 : vsadene_PC1:=random(15)+11; 51..100 : vsadene_PC1:=random(30)+11; 101..200 : vsadene_PC1:=random(35)+21; 201..250 : vsadene_PC1:=random(75)+11; 250..500 : vsadene_PC1:=random(90)+21; else vsadene_PC1:=random(150)+81; end; if vsadene_PC1>max_vsad then vsadene_PC1:=max_vsad; end; 10..11 : begin case konto_PC1 of 1..4 : vsadene_PC1:=1; 5..10 : vsadene_PC1:=3; 11..25 : vsadene_PC1:=11; 26..50 : vsadene_PC1:=random(10)+16; 51..100 : vsadene_PC1:=random(35)+16; 101..200 : vsadene_PC1:=random(40)+31; 201..250 : vsadene_PC1:=random(80)+21; 250..500 : vsadene_PC1:=random(115)+31; else vsadene_PC1:=random(160)+131; end; if vsadene_PC1>max_vsad then vsadene_PC1:=max_vsad; end; end; konto_PC1:=konto_PC1-vsadene_PC1; konto_bank:=konto_bank-vsadene_PC1; str(vsadene_PC1,prem); outtextxy(530,18,prem); str(konto_PC1,prem); outtextxy(545,5,prem); zakr_karty(2,320,102,450); setcolor(white); outtextxy(1,458,'Konto PC : '); outtextxy(86,458,vsad_PC2); str(PC_2,prem); PC2_karty[1]:=PC_2; outtextxy(1,468,'Vsadil : '); case PC_2 of 3..5 : begin case konto_PC2 of 1..10 : vsadene_PC2:=1; 11..25 : vsadene_PC2:=5; 26..50 : vsadene_PC2:=random(10)+11; 51..100 : vsadene_PC2:=random(20)+11; 101..200 : vsadene_PC2:=random(30)+21; 201..250 : vsadene_PC2:=random(60)+21; 250..500 : vsadene_PC2:=random(100)+11; else vsadene_PC2:=random(160)+71; end; if vsadene_PC2>max_vsad then vsadene_PC2:=max_vsad; end; 7..9 : begin case konto_PC2 of 1..10 : vsadene_PC2:=1; 11..25 : vsadene_PC2:=10; 26..50 : vsadene_PC2:=random(15)+11; 51..100 : vsadene_PC2:=random(30)+11; 101..200 : vsadene_PC2:=random(40)+21; 201..250 : vsadene_PC2:=random(105)+21; 250..500 : vsadene_PC2:=random(110)+11; else vsadene_PC2:=random(180)+81; end; if vsadene_PC2>max_vsad then vsadene_PC2:=max_vsad; end; 10..11 : begin case konto_PC2 of 1..4 : vsadene_PC2:=1; 5..10 : vsadene_PC2:=3; 11..25 : vsadene_PC2:=11; 26..50 : vsadene_PC2:=random(10)+16; 51..100 : vsadene_PC2:=random(25)+16; 101..200 : vsadene_PC2:=random(50)+21; 201..250 : vsadene_PC2:=random(100)+21; 250..500 : vsadene_PC2:=random(115)+11; else vsadene_PC2:=random(200)+91; end; if vsadene_PC2>max_vsad then vsadene_PC2:=max_vsad; end; end; konto_PC2:=konto_PC2-vsadene_PC2; konto_bank:=konto_bank-vsadene_PC2; str(vsadene_PC2,prem); outtextxy(86,468,prem); str(konto_PC2,prem); outtextxy(86,458,prem); str(konto_bank,prem); outtextxy(540,465,prem); q:=1; str(hrac,prem); vyk_karty(2,34,102,164,prem); setcolor(white); str(konto_hrac,vsad_hrac); outtextxy(1,5,'Momentalne mas : '); outtextxy(135,5,vsad_hrac); outtextxy(1,18,'Kolko vsadit : '); str(konto_hrac,prem); str(max_vsad,prem1); outtextxy(115,18,'Max '); if konto_hrac>max_vsad then outtextxy(145,18,prem1) else if konto_hracmax_vsad then outtextxy(145,18,prem1) else if konto_hrac21 then begin if jedenastka_h=1 then else begin p1:=1; konto_bank:=konto_bank+(2*vsadene_hrac); prehra_hrac:=1; end; end; if PC_1>21 then begin if jedenastka_p1=1 then else begin p2:=1; konto_bank:=konto_bank+(2*vsadene_PC1); prehra_PC1:=1; end; end; if PC_2>21 then begin if jedenastka_p2=1 then else begin p3:=1; konto_bank:=konto_bank+(2*vsadene_PC2); prehra_PC2:=1; end; end; if bank>21 then begin if jedenastka_b=1 then else begin prehra_bank:=1; if p1=1 then else begin konto_hrac:=konto_hrac+(2*vsadene_hrac); p1:=1; end; if p2=1 then else begin konto_PC1:=konto_PC1+(2*vsadene_PC1); p2:=1; end; if p3=1 then else begin p3:=1; konto_PC2:=konto_PC2+(2*vsadene_PC2); end; end; end; if p1=0 then begin if (jedenastka_b=1) and (jedenastka_h=1) then begin konto_bank:=konto_bank+(2*vsadene_hrac); prehra_hrac:=1; end else if (jedenastka_b=1) and (jedenastka_h=0) then begin konto_bank:=konto_bank+(2*vsadene_hrac); prehra_hrac:=1; end else if (jedenastka_b=0) and (jedenastka_h=1) then begin konto_hrac:=konto_hrac+(2*vsadene_hrac); prehra_bank:=1; end else if bank>hrac then begin konto_bank:=konto_bank+(2*vsadene_hrac); prehra_hrac:=1; end else if bankPC_1 then begin konto_bank:=konto_bank+(2*vsadene_PC1); prehra_PC1:=1; end else if bankPC_2 then begin konto_bank:=konto_bank+(2*vsadene_PC2); prehra_Pc2:=1; end else if bank0 then err_koniec; setcolor(white); repeat inc(e); readln(t,text); delay(rychlost); outtextxy(1,20+e*12,text); if e=16 then delay(0); until e=19; setcolor(red); outtextxy(300,330,'INFO'); setcolor(white); e:=0; repeat inc(e); readln(t,text); delay(rychlost); outtextxy(1,340+e*12,text); until e=9; e:=0; setcolor(red); outtextxy(265,470,'PRESS ANY KEY'); readkey; hra; end; procedure Credits; var stopp: string; text : string; begin e:=0; assign(t,'oko.dat'); reset(t); repeat readln(t,stopp); until stopp='='; cleardevice; setcolor(red); outtextxy(280,1,'CREDITS'); setcolor(white); repeat inc(e); readln(t,text); outtextxy(10,40+e*12,text); until e=26; setcolor(red); e:=0; outtextxy(265,470,'PRESS ANY KEY '); readkey; hra; end; begin clrscr; detectgraph(gd,gm); initgraph(gd,gm,''); randomize; cleardevice; assign(t,'oko.dat'); reset(t); repeat readln(t); e:=e+1; until eof(t); if e<>90 then err_koniec; e:=0; cleardevice; konto_hrac:=random(215)+101; konto_PC1:=random(200)+151; konto_PC2:=random(200)+201; konto_bank:=(konto_PC1)+(konto_PC2)+(konto_hrac)+(random(250)+51); _hra:=0; setcolor(green); rectangle(235,195,375,210); setcolor(white); outtextxy(290,150,'MENU'); outtextxy(272,200,'Nova Hra'); outtextxy(260,220,'Info & Help'); outtextxy(277,240,'Credits'); outtextxy(290,260,'Exit'); vyber:=1; koniec:=0; repeat repeat c:=readkey until (c='H')or(c='P')or(c=#13)or(c=#27); case c of 'P' : begin if vyber=4 then begin vyber:=1; setcolor(black); rectangle(235,175+4*19+4,375,190+4*19+4); setcolor(green); rectangle(235,175+vyber*19+vyber,375,190+vyber*19+vyber); end else vyber:=vyber+1; setcolor(black); if vyber=1 then else rectangle(235,155+vyber*19+vyber,375,170+vyber*19+vyber); setcolor(green); rectangle(235,175+vyber*19+vyber,375,190+vyber*19+vyber); end; 'H' : begin if vyber=1 then begin vyber:=4; setcolor(black); rectangle(235,175+1*19+1,375,190+1*19+1); setcolor(green); rectangle(235,175+vyber*19+vyber,375,190+vyber*19+vyber); end else vyber:=vyber-1; setcolor(black); if vyber=4 then else rectangle(235,195+vyber*19+vyber,375,210+vyber*19+vyber); setcolor(green); rectangle(235,175+vyber*19+vyber,375,190+vyber*19+vyber); end; #13 : koniec:=1; #27 : begin koniec:=1; vyber:=4; end; end; until koniec=1; case vyber of 1 : hra; 2 : Help; 3 : Credits; 4 : nor_koniec; end; end.