Ruleta - známa kasínová hra

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategórie: KMP (Programy mladých programátorů)
ruleta.pngAutor: Peter Sulko
Program: Ruleta.pas
Soubor exe: Ruleta.exe
Potřebné: Rule01.pas

Ide o známu kasínovú hru. Minimálny vklad je 10 Korún. Ľavým tlačítkom myši v hracom poli zvyšujem stávku o 10, pravým tlačítkom myši v hracom poli znižujem stávku o 10.
Kredit je teoreticky nevyčerpateľný, takže tipujte......
{ RULETA.PAS                                    Copyright (c) Sulko }
{                                                                   }
{ Ide o znamu kasinovi hru. Minimalny vklad je 10 Korun.            }
{ Lavym tlacitkom mysi v hracom poli zvysujem stavku o 10,          }
{ pravym tlacitkom mysi v hracom poli znizujem stavku o 10.         }
{ Kredit je teoreticky nevycerpatelny, takze tipujte......          }
{                                                                   }
{ Author: Peter Sulko                                               }
{ Date  : 2003                                 http://www.trsek.com }
 
Program RULETA;
Uses Dos, Crt, Graph, RULE01;
 
const Cervene=[1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36];
      Cierne=[2,4,6,8,10,11,13,15,17,20,22,24,26,28,29,31,33,35];
 
var GD,GM,Bu,X,Y,Xp,Yp: Integer;
    i : Word;
    R : Registers;
    Volba,Tip : Byte;
    T,OP : Array[1..133] of Word;
    V : Array[1..20] of String[2];
    Vklad : Longint;
    Kredit : Real;
    Cislo : Byte;
 
Procedure POHYB(var Bu,X,Y:Integer);   { pohyb kurzora mysi, zistuje polohu }
  begin
    R.ax:=3;  Intr($33,R);
    Bu:=R.bx;  X:=R.cx;  Y:=R.dx;  { do premennych ulozi aktualne hodnoty bu,x,y }
    while R.bx<>0 do               { ak sa stlaci tlacitko, vyhodnoti sa az po jeho uvolneni }
      begin  R.ax:=3;  Intr($33,R);  end;
  end;
 
Procedure ZHASNI;  { zhasne kurzor mysi }
  begin
    R.ax:=2;  Intr($33,R);
  end;
 
Procedure SVIET;  { zobrazi sa kurzor mysi }
  begin
    R.ax:=1;  Intr($33,R);
  end;
 
Procedure SIET;
  var P01 : Byte;
  begin
    ZHASNI;
    SetColor(7);
    for P01:=0 to 13 do
      Line(50+P01*45,70,50+P01*45,205);
    for P01:=0 to 3 do
      Line(50,70+P01*45,635,70+P01*45);
 
    MoveTo(50,70); LineTo(5,70); LineTo(5,205); LineTo(50,205);
    LineTo(50,295); LineTo(590,295); LineTo(590,205);
    Line(50,250,590,250);
    Line(230,205,230,295);
    Line(410,205,410,295);
    Line(140,250,140,295);
    Line(320,250,320,295);
    Line(500,250,500,295);
    SVIET;
  end;
 
Procedure STVORCE;
  begin
    ZHASNI;
    SetFillStyle(0,0); Bar(5,70,635,295);
    SetFillStyle(1,2); Bar(5,70,50,205); { 0}
    SetFillStyle(1,4);
    Bar( 50, 70, 95,115); { 1}
    Bar( 50,160, 95,205); { 3}
    Bar( 95,115,140,160); { 5}
    Bar(140, 70,185,115); { 7}
    Bar(140,160,185,205); { 9}
    Bar(185,160,230,205); {12}
    Bar(230,115,275,160); {14}
    Bar(275, 70,320,115); {16}
    Bar(275,160,320,205); {18}
    Bar(320, 70,365,115); {19}
    Bar(320,160,365,205); {21}
    Bar(365,115,410,160); {23}
    Bar(410, 70,455,115); {25}
    Bar(410,160,455,205); {27}
    Bar(455,160,500,205); {30}
    Bar(500,115,545,160); {32}
    Bar(545, 70,590,115); {34}
    Bar(545,160,590,205); {36}
    SetTextStyle(0,0,2);
    SetColor(0);
    OutTextXY( 68, 88,'1');
    OutTextXY( 68,178,'3');
    OutTextXY(113,133,'5');
    OutTextXY(158, 88,'7');
    OutTextXY(158,178,'9');
    OutTextXY(193,178,'12');
    OutTextXY(238,133,'14');
    OutTextXY(283,88,'16');
    OutTextXY(283,178,'18');
    OutTextXY(328,88,'19');
    OutTextXY(328,178,'21');
    OutTextXY(373,133,'23');
    OutTextXY(418,88,'25');
    OutTextXY(418,178,'27');
    OutTextXY(463,178,'30');
    OutTextXY(508,133,'32');
    OutTextXY(553,88,'34');
    OutTextXY(553,178,'36');
 
    SetColor(4);
    OutTextXY( 68,133,'2');
    OutTextXY(113,88,'4');
    OutTextXY(113,178,'6');
    OutTextXY(158,133,'8');
    OutTextXY(193,88,'10');
    OutTextXY(193,133,'11');
    OutTextXY(238,88,'13');
    OutTextXY(238,178,'15');
    OutTextXY(283,133,'17');
    OutTextXY(328,133,'20');
    OutTextXY(373,88,'22');
    OutTextXY(373,178,'24');
    OutTextXY(418,133,'26');
    OutTextXY(463,88,'28');
    OutTextXY(463,133,'29');
    OutTextXY(508,88,'31');
    OutTextXY(508,178,'33');
    OutTextXY(553,133,'35');
    SetColor(15);
    OutTextXY( 21,133,'0');
    OutTextXY(598, 88,'1R');
    OutTextXY(598,133,'2R');
    OutTextXY(598,178,'3R');
    OutTextXY(101,223,' 1-12');
    OutTextXY(281,223,'13-24');
    OutTextXY(461,223,'25-36');
    OutTextXY( 50,268,' 1-18');
    OutTextXY(508,268,'19-36');
    OutTextXY(162,268,'PAR');
    OutTextXY(416,268,'NEPAR');
    Bar(235,255,315,290);
 
    SetColor(15); SetFillStyle(11,1);
    Bar( 50,420,155,470); Rectangle(50,420,155,470);
    Bar(195,420,300,470); Rectangle(195,420,300,470);
    Bar(340,420,445,470); Rectangle(340,420,445,470);
    Bar(485,420,590,470); Rectangle(485,420,590,470);
    SetTextStyle(0,0,0);
    OutTextXY(80,435,'KONIEC'); OutTextXY(92,450,'HRY');
    OutTextXY(215,435,'OPAKOVANA'); OutTextXY(225,450,'STAVKA');
    OutTextXY(367,435,'NULOVAT'); OutTextXY(370,450,'STAVKU');
    OutTextXY(507,435,'ROZTOCIT'); OutTextXY(515,450,'RULETU');
    SetColor(8); SetTextStyle(2,1,4);
    OutTextXY(0,270,'ver.1.0 - (C)2003 - ING.PETER SULKO');
    SetColor(14); SetTextStyle(0,0,0);
    OutTextXY(50,330,'VKLAD V HRE:');
    OutTextXY(50,360,'KREDIT:');
    SVIET;
  end;
 
Procedure PIS_VYHRU(Vysl:Real);
  var SVklad : String[12];
      SPom,SVysl : String[30];
      P08 : Byte;
  begin
    SetFillStyle(0,0); Bar(320,310,590,390);
    SetColor(15); Rectangle(320,310,590,390); Line(320,350,590,350);
    OutTextXY(400,320,'VKLAD V KOLE');
    Str(Vklad,SVklad);
    SetColor(10);OutTextXY(455-Round(Length(SVklad)*4),335,SVklad);
    SVysl:=''; Str(Vysl:30:0,SPom);
    for P08:=1 to Length(SPom) do
      if SPom[P08]<>' ' then SVysl:=SVysl+SPom[P08];
    SetColor(15);OutTextXY(400,358,'VYHRA Z KOLA');
    SetColor(10);OutTextXY(455-Round(Length(SVysl)*4),373,SVysl);
  end;
 
Procedure PIS_VKLAD;
  var SVklad : String[12];
      P02 : Byte;
  begin
    Vklad:=0;
    for P02:=1 to 133 do Vklad:=Vklad+T[P02];
    SetFillStyle(0,0); Bar(150,330,300,340); Str(Vklad,SVklad);
    SetColor(10);SetTextStyle(0,0,0); OutTextXY(150,330,SVklad);
  end;
 
Procedure PIS_KREDIT;
  var SPom,SKredit : String[30];
      P06 : Byte;
  begin
    SetFillStyle(0,0); Bar(120,360,270,370); SKredit:='';
    Str(Kredit:30:0,SPom);
    for P06:=1 to Length(SPom) do
      if SPom[P06]<>' ' then SKredit:=SKredit+SPom[P06];
    SetColor(10);SetTextStyle(0,0,0); OutTextXY(120,360,SKredit);
  end;
 
Procedure VYHRA;
  var Vysl : Real;
      P07 : Byte;
  begin
    Vysl:=0;
    Case Cislo of 0:Vysl:=36*T[37]+18*(T[50]+T[52]+T[54])+12*(T[51]+T[53]);
                  1:Vysl:=36*T[1]+18*(T[50]+T[55]+T[57])+12*T[51]+9*T[58];
                  2:Vysl:=36*T[2]+18*(T[52]+T[55]+T[56]+T[59])+12*(T[51]+T[53])+9*(T[58]+T[60]);
                  3:Vysl:=36*T[3]+18*(T[54]+T[56]+T[61])+12*T[53]+9*T[60];
                  4:Vysl:=36*T[4]+18*(T[57]+T[62]+T[64])+9*(T[58]+T[65]);
                  5:Vysl:=36*T[5]+18*(T[59]+T[62]+T[63]+T[66])+9*(T[58]+T[60]+T[65]+T[67]);
                  6:Vysl:=36*T[6]+18*(T[61]+T[63]+T[68])+9*(T[60]+T[67]);
                  7:Vysl:=36*T[7]+18*(T[64]+T[69]+T[71])+9*(T[65]+T[72]);
                  8:Vysl:=36*T[8]+18*(T[66]+T[69]+T[70]+T[73])+9*(T[65]+T[67]+T[72]+T[74]);
                  9:Vysl:=36*T[9]+18*(T[68]+T[70]+T[75])+9*(T[67]+T[74]);
                 10:Vysl:=36*T[10]+18*(T[71]+T[76]+T[78])+9*(T[72]+T[79]);
                 11:Vysl:=36*T[11]+18*(T[73]+T[76]+T[77]+T[80])+9*(T[72]+T[74]+T[79]+T[81]);
                 12:Vysl:=36*T[12]+18*(T[75]+T[77]+T[82])+9*(T[74]+T[81]);
                 13:Vysl:=36*T[13]+18*(T[78]+T[83]+T[85])+9*(T[79]+T[86]);
                 14:Vysl:=36*T[14]+18*(T[80]+T[83]+T[84]+T[87])+9*(T[79]+T[81]+T[86]+T[88]);
                 15:Vysl:=36*T[15]+18*(T[82]+T[84]+T[89])+9*(T[81]+T[88]);
                 16:Vysl:=36*T[16]+18*(T[85]+T[90]+T[92])+9*(T[86]+T[93]);
                 17:Vysl:=36*T[17]+18*(T[87]+T[90]+T[91]+T[94])+9*(T[86]+T[88]+T[93]+T[95]);
                 18:Vysl:=36*T[18]+18*(T[89]+T[91]+T[96])+9*(T[88]+T[95]);
                 19:Vysl:=36*T[19]+18*(T[92]+T[97]+T[99])+9*(T[93]+T[100]);
                 20:Vysl:=36*T[20]+18*(T[94]+T[97]+T[98]+T[101])+9*(T[93]+T[95]+T[100]+T[102]);
                 21:Vysl:=36*T[21]+18*(T[96]+T[98]+T[103])+9*(T[95]+T[102]);
                 22:Vysl:=36*T[22]+18*(T[99]+T[104]+T[106])+9*(T[100]+T[107]);
                 23:Vysl:=36*T[23]+18*(T[101]+T[104]+T[105]+T[108])+9*(T[100]+T[102]+T[107]+T[109]);
                 24:Vysl:=36*T[24]+18*(T[103]+T[105]+T[110])+9*(T[102]+T[109]);
                 25:Vysl:=36*T[25]+18*(T[106]+T[111]+T[113])+9*(T[107]+T[114]);
                 26:Vysl:=36*T[26]+18*(T[108]+T[111]+T[112]+T[115])+9*(T[107]+T[109]+T[114]+T[116]);
                 27:Vysl:=36*T[27]+18*(T[110]+T[112]+T[117])+9*(T[109]+T[116]);
                 28:Vysl:=36*T[28]+18*(T[113]+T[118]+T[120])+9*(T[114]+T[121]);
                 29:Vysl:=36*T[29]+18*(T[115]+T[118]+T[119]+T[122])+9*(T[114]+T[116]+T[121]+T[123]);
                 30:Vysl:=36*T[30]+18*(T[117]+T[119]+T[124])+9*(T[116]+T[123]);
                 31:Vysl:=36*T[31]+18*(T[120]+T[125]+T[127])+9*(T[121]+T[128]);
                 32:Vysl:=36*T[32]+18*(T[122]+T[125]+T[126]+T[129])+9*(T[121]+T[123]+T[128]+T[130]);
                 33:Vysl:=36*T[33]+18*(T[124]+T[126]+T[131])+9*(T[123]+T[130]);
                 34:Vysl:=36*T[34]+18*(T[127]+T[132])+9*T[128];
                 35:Vysl:=36*T[35]+18*(T[129]+T[132]+T[133])+9*(T[128]+T[130]);
                 36:Vysl:=36*T[36]+18*(T[131]+T[133])+9*T[130];
                 end;
    if Cislo in [ 1..12] then Vysl:=Vysl+3*T[41];
    if Cislo in [13..24] then Vysl:=Vysl+3*T[42];
    if Cislo in [25..36] then Vysl:=Vysl+3*T[43];
    if Cislo in Cervene then Vysl:=Vysl+2*T[46];
    if Cislo in Cierne then Vysl:=Vysl+2*T[47];
    if Cislo in [1..18] then Vysl:=Vysl+2*T[44];
    if Cislo in [19..36] then Vysl:=Vysl+2*T[49];
    if Cislo in [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36] then Vysl:=Vysl+2*T[45];
    if Cislo in [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35] then Vysl:=Vysl+2*T[48];
    if Cislo in [1,4,7,10,13,16,19,22,25,28,31,34] then Vysl:=Vysl+3*T[38]; { 1R }
    if Cislo in [2,5,8,11,14,17,20,23,26,29,32,35] then Vysl:=Vysl+3*T[39]; { 2R }
    if Cislo in [3,6,9,12,15,18,21,24,27,30,33,36] then Vysl:=Vysl+3*T[40]; { 3R }
    Vklad:=0;
    for P07:=1 to 133 do Vklad:=Vklad+T[P07];
    Kredit:=Kredit+Vysl;
    PIS_KREDIT; if Vysl>0 then PIS_VYHRU(Vysl);
  end;
 
Procedure DATA(A,B:Integer);
  begin
    Xp:=A; Yp:=B;
  end;
 
Procedure POZICIA;
  begin
    case Tip of  1:Data( 65, 85);
                 2:Data( 65,130);
                 3:Data( 65,175);
                 4:Data(110, 85);
                 5:Data(110,130);
                 6:Data(110,175);
                 7:Data(155, 85);
                 8:Data(155,130);
                 9:Data(155,175);
                10:Data(200, 85);
                11:Data(200,130);
                12:Data(200,175);
                13:Data(245, 85);
                14:Data(245,130);
                15:Data(245,175);
                16:Data(290, 85);
                17:Data(290,130);
                18:Data(290,175);
                19:Data(335, 85);
                20:Data(335,130);
                21:Data(335,175);
                22:Data(380, 85);
                23:Data(380,130);
                24:Data(380,175);
                25:Data(425, 85);
                26:Data(425,130);
                27:Data(425,175);
                28:Data(470, 85);
                29:Data(470,130);
                30:Data(470,175);
                31:Data(515, 85);
                32:Data(515,130);
                33:Data(515,175);
                34:Data(560, 85);
                35:Data(560,130);
                36:Data(560,175);
                37:Data( 20,130);
                38:Data(605, 85);
                39:Data(605,130);
                40:Data(605,175);
                41:Data(133,220);
                42:Data(313,220);
                43:Data(493,220);
                44:Data( 88,265);
                45:Data(178,265);
                46:Data(268,265);
                47:Data(358,265);
                48:Data(448,265);
                49:Data(538,265);
                50:Data( 43, 85);
                51:Data( 43,108);
                52:Data( 43,130);
                53:Data( 43,153);
                54:Data( 43,175);
                55:Data( 65,108);
                56:Data( 65,153);
                57:Data( 88, 85);
                58:Data( 88,108);
                59:Data( 88,130);
                60:Data( 88,153);
                61:Data( 88,175);
                62:Data(110,108);
                63:Data(110,153);
                64:Data(133, 85);
                65:Data(133,108);
                66:Data(133,130);
                67:Data(133,153);
                68:Data(133,175);
                69:Data(155,108);
                70:Data(155,153);
                71:Data(178, 85);
                72:Data(178,108);
                73:Data(178,130);
                74:Data(178,153);
                75:Data(178,175);
                76:Data(200,108);
                77:Data(200,153);
                78:Data(223, 85);
                79:Data(223,108);
                80:Data(223,130);
                81:Data(223,153);
                82:Data(223,175);
                83:Data(245,108);
                84:Data(245,153);
                85:Data(268, 85);
                86:Data(268,108);
                87:Data(268,130);
                88:Data(268,153);
                89:Data(268,175);
                90:Data(290,108);
                91:Data(290,153);
                92:Data(313, 85);
                93:Data(313,108);
                94:Data(313,130);
                95:Data(313,153);
                96:Data(313,175);
                97:Data(335,108);
                98:Data(335,153);
                99:Data(358, 85);
               100:Data(358,108);
               101:Data(358,130);
               102:Data(358,153);
               103:Data(358,175);
               104:Data(380,108);
               105:Data(380,153);
               106:Data(403, 85);
               107:Data(403,108);
               108:Data(403,130);
               109:Data(403,153);
               110:Data(403,175);
               111:Data(425,108);
               112:Data(425,153);
               113:Data(448, 85);
               114:Data(448,108);
               115:Data(448,130);
               116:Data(448,153);
               117:Data(448,175);
               118:Data(470,108);
               119:Data(470,153);
               120:Data(493, 85);
               121:Data(493,108);
               122:Data(493,130);
               123:Data(493,153);
               124:Data(493,175);
               125:Data(515,108);
               126:Data(515,153);
               127:Data(538, 85);
               128:Data(538,108);
               129:Data(538,130);
               130:Data(538,153);
               131:Data(538,175);
               132:Data(560,108);
               133:Data(560,153);
               end;
  end;
 
Procedure KRESLI_KRUZOK;
  var STip : String[3];
  begin
    POZICIA; ZHASNI;
    SetColor(1); SetFillStyle(1,1);
    PieSlice(Xp+8,Yp+8,0,360,11);
    SetColor(14);Circle(Xp+8,Yp+8,11);
    SetTextStyle(2,0,4); STip:='';
    Str(T[Tip],STip);
    if Length(STip)<3 then OutTextXY(Xp+3,Yp+2,STip);
    if Length(STip)=3 then OutTextXY(Xp,Yp+2,STip);
    PIS_VKLAD; PIS_KREDIT;
    SVIET;
  end;
 
Procedure PIS_TIP;
    begin
    KRESLI_KRUZOK;
    if T[Tip]=0 then
      begin
      STVORCE; SIET;
      for Tip:=1 to 133 do
        if T[Tip]>0 then KRESLI_KRUZOK;
      end;
    SVIET;
  end;
 
Procedure STAVKA;
  begin
    Tip:=0;
    if (X> 65)and(X< 80)and(Y> 70)and(Y<100) then Tip:= 1;
    if (X> 65)and(X< 80)and(Y>130)and(Y<145) then Tip:= 2;
    if (X> 65)and(X< 80)and(Y>175)and(Y<190) then Tip:= 3;
    if (X>110)and(X<125)and(Y> 70)and(Y<100) then Tip:= 4;
    if (X>110)and(X<125)and(Y>130)and(Y<145) then Tip:= 5;
    if (X>110)and(X<125)and(Y>175)and(Y<190) then Tip:= 6;
    if (X>155)and(X<170)and(Y> 70)and(Y<100) then Tip:= 7;
    if (X>155)and(X<170)and(Y>130)and(Y<145) then Tip:= 8;
    if (X>155)and(X<170)and(Y>175)and(Y<190) then Tip:= 9;
    if (X>200)and(X<215)and(Y> 70)and(Y<100) then Tip:=10;
    if (X>200)and(X<215)and(Y>130)and(Y<145) then Tip:=11;
    if (X>200)and(X<215)and(Y>175)and(Y<190) then Tip:=12;
    if (X>245)and(X<260)and(Y> 70)and(Y<100) then Tip:=13;
    if (X>245)and(X<260)and(Y>130)and(Y<145) then Tip:=14;
    if (X>245)and(X<260)and(Y>175)and(Y<190) then Tip:=15;
    if (X>290)and(X<305)and(Y> 70)and(Y<100) then Tip:=16;
    if (X>290)and(X<305)and(Y>130)and(Y<145) then Tip:=17;
    if (X>290)and(X<305)and(Y>175)and(Y<190) then Tip:=18;
    if (X>335)and(X<350)and(Y> 70)and(Y<100) then Tip:=19;
    if (X>335)and(X<350)and(Y>130)and(Y<145) then Tip:=20;
    if (X>335)and(X<350)and(Y>175)and(Y<190) then Tip:=21;
    if (X>380)and(X<395)and(Y> 70)and(Y<100) then Tip:=22;
    if (X>380)and(X<395)and(Y>130)and(Y<145) then Tip:=23;
    if (X>380)and(X<395)and(Y>175)and(Y<190) then Tip:=24;
    if (X>425)and(X<440)and(Y> 70)and(Y<100) then Tip:=25;
    if (X>425)and(X<440)and(Y>130)and(Y<145) then Tip:=26;
    if (X>425)and(X<440)and(Y>175)and(Y<190) then Tip:=27;
    if (X>470)and(X<485)and(Y> 70)and(Y<100) then Tip:=28;
    if (X>470)and(X<485)and(Y>130)and(Y<145) then Tip:=29;
    if (X>470)and(X<485)and(Y>175)and(Y<190) then Tip:=30;
    if (X>515)and(X<530)and(Y> 70)and(Y<100) then Tip:=31;
    if (X>515)and(X<530)and(Y>130)and(Y<145) then Tip:=32;
    if (X>515)and(X<530)and(Y>175)and(Y<190) then Tip:=33;
    if (X>560)and(X<575)and(Y> 70)and(Y<100) then Tip:=34;
    if (X>560)and(X<575)and(Y>130)and(Y<145) then Tip:=35;
    if (X>560)and(X<575)and(Y>175)and(Y<190) then Tip:=36;
    if (X>  5)and(X< 35)and(Y> 70)and(Y<205) then Tip:=37;
    if (X>590)and(X<635)and(Y> 70)and(Y<115) then Tip:=38;
    if (X>590)and(X<635)and(Y>115)and(Y<160) then Tip:=39;
    if (X>590)and(X<635)and(Y>160)and(Y<205) then Tip:=40;
    if (X> 50)and(X<230)and(Y>205)and(Y<250) then Tip:=41;
    if (X>230)and(X<410)and(Y>205)and(Y<250) then Tip:=42;
    if (X>410)and(X<590)and(Y>205)and(Y<250) then Tip:=43;
    if (X> 50)and(X<140)and(Y>250)and(Y<295) then Tip:=44;
    if (X>140)and(X<230)and(Y>250)and(Y<295) then Tip:=45;
    if (X>230)and(X<320)and(Y>250)and(Y<295) then Tip:=46;
    if (X>320)and(X<410)and(Y>250)and(Y<295) then Tip:=47;
    if (X>410)and(X<500)and(Y>250)and(Y<295) then Tip:=48;
    if (X>500)and(X<590)and(Y>250)and(Y<295) then Tip:=49;
    if (X> 35)and(X< 65)and(Y> 70)and(Y<100) then Tip:=50;
    if (X> 35)and(X< 65)and(Y>100)and(Y<130) then Tip:=51;
    if (X> 35)and(X< 65)and(Y>130)and(Y<145) then Tip:=52;
    if (X> 35)and(X< 65)and(Y>145)and(Y<175) then Tip:=53;
    if (X> 35)and(X< 65)and(Y>175)and(Y<205) then Tip:=54;
    if (X> 65)and(X< 80)and(Y>100)and(Y<130) then Tip:=55;
    if (X> 65)and(X< 80)and(Y>145)and(Y<175) then Tip:=56;
    if (X> 80)and(X<110)and(Y> 70)and(Y<100) then Tip:=57;
    if (X> 80)and(X<110)and(Y>100)and(Y<130) then Tip:=58;
    if (X> 80)and(X<110)and(Y>130)and(Y<145) then Tip:=59;
    if (X> 80)and(X<110)and(Y>145)and(Y<175) then Tip:=60;
    if (X> 80)and(X<110)and(Y>175)and(Y<205) then Tip:=61;
    if (X>110)and(X<125)and(Y>100)and(Y<130) then Tip:=62;
    if (X>110)and(X<125)and(Y>145)and(Y<175) then Tip:=63;
    if (X>125)and(X<155)and(Y> 70)and(Y<100) then Tip:=64;
    if (X>125)and(X<155)and(Y>100)and(Y<130) then Tip:=65;
    if (X>125)and(X<155)and(Y>130)and(Y<145) then Tip:=66;
    if (X>125)and(X<155)and(Y>145)and(Y<175) then Tip:=67;
    if (X>125)and(X<155)and(Y>175)and(Y<205) then Tip:=68;
    if (X>155)and(X<170)and(Y>100)and(Y<130) then Tip:=69;
    if (X>155)and(X<170)and(Y>145)and(Y<175) then Tip:=70;
    if (X>170)and(X<200)and(Y> 70)and(Y<100) then Tip:=71;
    if (X>170)and(X<200)and(Y>100)and(Y<130) then Tip:=72;
    if (X>170)and(X<200)and(Y>130)and(Y<145) then Tip:=73;
    if (X>170)and(X<200)and(Y>145)and(Y<175) then Tip:=74;
    if (X>170)and(X<200)and(Y>175)and(Y<205) then Tip:=75;
    if (X>200)and(X<215)and(Y>100)and(Y<130) then Tip:=76;
    if (X>200)and(X<215)and(Y>145)and(Y<175) then Tip:=77;
    if (X>215)and(X<245)and(Y> 70)and(Y<100) then Tip:=78;
    if (X>215)and(X<245)and(Y>100)and(Y<130) then Tip:=79;
    if (X>215)and(X<245)and(Y>130)and(Y<145) then Tip:=80;
    if (X>215)and(X<245)and(Y>145)and(Y<175) then Tip:=81;
    if (X>215)and(X<245)and(Y>175)and(Y<205) then Tip:=82;
    if (X>245)and(X<260)and(Y>100)and(Y<130) then Tip:=83;
    if (X>245)and(X<260)and(Y>145)and(Y<175) then Tip:=84;
    if (X>260)and(X<290)and(Y> 70)and(Y<100) then Tip:=85;
    if (X>260)and(X<290)and(Y>100)and(Y<130) then Tip:=86;
    if (X>260)and(X<290)and(Y>130)and(Y<145) then Tip:=87;
    if (X>260)and(X<290)and(Y>145)and(Y<175) then Tip:=88;
    if (X>260)and(X<290)and(Y>175)and(Y<205) then Tip:=89;
    if (X>290)and(X<305)and(Y>100)and(Y<130) then Tip:=90;
    if (X>290)and(X<305)and(Y>145)and(Y<175) then Tip:=91;
    if (X>305)and(X<335)and(Y> 70)and(Y<100) then Tip:=92;
    if (X>305)and(X<335)and(Y>100)and(Y<130) then Tip:=93;
    if (X>305)and(X<335)and(Y>130)and(Y<145) then Tip:=94;
    if (X>305)and(X<335)and(Y>145)and(Y<175) then Tip:=95;
    if (X>305)and(X<335)and(Y>175)and(Y<205) then Tip:=96;
    if (X>335)and(X<350)and(Y>100)and(Y<130) then Tip:=97;
    if (X>335)and(X<350)and(Y>145)and(Y<175) then Tip:=98;
    if (X>350)and(X<380)and(Y> 70)and(Y<100) then Tip:=99;
    if (X>350)and(X<380)and(Y>100)and(Y<130) then Tip:=100;
    if (X>350)and(X<380)and(Y>130)and(Y<145) then Tip:=101;
    if (X>350)and(X<380)and(Y>145)and(Y<175) then Tip:=102;
    if (X>350)and(X<380)and(Y>175)and(Y<205) then Tip:=103;
    if (X>380)and(X<395)and(Y>100)and(Y<130) then Tip:=104;
    if (X>380)and(X<395)and(Y>145)and(Y<175) then Tip:=105;
    if (X>395)and(X<425)and(Y> 70)and(Y<100) then Tip:=106;
    if (X>395)and(X<425)and(Y>100)and(Y<130) then Tip:=107;
    if (X>395)and(X<425)and(Y>130)and(Y<145) then Tip:=108;
    if (X>395)and(X<425)and(Y>145)and(Y<175) then Tip:=109;
    if (X>395)and(X<425)and(Y>175)and(Y<205) then Tip:=110;
    if (X>425)and(X<440)and(Y>100)and(Y<130) then Tip:=111;
    if (X>425)and(X<440)and(Y>145)and(Y<175) then Tip:=112;
    if (X>440)and(X<470)and(Y> 70)and(Y<100) then Tip:=113;
    if (X>440)and(X<470)and(Y>100)and(Y<130) then Tip:=114;
    if (X>440)and(X<470)and(Y>130)and(Y<145) then Tip:=115;
    if (X>440)and(X<470)and(Y>145)and(Y<175) then Tip:=116;
    if (X>440)and(X<470)and(Y>175)and(Y<205) then Tip:=117;
    if (X>470)and(X<485)and(Y>100)and(Y<130) then Tip:=118;
    if (X>470)and(X<485)and(Y>145)and(Y<175) then Tip:=119;
    if (X>485)and(X<515)and(Y> 70)and(Y<100) then Tip:=120;
    if (X>485)and(X<515)and(Y>100)and(Y<130) then Tip:=121;
    if (X>485)and(X<515)and(Y>130)and(Y<145) then Tip:=122;
    if (X>485)and(X<515)and(Y>145)and(Y<175) then Tip:=123;
    if (X>485)and(X<515)and(Y>175)and(Y<205) then Tip:=124;
    if (X>515)and(X<530)and(Y>100)and(Y<130) then Tip:=125;
    if (X>515)and(X<530)and(Y>145)and(Y<175) then Tip:=126;
    if (X>530)and(X<560)and(Y> 70)and(Y<100) then Tip:=127;
    if (X>530)and(X<560)and(Y>100)and(Y<130) then Tip:=128;
    if (X>530)and(X<560)and(Y>130)and(Y<145) then Tip:=129;
    if (X>530)and(X<560)and(Y>145)and(Y<175) then Tip:=130;
    if (X>530)and(X<560)and(Y>175)and(Y<205) then Tip:=131;
    if (X>560)and(X<575)and(Y>100)and(Y<130) then Tip:=132;
    if (X>560)and(X<575)and(Y>145)and(Y<175) then Tip:=133;
    if Tip<>0 then
      begin
        if (Bu=1)and(T[Tip]<=980) then begin Inc(T[Tip],10); Kredit:=Kredit-10; PIS_TIP; end;
        if (Bu=2)and(T[Tip]>0) then begin Dec(T[Tip],10); Kredit:=Kredit+10; PIS_TIP; end;
      end;
  end;
 
Procedure ROZTOC;
  var P03 : Byte;
      SC : String[2];
      Code : Integer;
  begin
    SetFillStyle(0,0); Bar(320,310,590,390);
    Randomize; Cislo:=Random(37);
    Str(Cislo,SC); if Length(SC)=1 then SC:=' '+SC;
    for P03:=2 to 20 do V[P03-1]:=V[P03];
    V[20]:=SC;
    SetTextStyle(0,0,0);
    SetFillStyle(0,0); Bar(0,0,640,65);
    ZHASNI;
    for P03:=1 to 20 do
      begin
        Val(V[P03],Cislo,Code);
        if Cislo in Cervene then SetColor(4) else SetColor(7);
        if Cislo=0 then SetColor(2);
        OutTextXY(P03*30,30,V[P03]);
      end;
   VYHRA;
   for P03:=1 to 133 do
    begin OP[P03]:=T[P03]; T[P03]:=0; end;
  STVORCE; SIET; PIS_VKLAD; SVIET;
  end;
 
Procedure OPAKUJ;
  var P04 : Byte;
  begin
    STVORCE; SIET;
    for P04:=1 to 133 do T[P04]:=OP[P04];
    for P04:=1 to 133 do
      if T[P04]>0 then begin Tip:=P04; KRESLI_KRUZOK; end;
    Vklad:=0;
    for P04:=1 to 133 do Vklad:=Vklad+T[P04];
    Kredit:=Kredit-Vklad;
    PIS_KREDIT;
  end;
 
Procedure NULUJ;
  var P05 : Byte;
  begin
    STVORCE; SIET;
    Vklad:=0;
    for P05:=1 to 133 do Vklad:=Vklad+T[P05];
    Kredit:=Kredit+Vklad;
    for P05:=1 to 133 do T[P05]:=0;
    PIS_VKLAD; PIS_KREDIT;
  end;
 
BEGIN
  if RegisterBGIDriver(@PEGAVGA)<0 then Halt(1);
  if RegisterBGIFont(@PGOTH)<0 then Halt(1);
  if RegisterBGIFont(@PLITT)<0 then Halt(1);
  if RegisterBGIFont(@PSANS)<0 then Halt(1);
  if RegisterBGIFont(@PTRIP)<0 then Halt(1);
  GD:=Detect;
  InitGraph(GD,GM,'');
  for i:=1 to 133 do T[i]:=0;
  for i:=1 to 133 do OP[i]:=0;
  for i:=1 to 20 do V[i]:='';
  STVORCE; SIET; SVIET; PIS_VKLAD; PIS_KREDIT; Volba:=255; Kredit:=0;
  repeat
    Pohyb(Bu,X,Y);
    if (Bu in [1,2])and(X> 5)and(X<635)and(Y> 70)and(Y<295) then STAVKA;
    if (Bu=1)and(X>320)and(X<590)and(Y>310)and(Y<390) then
      begin SetFillStyle(0,0); Bar(320,310,590,390); end;
    if (Bu=1)and(X>485)and(X<590)and(Y>420)and(Y<470) then ROZTOC;
    if (Bu=1)and(X>195)and(X<300)and(Y>420)and(Y<470) then OPAKUJ;
    if (Bu=1)and(X>340)and(X<445)and(Y>420)and(Y<470) then NULUJ;
    if (Bu=1)and(X> 50)and(X<155)and(Y>420)and(Y<470) then Volba:=0; { KONIEC }
  until Volba=0;
  ZHASNI;CloseGraph;
END.