Program na hratie hry oko s počítačom

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Category: KMP (Club of young programmers)
oko.pngAuthor: Ján Benkovič
web: www.tbteacher.host.sk

Program: Oko.pas
File exe: Oko.exe
need: Oko.dat

Program na hratie hry oko s počítačom.

Po začatí hry sa zobrazia karty. Vľavo hore je karta hráča, pravo hore je obrátená karta počítača, vľavo dole je tiež obrátená karta počítača 2 a vpravo dole je miesto pre karty banku. V strede je kopa a vrchná karta je obrátená. Pri každej katre sa nachádzajú kontá a vsadené čiastky hráčov.

Po odklepnutí si hráč môže vsadiť. Pri nesprávnom zadaní vsadenej čiatky, alebo po odklepnutí bez napísania nejakej čiastky sa program sám vypne. Maximálna hodnota vsadenia je určená buď hráčovým kontom, alebo kontom Banku, ktoré sa delí 3 aby každý hráč mohol vsadit rovnakú čiastku. Po vsadení program čaká na stlačenie 'a' alebo 'n' pre ťahanie ďalšej karty, alebo prestanie ťahania. Po stopnutí ťahania pokračuje hráč stláčaním akejkoľvek klávesy. Teraz si potiahne počítač a Bank.

Nakoniec hra vyhodnotí kto vyhral a máte možnosť buď pokračovať, alebo hru ukončiť 'Esc', alebo kliknutím na koniec. Hra bude pokračovať pokiaľ niekto z hráčov nedosiahne nulu, alebo bank bude mať nulu. Ostatná časť hry ostáva rovnaká ako pri normálnom OKU.

Pri tejto verzii sa vynechali veci ako ČERVENÁ SEDMA a TRI SEDMIČKY, ktoré môžu byť neskôr dodané navyše v novších verziách.

{ 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_hrac<max_vsad then outtextxy(145,18,prem)
        else outtextxy(145,18,prem1);
  readkey;
  setcolor(black);
  if konto_hrac>max_vsad then outtextxy(145,18,prem1)
  else if konto_hrac<max_vsad then outtextxy(145,18,prem)
        else outtextxy(145,18,prem1);
  outtextxy(115,18,'Max ');
  setcolor(white);
  vsadenie_hraca;
  setcolor(black);
  str(konto_bank,prem);
  outtextxy(540,465,prem);
  setcolor(white);
  konto_hrac:=(konto_hrac)-vsadene_hrac;
  konto_bank:=konto_bank-vsadene_hrac;
  str(konto_bank,prem);
  outtextxy(540,465,prem);
  plyer1(1);
  koniec:=0;
  q:=0;
  readkey;
  player2(1);
  koniec:=0;
  q:=0;
  readkey;
  player3(1);
  koniec:=0;
  q:=1;
  str(bank,prem);
  bb:=1;
  vyk_karty(500,320,600,450,prem);
  bb:=0;
  player4(1);
  koniec:=0;
  readkey;
  q:=0;
  o:=0;
  for k:=1 to 32 do
   begin
    if PC1_karty[k]=0 then
    else
     begin
      o:=o+1;
      q:=q+1;
      str(PC1_karty[k],l);
      vyk_karty(500,(14+(o*19+o)),600,(144+(o*19+o)),l);
     end;
   end;
  readkey;
  pp:=1;
  o:=0;
  q:=0;
  for k:=1 to 32 do
   begin
    if PC2_karty[k]=0 then
    else
     begin
      o:=o+1;
      str(PC2_karty[k],l);
      q:=q+1;
      vyk_karty(2,340-(o*19+o),102,470-(o*19+o),l)
     end;
   end;
  pp:=0;
  readkey;
  if hrac>21 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 bank<hrac 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;
   end;
  if p2=0 then
   begin
    if (jedenastka_b=1) and (jedenastka_p1=1) then
     begin
      konto_bank:=konto_bank+(2*vsadene_PC1);
      prehra_PC1:=1;
     end
    else if (jedenastka_b=1) and (jedenastka_p1=0) then
     begin
      konto_bank:=konto_bank+(2*vsadene_PC1);
      prehra_PC1:=1;
     end
    else if (jedenastka_b=0) and (jedenastka_p1=1) then
     begin
      konto_PC1:=konto_PC1+(2*vsadene_PC1);
      prehra_bank:=1;
     end
    else if bank>PC_1 then
     begin
      konto_bank:=konto_bank+(2*vsadene_PC1);
      prehra_PC1:=1;
     end
    else if bank<PC_1 then
     begin
      konto_PC1:=konto_PC1+(2*vsadene_PC1);
      prehra_bank:=1;
     end
    else if bank=PC_1 then
     begin
      konto_bank:=konto_bank+(2*vsadene_PC1);
      prehra_PC1:=1;
     end;
   end;
  if p3=0 then
   begin
    if (jedenastka_b=1)and(jedenastka_p2=1) then
     begin
      konto_bank:=konto_bank+(2*vsadene_PC2);
      prehra_PC2:=1;
     end
    else if (jedenastka_b=1) and (jedenastka_p2=0) then
     begin
      konto_bank:=konto_bank+(2*vsadene_PC2);
      prehra_PC2:=1;
     end
    else if (jedenastka_b=0) and (jedenastka_p1=1) then
     begin
      konto_PC2:=konto_PC2+(2*vsadene_PC2);
      prehra_bank:=1;
     end
    else if bank>PC_2 then
     begin
      konto_bank:=konto_bank+(2*vsadene_PC2);
      prehra_Pc2:=1;
     end
    else if bank<PC_2 then
     begin
      konto_PC2:=konto_PC2+(2*vsadene_PC2);
      prehra_bank:=1;
     end
    else if bank=PC_2 then
     begin
      konto_bank:=konto_bank+(2*vsadene_PC2);
      prehra_PC2:=1;
     end;
    end;
  bar(190,100,420,300);
  setcolor(yellow);
  outtextxy(275,80,'Vysledky');
  setcolor(blue);
  line(190,220,420,220);
  rectangle(190-1,100-1,420+1,300+1);
  rectangle(190-2,100-2,420+2,300+2);
  rectangle(192,102,292,122);
  rectangle(192,132,292,152);
  rectangle(192,162,292,182);
  rectangle(192,192,292,212);
  rectangle(300,102,330,122);
  rectangle(300,132,330,152);
  rectangle(300,162,330,182);
  rectangle(300,192,330,212);
  rectangle(338,102,418,122);
  rectangle(338,132,418,152);
  rectangle(338,162,418,182);
  rectangle(338,192,418,212);
  rectangle(250,260,300,298);
  rectangle(310,260,360,298);
  rectangle(192,228,280,248);
  rectangle(288,228,418,248);
  setcolor(black);
  outtextxy(257,275,'Dalej');
  outtextxy(321,275,'Exit');
  outtextxy(195,233,'Pocet hier');
  str(_hra,prem);
  outtextxy(292,233,prem);
  outtextxy(195,107,'Hrac');
  outtextxy(195,137,'Pocitac I');
  outtextxy(195,167,'Pocitac II');
  outtextxy(195,197,'Bank');
  str(konto_hrac,prem);
  outtextxy(341,107,prem);
  str(konto_PC1,prem);
  outtextxy(341,137,prem);
  str(konto_PC2,prem);
  outtextxy(341,167,prem);
  str(konto_bank,prem);
  outtextxy(341,197,prem);
  if prehra_hrac=1 then outtextxy(305,107,'-P-')
  else outtextxy(305,107,'-V-');
  if prehra_PC1=1 then outtextxy(305,137,'-P-')
  else outtextxy(305,137,'-V-');
  if prehra_PC2=1 then outtextxy(305,167,'-P-')
  else outtextxy(305,167,'-V-');
  if prehra_bank=1 then outtextxy(305,197,'-P-')
  else outtextxy(305,197,'-V-');
  koniec:=0;
  vyber:=1;
  setcolor(green);
  rectangle(250,260,300,298);
  setcolor(green);
  outtextxy(257,275,'Dalej');
  repeat
   repeat c:=readkey until (c=#13)or(c=#27)or(c='K')or(c='M');
   case c of
    'M' : begin
           vyber:=2;
           setcolor(blue);
           rectangle(250,260,300,298);
           setcolor(red);
           rectangle(310,260,360,298);
           outtextxy(321,275,'Exit');
           setcolor(black);
           outtextxy(257,275,'Dalej');
          end;
    'K' : begin
           vyber:=1;
           setcolor(green);
           rectangle(250,260,300,298);
           setcolor(blue);
           rectangle(310,260,360,298);
           setcolor(green);
           outtextxy(257,275,'Dalej');
           setcolor(black);
           outtextxy(321,275,'Exit');
          end;
    #13 : koniec:=1;
    #27 : begin
           koniec:=1;
           vyber:=2;
          end;
   end;
  until koniec=1;
  if vyber=1 then hra
  else nor_koniec;
 end;
 
procedure Help;
 var
  stopp: string;
  text : string;
  rychlost : integer;
  rych : string;
 begin
  e:=0;
  assign(t,'oko.dat');
  reset(t);
  repeat
   readln(t,stopp);
  until stopp='*';
  cleardevice;
  setcolor(red);
  outtextxy(300,1,'HELP');
  readln(t,rych);
  val(rych,rychlost,err);
  if err<>0 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.