home *** CD-ROM | disk | FTP | other *** search
/ CD-X 1 / cdx_01.iso / games / doomino / doomino.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1995-03-05  |  54.5 KB  |  1,475 lines

  1.  program domino;
  2.   
  3.   uses crt,graph,dos,domdem;{a domdem saját készitésû unit}
  4.   type sat=record
  5.      param  : integer;
  6.     end;
  7.  var
  8.      hset:sat ;
  9.     satup:file of sat;
  10.   regs:registers;
  11.   domfogl:array[0..9,0..9] of boolean;
  12.   dirinfo : searchrec;
  13.   datumido : datetime;
  14.   helyezes,pontszam,jutalom,z,becsapo : longint;
  15.   hely :array[1..22] of integer;
  16.   ideghely :array[1..22] of integer;
  17.   xhelyek :array[1..22] of integer;
  18.   yhelyek :array[1..22] of integer;
  19.   vv:array[1..5] of integer;
  20.   ff:array[1..5] of integer;
  21.   vm:array[1..5] of integer;
  22.   fm:array[1..5] of integer;
  23.   rv:array[1..5] of integer;
  24.   rf:array[1..5] of integer;
  25.   rgb:array[1..3] of integer;
  26.   cc,kisors,sorsszam,labmutato,labhelyzet:integer;
  27.   vizdomdat:array[0..9] of string;
  28.   fugdomdat:array[0..9] of string;
  29.   neve:array[0..15] of string;
  30.   alapnev:array[0..15] of string;
  31.   posz:array[0..16] of longint;
  32.   size,ora,perc,regiperc,sec,regisec,secke:word;
  33.   p,p1,p2,p3,p4:pointer;
  34.   ii,q,h,m,no,pont,bonusz,idegstring,utvonal : string;
  35.   kirdom,xmod,ymod,mu,domdel,szam,betu,szamszam,a1,b1,c1,d1,a,b,c,d,e,f,g,k,ra,rb: integer;
  36.   vizmut,fugmut,hossz,kirdomh,kirdom1,kirdom2,gb,gm,hiba,mutato:integer;
  37.   oraszin,dominoszin,idegszam,idegszin:integer;
  38.  
  39.   procedure terminator;{kép összemenés}
  40.      begin
  41.       setfillstyle(1,0);
  42.        for i:=0 to 120 do   {alulról és felülrôl növekvô téglalapok}
  43.               begin               {szûkitik a képet}
  44.                bar(0,0,639,i*2);
  45.                bar(0,480-i*2,639,479);
  46.                delay((a1-1)*15);
  47.               end;
  48.     setfillstyle(1,15);bar(0,240,639,241);
  49.     setfillstyle(1,0);
  50.     for i:=0 to 320 do {a középsô fehér vonal ponttá zsugorodik}
  51.                 begin
  52.                  bar(0,240,i,241);
  53.                  bar(640-i,240,639,241);
  54.                  delay(a1*5);
  55.                 end;
  56.     setfillstyle(1,green);setcolor(green);
  57.     fillellipse(320,240,2,1); {a pont elsötétül}
  58.      for i:=63 downto 0 do
  59.          begin
  60.           setrgbpalette(green,i,i,i);
  61.           delay((a1-1)*16);
  62.          end;
  63.    end;
  64.  
  65.   procedure szovegszet;{a bejövô szöveg hosszából kiszámitja a szöveg}
  66.     begin                {pozicionálását majd egyesével növekedve}
  67.                          {kiirja azt}
  68.        setcolor(lightcyan);settextstyle(1,0,6);{szin,méretállitás}
  69.        settextjustify(lefttext,centertext);{pozicionálás középre}
  70.        vizmut:=(640-textwidth(pont)) div 2;{poziciószámitás}
  71.        for i:=1 to length(pont) do
  72.                begin
  73.                 idegstring:=copy(pont,1,i);
  74.                 setcolor(lightcyan);
  75.                 outtextxy(vizmut,fugmut,idegstring);
  76.                 delay(a1*50);
  77.                end;
  78.     end;
  79.  
  80.   procedure achtung;{feliratot helyez a képernyôre,a sokachtung rutin hivja}
  81.     begin
  82.       setcolor(idegszin);
  83.       outtextxy(320,fugmut,'Figyelem!    Warning!    Achtung!    Vnyimannyie!');
  84.     end;
  85.  
  86.   procedure sokachtung;{az achtung rutin segitségével figyelmeztetô szöveget}
  87.     begin               {küld a képernyôre}
  88.      repeat
  89.         idegszin:=red;fugmut:=10;achtung;{szinállitás,helyzetállitás}
  90.         idegszin:=lightred;fugmut:=450;achtung;
  91.         delay(a1*300);            {várakozás}
  92.          idegszin:=red;fugmut:=450;achtung;
  93.          idegszin:=lightred;fugmut:=10;achtung;
  94.          delay(a1*300);
  95.       until keypressed;{billenytûnyomásig vár}
  96.     end;
  97.  
  98.   procedure belekotor;{filehiba esetén hibaüzenetet ad}
  99.     begin
  100.      cleardevice; {képernyôtörlés}
  101.       setcolor(lightcyan);settextstyle(1,0,6);
  102.       settextjustify(lefttext,centertext);
  103.        pont:='Ugye belejavitottál';fugmut:=70;szovegszet;
  104.        pont:='valamelyik file-ba?';fugmut:=130;szovegszet;
  105.        pont:='Sajnos,ezt a program';fugmut:=270;szovegszet;
  106.        pont:='nem viseli el!!!';fugmut:=330;szovegszet;
  107.      settextstyle(1,0,3);settextjustify(centertext,centertext);
  108.       sokachtung;
  109.     terminator;cleardevice;closegraph;halt;{grafikus lezárás}
  110.    end;
  111.  
  112.   procedure labki;{a sétáló egér lábait rajzolja meg az aktuális}
  113.     begin             {lábhelyzetnek megfelelôen}
  114.      if labmutato=1 then labhelyzet:=-3;  {4.láb}
  115.      if labmutato=2 then labhelyzet:=0;   {3.láb}
  116.      if labmutato=3 then labhelyzet:=+3;  {2.láb}
  117.      if labmutato=4 then labhelyzet:=0;   {1.láb}
  118.          line(30,180,30-labhelyzet,185);line(35,180,35+labhelyzet,185);
  119.          line(55,180,55-labhelyzet,185);line(60,180,60+labhelyzet,185);
  120.      end;
  121.  
  122.   procedure labtorles;
  123.     begin   {törlôszinnel meghivja a lábki rutint}
  124.      setcolor(0);
  125.      labki;
  126.     end; 
  127.  
  128.   procedure labrajz;
  129.     begin   {rajzolószinnel meghivja a lábki rutint}
  130.      setcolor(lightgray);
  131.      labki;
  132.     end;
  133.  
  134.   procedure egergond;{ha a setupban egér lett beálliva de az nincs}
  135.     begin            {betöltve,a program hibával leáll}
  136.      cleardevice;   {rajzol egy egeret,ami sétál a képernyôn,majd megdöglik}
  137.      setcolor(lightgray);setfillstyle(1,lightgray);setlinestyle(0,3,lightgray);
  138.      line(5,180,65,180);    {farok} {világosszürke az egér}
  139.      ellipse(45,180,0,180,20,15);floodfill(45,175,lightgray); {test}
  140.      fillellipse(57,168,5,6); {fül}
  141.      setcolor(0);ellipse(57,168,160,230,5,5);{fülcimpa}
  142.      setcolor(lightred);setfillstyle(1,lightred);
  143.      fillellipse(58,175,1,1);   {szem}
  144.      putpixel(58,175,0);        {szembogár}
  145.      {kirajzolja a négy lépésfázist,mindegyiket elteszi a memóriába}
  146.      labmutato:=1;labrajz;size:=imagesize(0,157,70,185);getmem(p1,size);
  147.                           getimage(0,157,70,185,p1^);labtorles;
  148.      labmutato:=2;labrajz;size:=imagesize(0,157,70,185);getmem(p2,size);
  149.                           getimage(0,157,70,185,p2^);labtorles;
  150.      labmutato:=3;labrajz;size:=imagesize(0,157,70,185);getmem(p3,size);
  151.                           getimage(0,157,70,185,p3^);labtorles;
  152.      labmutato:=4;labrajz;size:=imagesize(0,157,70,185);getmem(p4,size);
  153.                           getimage(0,157,70,185,p4^);
  154.      setcolor(lightred);settextstyle(1,0,6);
  155.      outtextxy(10,176,'Nincs egér betöltve!');
  156.      for i:=0 to 26 do {a mozzanatokat váltogatva kelti a járás látszatát}
  157.        begin
  158.          for k:=0 to 4 do putimage(i*20+k,157,p1^,0);delay(a1*50);
  159.          for k:=0 to 4 do putimage(i*20+5+k,157,p2^,0);delay(a1*50);
  160.          for k:=0 to 4 do putimage(i*20+10+k,157,p3^,0);delay(a1*50);
  161.          for k:=0 to 4 do putimage(i*20+15+k,157,p4^,0);delay(a1*50);
  162.        end;
  163.      sound(8500);delay(a1*200);nosound; {egérsikoly,visszalépés}
  164.          for k:=4 downto 0 do putimage(i*20+15+k,157,p1^,0);delay(a1*50);
  165.          for k:=4 downto 0 do putimage(i*20+10+k,157,p2^,0);delay(a1*50);
  166.          for k:=4 downto 0 do putimage(i*20+5+k,157,p3^,0);delay(a1*50);
  167.          for k:=4 downto 0 do putimage(i*20+k,157,p4^,0);delay(a1*50);
  168.       for i:=0 to 100 do  {zuhanás}
  169.                 begin
  170.                  putimage(520,i*3+157,p3^,0);delay(a1-1);
  171.                 end;
  172.       {döglött egér}
  173.       setcolor(0);setfillstyle(1,0);bar(535,450,595,480);
  174.       setcolor(lightgray);setfillstyle(1,lightgray);
  175.       line(540,460,585,460); {has}
  176.       ellipse(565,460,180,0,20,15);floodfill(565,465,lightgray);{test}
  177.       ellipse(545,470,90,270,20,10);{farok}
  178.       fillellipse(577,472,5,6);{fül}
  179.       line(550,455,550,460);{lábak}
  180.       line(555,455,555,460);
  181.       line(575,455,575,460);
  182.       line(580,455,580,460);
  183.       setcolor(darkgray);line(576,465,580,465);
  184.       setcolor(0);ellipse(577,472,130,230,5,5);{fülcimpa}
  185.      repeat until keypressed;
  186.      terminator;cleardevice;closegraph;halt;
  187.     end;
  188.  
  189.   procedure klikk;{a setup beállitásától függôen kiir egy space vagy egy}
  190.     begin                     {klikk feliratot}
  191.        if b1=2 then idegstring:='klikk'
  192.             else idegstring:='space';
  193.           settextstyle(1,0,2);setcolor(white);outtextxy(570,440,idegstring);
  194.     end;
  195.  
  196.   procedure egerkikapcs;{eltünteti az egér nyilát}
  197.      begin
  198.       regs.ax:=2;intr($33,regs);
  199.      end;
  200.  
  201.   procedure egerbekapcs;{megjeleniti az egér nyilát}
  202.      begin
  203.       regs.ax:=1;intr($33,regs);
  204.      end;
  205.  
  206.   procedure egerlekerdez;{lekérdezi a gombok állapotát,valamint az egér}
  207.      begin                {aktuális koordinátáit}
  208.       regs.ax:=3;intr($33,regs);
  209.      end;
  210.  
  211.   procedure egervar1;{vár amig le nincs nyomva egy gomb az egéren}
  212.      begin
  213.       repeat
  214.        regs.ax:=3;intr($33,regs);
  215.       until regs.bx<>1;
  216.      end;
  217.  
  218.   procedure egervar0;{vár amig el nem engedünk minden gombot az egéren}
  219.      begin
  220.       repeat
  221.        regs.ax:=3;intr($33,regs);
  222.       until regs.bx<>0;
  223.      end;
  224.  
  225.   procedure futty; {bekapcsolt órafüttynél egy rövidet sipol}
  226.      begin
  227.        if d1=1 then begin {óraaktivitásvizsgálat}
  228.                        sound(1000);delay(a1*50);nosound;
  229.                     end;
  230.      end;
  231.  
  232.   procedure pannongsm;{dallamot játszik}
  233.        begin
  234.       sound(500);delay(a1*22);nosound;delay(a1*153);
  235.       sound(450);delay(a1*22);nosound;delay(a1*153);
  236.       sound(500);delay(a1*22);nosound;delay(a1*153);
  237.       sound(450);delay(a1*22);nosound;delay(a1*81);
  238.       sound(500);delay(a1*221);nosound;delay(a1*261);
  239.       sound(500);delay(a1*22);nosound;delay(a1*153);
  240.       sound(550);delay(a1*230);nosound;delay(a1*153);
  241.       sound(450);delay(a1*22);nosound;delay(a1*153);
  242.       sound(500);delay(a1*270);
  243.        for i:=500 downto 100 do {hanghajlitás lefelé}
  244.             begin
  245.               sound(i);delay(a1*1);
  246.             end;
  247.     nosound;
  248.    end;
  249.  
  250.   procedure taps; {a hangmagasság gyors véletlen változtatásával}
  251.       begin        {taps effektus hatást kelt}
  252.        for k:=0 to 999 do
  253.             begin
  254.             ra:=random(3000);
  255.             sound(ra);delay(a1*1);
  256.              sound(3000-ra);delay(a1*1);
  257.             end;
  258.     nosound;
  259.    end;
  260.  
  261.   procedure filemegnyitas;   {megnyitja a rekord.dat file-t}
  262.      type rek=record
  263.           nev : string[15];
  264.           po : longint;
  265.      end;
  266.      var
  267.          drek:rek;
  268.          rekord:file of rek; {rekord...lista}
  269.   begin   {kurrens könyvtárat megállapitja,ha az nem \ jelre végzôdik,megtoldja egy \ jellel}
  270.    getdir(0,utvonal);if copy(utvonal,length(utvonal),1)<>'\' then utvonal:=utvonal+'\';
  271.    assign(rekord,utvonal+'rekord.dat');  {megnyitja}
  272.  {$I-} reset(rekord); if ioresult<>0 then {ha nincs a lemezen,ir egy alapértelmezett rekord.,dat-ot}
  273.                                  begin
  274.                                   rewrite(rekord); {ùj megnyitás}
  275.                                    becsapo:=random(255);
  276.                                     with drek do
  277.                                                  begin
  278.                                                   nev:='Feltoresvedelem.....';
  279.                                                   po:=becsapo;
  280.      {15 kezdô név,és pontszám}                   write(rekord,drek);
  281.                                                  end;
  282.      alapnev[1]:='Pistike I.o.tan';alapnev[2]:='Kovács II. tiz.';alapnev[3]:='II.János Pál';alapnev[4]:='Bobby Ewing';
  283.      alapnev[5]:='Egri János';alapnev[6]:='Én,a Gyula,...';alapnev[7]:='Columbo felügy.';alapnev[8]:='Zorró';
  284.      alapnev[9]:='Besenyô Pistabá';alapnev[10]:='Bill Clinton';alapnev[11]:='Mr. Bean';alapnev[12]:='Kató néni';
  285.      alapnev[13]:='Samantha Fox';alapnev[14]:='Michael Jackson';alapnev[15]:='Torgyán József';
  286.      {ezeket felirja a rekord.dat-ba}      for i:=1 to 15 do
  287.                                             begin
  288.                                               with drek do
  289.                                                  begin
  290.                                                   nev:=alapnev[i];
  291.                                                   po:=1600-(i*100);
  292.                                                   write(rekord,drek);
  293.                                                  end;
  294.                                             end;
  295.                                  end;
  296.                              close(rekord); {lezárja a file-t}
  297.     reset(rekord);           {olvasásra megnyitja}
  298.     for i:=0 to 15 do
  299.            begin            {beolvassa a rekordlistát}
  300.              with drek do
  301.               begin
  302.                read(rekord,drek);
  303.                neve[i]:=nev;
  304.                posz[i]:=po;
  305.               end;
  306.            end;
  307.       close(rekord); {lezárja a file-t}
  308.   end;
  309.  
  310.   procedure hanyadik;   {A pontszám és a rekordlista összevetésével}
  311.     begin                {kiszámolja az aktuális helyezést}
  312.      k:=0;posz[16]:=-1;
  313.       repeat
  314.        k:=k+1
  315.       until pontszam>=posz[k] ;
  316.      helyezes:=k;
  317.     end;
  318.   
  319.   procedure pontosido;  {megjeleniti az órát,illetve sipol}
  320.    begin
  321.      if d1=0 then oraszin:=blue;  {fütty kikapcsolva}
  322.      if d1=1 then oraszin:=lightblue; {fütty bekapcsolva}
  323.    gettime(ora,perc,sec,secke);{rendszeridôlekérdezés}
  324.    str(ora,h);str(perc,m);
  325.    if sec<>regisec then {ha nem ugrott a sec,nem ir ki semmit}
  326.     begin
  327.      regisec:=sec;
  328.       if perc<>regiperc then  {ha nem ugrott a perc,nem ir ki semmit}
  329.        begin
  330.         mu:=mu+1; {percenként eggyel megdobja a képernyôvédelmet vezérlô mutatót}
  331.         if ora<10 then h:=' '+h;{egy karakteres idôket 0-val kibôviti}
  332.         if perc<10 then m:='0'+m;
  333.          if b1=2 then egerkikapcs;    {órakiirás}
  334.          regiperc:=perc;setfillstyle(1,0);bar(545,10,630,40);
  335.          settextstyle(1,0,2);setcolor(oraszin);
  336.          outtextxy(500,10,'Idô:');outtextxy(557,10,h);
  337.          outtextxy(587,10,':');outtextxy(595,10,m);futty;
  338.          if b1=2 then egerbekapcs;
  339.          if ora=12 then
  340.            begin
  341.              if perc=0 then
  342.                 begin
  343.                   setfillstyle(1,0);bar(165,00,475,90);bar(45,160,595,280);
  344.                   settextstyle(1,0,9);
  345.                   repeat
  346.                    setcolor(lightred);outtextxy(55,160,'Ebédszünet!');delay(a1*500);
  347.                    bar(45,160,595,280);delay(a1*300);
  348.                   until keypressed;terminator;cleardevice;closegraph;halt
  349.                 end;
  350.            end;
  351.        end;
  352.     if perc=59 then {59 perc,55 sec-tôl 5 sipjelet ad}
  353.       begin
  354.         if sec>55 then futty;
  355.       end;
  356.     if perc=0 then {kerek óra,kerek perc,kerek mp-kor hosszùt sipol}
  357.       begin
  358.        if sec=0 then
  359.          begin
  360.            if d1=1 then begin
  361.                           sound(1000);delay(a1*1000);nosound;
  362.                         end;
  363.          end;
  364.       end;
  365.     end;
  366.   end;
  367.  
  368.  procedure konv;{'cg'cg-bol szamot csinal a betube}
  369.   begin
  370.     if cg='a' then betu:=65;
  371.     if cg='b' then betu:=66;
  372.     if cg='c' then betu:=67;
  373.     if cg='d' then betu:=68;
  374.     if cg='e' then betu:=69;
  375.     if cg='f' then betu:=70;
  376.     if cg='g' then betu:=71;
  377.     if cg='h' then betu:=72;
  378.     if cg='i' then betu:=73;
  379.     if cg='j' then betu:=74;
  380.     if cg='1' then szamszam:=1;
  381.     if cg='2' then szamszam:=2;
  382.     if cg='3' then szamszam:=3;
  383.     if cg='4' then szamszam:=4;
  384.   end;
  385.  
  386.  procedure kepernyoszovegek;{a helyezes,pontszam,jutalom mutatókat stringgé}
  387.   begin                     {konvertálja,és kiirja a képernyôre}
  388.     settextjustify(lefttext,toptext);{pozicionálás balról és felülrôl}
  389.     if b1=2 then egerkikapcs;
  390.     hanyadik;
  391.      settextstyle(2,0,5);setcolor(lightgreen);
  392.    for i:=1 to 5 do
  393.     begin
  394.       outtextxy(0,i*80+25,chr(i+64));
  395.       outtextxy(634,i*80+25,chr(i+69));
  396.     end;
  397.    settextstyle(3,0,1);
  398.    for i:=1 to 4 do outtextxy(i*80+115,460,chr(i+48));
  399.     {helyezés}
  400.     setfillstyle(1,0);bar(70,10,140,60);
  401.     settextstyle(1,0,6);setcolor(10);
  402.     if helyezes>15 then no:='-'
  403.                    else str(helyezes,no);
  404.     outtextxy(0,0,'Nº:'+no);
  405.       {pontszam}
  406.       setfillstyle(1,0);bar(165,37,475,87);
  407.       settextstyle(1,0,5);setcolor(15);
  408.       str(pontszam,pont);outtextxy(175,32,'Pont:'+pont);
  409.         {bonus}
  410.         setfillstyle(1,0);bar(190,0,440,35);
  411.         settextstyle(1,0,4);setcolor(4);
  412.         str(jutalom,bonusz);outtextxy(200,0,'Bónusz:'+bonusz);
  413.         {h e l p }
  414.           settextstyle(1,0,2);setcolor(lightblue);
  415.           outtextxy(500,40,'ESC F1 F2 F3');
  416.     if b1=2 then egerbekapcs;
  417.    end;
  418.  
  419.   procedure alapadatok;
  420.    begin
  421.     for i:=1 to 22 do hely[i]:=100;{a dominóhelyeket logikailag törli}
  422.     for i:=1 to 5 do
  423.      begin
  424.       yhelyek[i]:=(i-1)*80+80;yhelyek[i+5]:=yhelyek[i];{konstansokat csinál}
  425.      end;                {a késôbbi vizszintes dominókitevésekhez}
  426.     for i:=1 to 3 do          
  427.      begin                      {a függôleges dominókitevésekhez}
  428.       yhelyek[(i*4)+7]:=(i-1)*150+101;for j:=8 to 11 do yhelyek[(i*4)+j]:=yhelyek[(i*4)+7];
  429.      end;
  430.     for i:= 1 to 5 do
  431.      begin
  432.       xhelyek[i]:=10;xhelyek[i+5]:=490;
  433.      end;
  434.     for i:=1 to 4 do
  435.      begin
  436.       xhelyek[i+10]:=(i-1)*80+165;xhelyek[i+14]:=(i-1)*80+165;xhelyek[i+18]:=(i-1)*80+165;
  437.      end;
  438.    {dominópontminta definiálása}
  439.      vizdomdat[0]:='000000000';vizdomdat[1]:='000010000';vizdomdat[2]:='100000001';
  440.      vizdomdat[3]:='100010001';vizdomdat[4]:='101000101';vizdomdat[5]:='101010101';
  441.      vizdomdat[6]:='111000111';vizdomdat[7]:='110101111';vizdomdat[8]:='111101111';
  442.      vizdomdat[9]:='111111111';
  443.       for i:=0 to 9 do fugdomdat[i]:=vizdomdat[i];
  444.      fugdomdat[6]:='101101101';
  445.    for i:=0 to 9 do
  446.      begin
  447.       for j:=0 to 9 do {a dominófoglaltsági táblát logikailag kinullázza}
  448.               begin
  449.                domfogl[i,j]:=false;
  450.                domfogl[j,i]:=false;
  451.               end;
  452.      end;
  453.  end;
  454.  
  455.  procedure dominotorles; {domdel;az adott helyszámù dominót törli}
  456.   begin
  457.       if b1=2 then egerkikapcs;{kikapcsolja az egeret,hogy az grafikailag}
  458.       hely[domdel]:=100;          {ne zavarjon}
  459.       if domdel>5 then xmod:=480
  460.                   else xmod:=0;
  461.       if domdel>5 then domdel:=domdel-5;
  462.          setfillstyle(1,0);
  463.           bar(xmod+9,domdel*80-7,xmod+157,domdel*80+71);
  464.   if b1=2 then egerbekapcs;
  465.   end;
  466.  
  467.  procedure tolas;{-} {a függôleges dominókat eggyel lentebb tolja}
  468.    begin
  469.    if b1=2 then egerkikapcs;
  470.    size:=imagesize(165,80,481,479);getmem(p,size);{memóriahelyfoglalás}
  471.    getimage(165,80,481,479,p^);setfillstyle(1,0);{lefényképezés}
  472.    for i:=1 to 15 do putimage(165,i*10+80,p^,0);{ùj helyre kirakás 15-ször}
  473.    freemem(p,size); {memóriafelszabaditás}
  474.    pontszam:=pontszam+100;jutalom:=jutalom+9;
  475.    kepernyoszovegek;
  476.       for i:=19 to 22 do  {4 alsó eldobva}
  477.        begin
  478.         kirdom1:=hely[i] div 10;kirdom2:=hely[i] mod 10;
  479.         domfogl[kirdom1,kirdom2]:=false;domfogl[kirdom2,kirdom1]:=false;
  480.        end;
  481.       for i:=0 to 3 do   {leléptetés}
  482.        begin
  483.         hely[i+19]:=hely[i+15];hely[i+15]:=hely[i+11];hely[i+11]:=100
  484.        end;
  485.     if b1=2 then egerbekapcs;
  486.    end;
  487.  
  488.  procedure dominokirak; {kirdom}{az adott helyszámra kiteszi a dominót}
  489.   begin
  490.     if b1=2 then egerkikapcs;
  491.     kirdomh:=kirdom div 100;  {hely}
  492.     kirdom1:=(kirdom-(kirdomh*100)) div 10;  {dominó bal fele}
  493.     kirdom2:=(kirdom-(kirdomh*100))-(kirdom1*10); {dominó jobb oldala}
  494.      hely[kirdomh]:=kirdom1*10+kirdom2;
  495.      {teglalaprajz}
  496.       if kirdomh<11 then xmod:=140
  497.                     else xmod:=70;
  498.       ymod:=210-xmod;
  499.       setfillstyle(1,dominoszin);setcolor(lightgray);
  500.       bar3d(xhelyek[kirdomh],yhelyek[kirdomh],xhelyek[kirdomh]+xmod,yhelyek[kirdomh]+ymod,6,true);
  501.       setfillstyle(1,dominoszin);
  502.       floodfill(xhelyek[kirdomh]+4,yhelyek[kirdomh]-2,lightgray);
  503.       if kirdomh<11 then floodfill(xhelyek[kirdomh]+xmod+4,yhelyek[kirdomh]+ymod-5,lightgray);
  504.       if kirdomh>10 then floodfill(xhelyek[kirdomh]+xmod+4,yhelyek[kirdomh]+ymod-75,lightgray);
  505.       setlinestyle(0,3,3);setcolor(lightgray);
  506.      if kirdomh<11 then
  507.       begin
  508.        xmod:=140;ymod:=70;
  509.        line(xhelyek[kirdomh]+70,yhelyek[kirdomh]+5,xhelyek[kirdomh]+70,yhelyek[kirdomh]+65);
  510.       end;
  511.      if kirdomh>10 then
  512.       begin
  513.        xmod:=70;ymod:=140;
  514.        line(xhelyek[kirdomh]+5,yhelyek[kirdomh]+70,xhelyek[kirdomh]+65,yhelyek[kirdomh]+70);
  515.       end;
  516.   {pottyok}
  517.     {bal vagy felso rajz}
  518.     setlinestyle(0,0,1);
  519.       for i:=0 to 2 do    {3*3 pötty}
  520.        begin
  521.         for j:=1 to 3 do
  522.          begin
  523.           if kirdomh<11 then
  524.            begin
  525.             if copy(vizdomdat[kirdom1],i*3+j,1)='0' then k:=dominoszin
  526.                                                     else k:=15;
  527.            end;
  528.           if kirdomh>10 then
  529.            begin
  530.             if copy(fugdomdat[kirdom1],i*3+j,1)='0' then k:=dominoszin
  531.                                                     else k:=15;
  532.            end;
  533.           setfillstyle(1,k);setcolor(k);
  534.           fillellipse(xhelyek[kirdomh]+(j*20)-5,yhelyek[kirdomh]+(i*20)+15,6,6);
  535.          end;
  536.        end;
  537.     {jobb vagy also rajz}
  538.     if kirdomh<11   then xmod:=70
  539.                     else xmod:=0;
  540.      ymod:=70-xmod;
  541.       for i:=0 to 2 do
  542.        begin
  543.         for j:=1 to 3 do
  544.          begin
  545.           if kirdomh<11 then
  546.            begin
  547.             if copy(vizdomdat[kirdom2],i*3+j,1)='0' then k:=dominoszin
  548.                                                     else k:=15;
  549.            end;
  550.           if kirdomh>10 then
  551.            begin
  552.             if copy(fugdomdat[kirdom2],i*3+j,1)='0' then k:=dominoszin
  553.                                                     else k:=15;
  554.            end;
  555.             setfillstyle(1,k);setcolor(k);
  556.           fillellipse(xhelyek[kirdomh]+(j*20)-5+xmod,yhelyek[kirdomh]+(i*20)+15+ymod,6,6);
  557.          end;
  558.        end;
  559.     if b1=2 then egerbekapcs;
  560.   end;
  561.  
  562.   procedure kepernyovissza;{visszaállitja az eredeti játéktáblát}
  563.     begin
  564.      if b1=2 then egerkikapcs;
  565.      cleardevice;
  566.        for ra:=1 to 22 do {22 dominót kirak}
  567.          begin
  568.            if hely[ra]<>100 then {az üres helyet kihagyja}
  569.              begin
  570.                kirdom:=ra*100+hely[ra];dominokirak;
  571.              end;
  572.          end;
  573.        kepernyoszovegek;regiperc:=66;mu:=0;
  574.       if b1=2 then egerbekapcs;
  575.    end;
  576.  
  577.  procedure egyki;{rizikónál egy szines dominót kitesz}
  578.    label 1;
  579.      begin
  580.         kirdom:=random(2200)+100;
  581.         1:
  582.         dominoszin:=random(14)+1;if dominoszin=lightgray then goto 1;
  583.         dominokirak;
  584.      end;
  585.  
  586.   procedure csikok;{képernyôvédelemnél rajzolja a poligonokat}
  587.    begin
  588.      for i:=1 to 5 do begin
  589.                   vv[i]:=vv[i]+vm[i];
  590.                     if vv[i]<1 then vm[i]:=1;
  591.                     if vv[i]>640 then vm[i]:=-1;
  592.                    ff[i]:=ff[i]+fm[i];
  593.                     if ff[i]<1 then fm[i]:=1;
  594.                     if ff[i]>70 then fm[i]:=-1;
  595.                  end;
  596.      if random(50)=1 then idegszin:=random(7)+9;{véletlen szinváltás}
  597.      if random(99)=1 then vm[random(5)+1]:=-1;{véletlen helyváltás}
  598.      if random(99)=1 then fm[random(5)+1]:=1;   {  -''-  }
  599.       for i:=1 to 5 do begin {5 szögô a poligon}
  600.               j:=i+1;
  601.                if j=6 then j:=1;
  602.                  setcolor(0);{elôzô poligon törlése}
  603.                   line(rv[i],rf[i],rv[j],rf[j]);
  604.                   line(640-rv[i],rf[i],640-rv[j],rf[j]);{tükörképe}
  605.                  setcolor(idegszin);{ùj poligon rajzolása}
  606.                   line(vv[i],ff[i],vv[j],ff[j]);
  607.                   line(640-vv[i],ff[i],640-vv[j],ff[j]);
  608.        end;
  609.       for i:=1 to 5 do begin
  610.                rv[i]:=vv[i];rf[i]:=ff[i];
  611.               end;
  612.     end;
  613.  
  614.   procedure kepernyovedelem;
  615.     begin
  616.      if b1=2 then egerkikapcs;
  617.      for i:=1 to 22 do ideghely[i]:=hely[i];{aktuális játékképet elmenti}
  618.      setcolor(0);bar(0,0,639,74);           {a késôbbi visszaállitáshoz}
  619.      settextstyle(1,0,7);setcolor(15);settextjustify(centertext,centertext);
  620.      outtextxy(320,28,'Képernyôvédelem');delay(a1*3000); {felirat}
  621.      setcolor(0);bar(0,0,639,74); {majd törlése}
  622.      for i:=1 to 5 do {poligon kezdôhelyzete}
  623.                   begin
  624.                    vv[i]:=random(320);ff[i]:=random(70);
  625.                    if random(2)=0 then vm[i]:=-1
  626.                                 else vm[i]:=1;
  627.                    if random(2)=1 then fm[i]:=-1
  628.                                 else fm[i]:=1;
  629.                   end;
  630.      if b1=1 then begin
  631.                    repeat
  632.                     for k:=1 to 7-a1*2 do csikok;
  633.                     egyki;      {várakozás gombnyomásra}
  634.                    until keypressed;cg:=readkey;
  635.                   end;
  636.      if b1=2 then begin
  637.                    repeat
  638.                     for k:=1 to 7-a1*2 do csikok;
  639.                     egyki;
  640.                     egerlekerdez;
  641.                     until regs.bx<>0;{várakozás klikkre}
  642.                   end;
  643.      for i:=1 to 22 do hely[i]:=ideghely[i];{dominók vissza}
  644.      settextjustify(lefttext,toptext);{szövegpozicionálás}
  645.      cleardevice;dominoszin:=darkgray;kepernyovissza;
  646.      egerbekapcs;
  647.     end;
  648.  
  649.    procedure forgodominovissza;
  650.      begin
  651.       hely[14]:=idegszam;
  652.      end;
  653.  
  654.    procedure rekordlistakiiratas;
  655.     begin
  656.      if b1=2 then egerkikapcs;
  657.       cleardevice;setcolor(green);settextstyle(4,1,8);
  658.       outtextxy(0,15,'Rekordlista');
  659.       for i:=1 to 15 do
  660.                     begin
  661.                      str(i,idegstring);
  662.                      if helyezes=i then setcolor(white)
  663.                                    else setcolor(lightred);
  664.                      settextstyle(1,0,3);
  665.                      outtextxy(100,i*23,idegstring+'.');
  666.                      outtextxy(170,i*23,neve[i]);
  667.                      str(posz[i],idegstring);
  668.                      outtextxy(450,i*23,idegstring);
  669.                     end;
  670.      if b1=2 then egerbekapcs;
  671.    end;
  672.  
  673.   procedure help;{kiirja a help képernyôt}
  674.    begin
  675.     if b1=2 then egerkikapcs;
  676.     cleardevice;
  677.       settextstyle(1,0,4);setcolor(white);{szin és betûméret állitás}
  678.       outtextxy(200,20,'F1 -  Help');
  679.       outtextxy(200,65,'F2 -  Uj játék');
  680.       outtextxy(200,110,'F3 -  Rekordlista');
  681.       outtextxy(140,155,'F5,F6,F7,F8 -  Fônök jön!');
  682.       outtextxy(200,200,'F10 -  Idôhang be - ki');
  683.       outtextxy(200,245,'ESC -  Játék vége');
  684.       outtextxy(180,300,'A játékszabályok az');
  685.       outtextxy(110,345,'Olvass.el! file-ban találhatók.');
  686.       settextstyle(1,0,6);
  687.       outtextxy(190,415,'Jó játékot!');
  688.       klikk;
  689.     if b1=2 then egerbekapcs;
  690.     if b1=2 then egervar1;
  691.     if b1=1 then begin
  692.                    repeat
  693.                    until keypressed;cg:=readkey;
  694.                    kepernyovissza;
  695.                  end;
  696.     if b1=2 then begin
  697.                    repeat
  698.                    egerlekerdez;
  699.                    until regs.bx=1;
  700.                    kepernyovissza;egerbekapcs;
  701.                  end;
  702.    end;
  703.  
  704.   procedure fonok;{oszlopdiagrammot rajzol a képernyôre}
  705.    begin
  706.     if b1=2 then egerkikapcs;
  707.      cleardevice;
  708.      setcolor(white);setlinestyle(0,3,2);{koordinátarendszer}
  709.      line(20,0,20,479);line(0,460,640,460);
  710.      line(20,0,17,10);line(20,0,23,10);
  711.      line(640,460,630,457);line(640,460,630,463);
  712.      for i:=1 to 10 do            {oszlopok}
  713.                 begin
  714.                  idegszam:=random(300)+30;
  715.                  idegszin:=random(13)+1;
  716.                  setcolor(lightgray);
  717.                  setfillstyle(1,idegszin);
  718.                   bar3d(i*55,458,i*55+40,idegszam,7,true);
  719.                   str((600-idegszam)*2,idegstring);
  720.                   settextstyle(1,0,2);setcolor(idegszin);
  721.                   outtextxy(i*55+5,idegszam-40,idegstring);
  722.                 end;
  723.     if b1=2 then egerbekapcs;
  724.     if b1=2 then egervar1;
  725.     if b1=1 then begin
  726.                    repeat
  727.                    until keypressed;cg:=readkey;
  728.                    kepernyovissza;
  729.                  end;
  730.     if b1=2 then begin
  731.                    repeat
  732.                    egerlekerdez;
  733.                    until regs.bx=1;
  734.                    kepernyovissza;egerbekapcs;
  735.                  end;
  736.    end;
  737.  
  738.  procedure listagombra;
  739.    begin
  740.     rekordlistakiiratas;
  741.     klikk;
  742.     if b1=1 then begin
  743.                     repeat
  744.                     until keypressed;cg:=readkey;
  745.                  end;
  746.     if b1=2 then egervar1;
  747.       if b1=2 then begin
  748.                     egerbekapcs;
  749.                     repeat
  750.                      egerlekerdez;
  751.                     until regs.bx=1;
  752.                    end;
  753.       if b1=2 then egerkikapcs;
  754.       kepernyovissza;
  755.       if b1=2 then egerbekapcs;
  756.    end;
  757.  
  758.   procedure villogtato;{a növekvô sorrendû dominókat villogtatja}
  759.    begin
  760.       for rb:=1 to 5 do
  761.                   begin
  762.                    for ra:=19 to 22 do
  763.                      begin
  764.                        dominoszin:=cyan;kirdom:=ra*100+hely[ra];dominokirak;
  765.                      end;
  766.                    for ra:=19 to 22 do
  767.                      begin
  768.                        dominoszin:=darkgray;kirdom:=ra*100+hely[ra];dominokirak;
  769.                      end;
  770.       end;
  771.    end;
  772.  
  773.   procedure hibahang;{-}
  774.    begin
  775.      for i:=0 to 150 do
  776.          begin
  777.           sound(i*4);delay(a1);
  778.          end;
  779.      for i:=150 downto 0 do
  780.          begin
  781.           sound(i*4);delay(a1);
  782.          end;
  783.      nosound;
  784.    end;
  785.  
  786.   procedure kezdodominok; {-}{kiteszi a 10 kezdô dominót}
  787.     label 1,2;
  788.    begin
  789.      for c:=1 to 10 do
  790.      begin
  791.       1:
  792.       a:=random(10);b:=random(10);
  793.       if domfogl[a,b]=true then goto 1;
  794.       if domfogl[b,a]=true then goto 1;
  795.      domfogl[a,b]:=true;domfogl[b,a]:=true;
  796.       kirdom:=(c*100)+(a*10)+b;
  797.     dominoszin:=darkgray;dominokirak;
  798.      end;
  799.     for c:=19 to 22 do {kiteszi a 4 alsó kezdô dominót}
  800.      begin
  801.       2:
  802.       a:=random(10);b:=random(10);
  803.       if domfogl[a,b]=true then goto 2;
  804.       if domfogl[b,a]=true then goto 2;
  805.      domfogl[a,b]:=true;domfogl[b,a]:=true;
  806.       kirdom:=(c*100)+(a*10)+b;
  807.     dominokirak;
  808.      end;
  809.    end;
  810.  
  811.  procedure bonkir;{kiirja a bónuszt}
  812.   begin
  813.    setfillstyle(1,0);
  814.    bar(348,400,640,460);
  815.    str(jutalom,bonusz);
  816.    settextstyle(1,0,8);setcolor(red);
  817.    outtextxy(350,380,bonusz);
  818.   end;
  819.  
  820.  procedure ponkir;{kiirja a pontot}
  821.   begin
  822.    setfillstyle(1,0);
  823.    bar(348,300,640,360);
  824.    str(pontszam,pont);
  825.    settextstyle(1,0,8);setcolor(15);
  826.    outtextxy(350,280,pont);
  827.   end;
  828.  
  829.  procedure kiskeptorl;{törli a felsô képernyôrészt}
  830.   begin
  831.    setcolor(0);setfillstyle(1,0);
  832.    bar(165,0,475,80);
  833.   end;
  834.  
  835.  procedure rizikokep;
  836.   begin
  837.    for i:=0 to 65 do
  838.     begin
  839.       kiskeptorl;
  840.        setcolor(random(14)+1);settextstyle(1,0,6);
  841.        outtextxy(180,i-60,'R i z i k ó');delay(a1*10);
  842.       end;
  843.    nosound;
  844.    delay(a1*1000);
  845.   end;
  846.  
  847.  procedure riziko; {-}{a rizikót bonyolitja le}
  848.   label 1,2,3,4,5,6,7,8,9,10,11,12;
  849.   begin
  850.    if b1=2 then egerkikapcs;
  851.    pannongsm;
  852.    idegszam:=hely[14];regiperc:=66;
  853.    if jutalom=0 then jutalom:=10;
  854.     rizikokep;
  855.     cleardevice;
  856.     settextstyle(1,0,4);setcolor(cyan);
  857.     outtextxy(50,50,'Kicsi lesz');
  858.     outtextxy(50,100,'Nagy lesz');
  859.     outtextxy(50,150,'Beiratom');
  860.     outtextxy(50,200,'Rizikó vége');
  861.   setlinestyle(0,3,1);setcolor(yellow);
  862.   for i:=0 to 3 do rectangle(48,i*50+56,70,i*50+85);
  863.   6:
  864.   setcolor(red);settextstyle(1,0,8);
  865.   outtextxy(70,380,'Bónusz:');bonkir;
  866.   dominoszin:=darkgray;
  867.   5:
  868.   if b1=1 then
  869.             begin
  870.              repeat
  871.               pontosido;
  872.                ra:=random(10);rb:=random(10);kirdom:=1400+ra*10+rb;
  873.                dominokirak;sound(100);delay(a1*20);nosound;
  874.               until keypressed;
  875.              cg:=readkey;
  876.             end;
  877.    if b1=2 then
  878.             begin
  879.              egerbekapcs;
  880.              repeat
  881.               egerlekerdez;
  882.                pontosido;
  883.                ra:=random(10);rb:=random(10);kirdom:=1400+ra*10+rb;
  884.                dominokirak;sound(100);delay(a1*20);nosound;
  885.               until regs.bx<>0;
  886.     if (regs.cx>48) and (regs.dx>56) and (regs.cx<195) and (regs.dx<85) then cg:='k';
  887.     if (regs.cx>48) and (regs.dx>106) and (regs.cx<195) and (regs.dx<135) then cg:='n';
  888.     if (regs.cx>48) and (regs.dx>156) and (regs.cx<195) and (regs.dx<185) then cg:='b';
  889.     if (regs.cx>48) and (regs.dx>206) and (regs.cx<235) and (regs.dx<235) then cg:='r';
  890.            if b1=2 then egerbekapcs;
  891.               end;
  892.    case cg of
  893.     'k' : goto 1;
  894.     'n' : goto 2;
  895.     'b' : goto 3;
  896.     'r' : goto 4;
  897.    end;
  898.    goto 5;
  899.     1:
  900.      if ra+rb<=9 then
  901.                   begin
  902.                    jutalom:=jutalom*2;bonkir;
  903.                    for i:=100 to 1000 do
  904.                      begin
  905.                       sound(i);delay(a1*1);
  906.                      end;
  907.                       nosound;
  908.                     goto 6;
  909.                   end;
  910.      if ra+rb>9 then
  911.       begin
  912.        jutalom:=0;
  913.        bonkir;
  914.            for i:=1000 downto 100 do
  915.                      begin
  916.                       sound(i);delay(a1*1);
  917.                      end;
  918.                  nosound;delay(a1*1000);goto 7;
  919.       end;
  920.     2:
  921.       if ra+rb>=9 then
  922.                   begin
  923.                    jutalom:=jutalom*2;bonkir;
  924.                    for i:=100 to 1000 do
  925.                      begin
  926.                       sound(i);delay(a1*1);
  927.                      end;
  928.                    nosound;
  929.                  goto 6;
  930.                end;
  931.      if ra+rb<9 then
  932.       begin
  933.        jutalom:=0;
  934.        bonkir;
  935.        for i:=1000 downto 100 do
  936.                      begin
  937.                       sound(i);delay(a1*1);
  938.                      end;
  939.                 nosound;delay(a1*1000);goto 7;
  940.       end;
  941.     3:  {lepergetés}
  942.         settextstyle(1,0,8);setcolor(15);outtextxy(145,280,'Pont:');
  943.          for i:=6 downto 2 do
  944.           begin
  945.               z:=1;for j:=1 to i do z:=z*10;
  946.            10:
  947.            if jutalom<z then goto 11;
  948.            jutalom:=jutalom-z;pontszam:=pontszam+z;
  949.            bonkir;ponkir;sound(1000);delay(a1*40);nosound;
  950.            goto 10;
  951.            11:
  952.          end;
  953.         12:
  954.         if jutalom=0 then goto 4;
  955.          jutalom:=jutalom-1;pontszam:=pontszam+1;
  956.          bonkir;ponkir;sound(1000);delay(a1*20);nosound;delay(a1*10);
  957.          goto 12;
  958.  
  959.     4:delay(a1*2000);goto 7;
  960.     7:
  961.    forgodominovissza;kepernyovissza;
  962.    if b1=2 then egerbekapcs;
  963.   end;
  964.  
  965.   procedure filezaro;
  966.    label 1,2;
  967.        type rek=record
  968.           nev : string[15];
  969.           po : longint;
  970.        end;
  971.      var
  972.          drek:rek;
  973.          rekord:file of rek; {rekord...lista}
  974.      begin
  975.       hanyadik;if b1=2 then egerkikapcs;
  976.        if helyezes<=15 then
  977.                       begin
  978.                         rekordlistakiiratas;
  979.                         settextstyle(1,0,2);setcolor(yellow);
  980.                         outtextxy(130,440,'Név:');
  981.                         idegstring:='';
  982.                        1:
  983.                         hossz:=length(idegstring);
  984.                         setfillstyle(1,0);
  985.                         bar(178,430,640,470);
  986.                         outtextxy(180,440,idegstring);
  987.                         repeat
  988.                         idegstring:=idegstring+#240;
  989.                         outtextxy(180,440,idegstring);delay(a1*200);
  990.                         idegstring:=copy(idegstring,1,hossz);
  991.                         bar(178,430,640,470);
  992.                         outtextxy(180,440,idegstring);delay(a1*200);
  993.                         until keypressed;
  994.                              cg:=readkey;
  995.                                 if cg=#8 then
  996.                                           begin
  997.                                            if hossz=0 then goto 1;
  998.                                            idegstring:=copy(idegstring,1,hossz-1);
  999.                                            goto 1;
  1000.                                           end;
  1001.                       if cg=#13 then goto 2;
  1002.                       idegstring:=idegstring+cg;goto 1;
  1003.                       2:
  1004.                       if length(idegstring)>15 then idegstring:=copy(idegstring,1,15);
  1005.                       hanyadik;
  1006.                       for i:=14 downto helyezes do
  1007.                                 begin
  1008.                                  neve[i+1]:=neve[i];
  1009.                                  posz[i+1]:=posz[i];
  1010.                                 end;
  1011.                         neve[helyezes]:=idegstring;posz[helyezes]:=pontszam;
  1012.                       rekordlistakiiratas;
  1013.                    getdir(0,utvonal);if copy(utvonal,length(utvonal),1)<>'\' then utvonal:=utvonal+'\';
  1014.                    assign(rekord,utvonal+'rekord.dat');
  1015.                                   rewrite(rekord);
  1016.                                     for i:=0 to 15 do
  1017.                                               begin
  1018.                                                with drek do
  1019.                                                  begin
  1020.                                                   nev:=neve[i];
  1021.                                                   po:=posz[i];
  1022.                                                   write(rekord,drek);
  1023.                                                  end;
  1024.                                       
  1025.                                               end;
  1026.                              close(rekord);
  1027.                     delay(a1*3000);
  1028.                    end;
  1029.    if b1=2 then egerbekapcs;
  1030.    end;
  1031.  
  1032.  procedure filevizsgalat;{a file 1995 március 5-én iródott?}
  1033.     begin
  1034.       findfirst(utvonal+idegstring,archive,dirinfo);
  1035.       unpacktime(dirinfo.time,datumido);
  1036.       if (datumido.year<>1995) or (datumido.month<>3) or (datumido.day<>5) then belekotor;
  1037.     end;
  1038.  
  1039.  procedure grafikainicializalas;
  1040.    begin
  1041.     gd:=detect;gm:=detect;{aktuális képernyômód szerint inicializál}
  1042.     getdir(0,utvonal);if copy(utvonal,length(utvonal),1)<>'\' then utvonal:=utvonal+'\';
  1043.     initgraph(gd,gm,utvonal);
  1044.    end;
  1045.  
  1046.  procedure szinallit;{az rbg paletta szineit állitja}
  1047.    begin
  1048.     setrgbpalette(green,rgb[1],rgb[2],rgb[3]);
  1049.    end;
  1050.  
  1051.  procedure setupdathiany;
  1052.    begin
  1053.     settextstyle(1,0,8);settextjustify(centertext,centertext);
  1054.      rgb[1]:=0;rgb[2]:=0;rgb[3]:=0;szinallit;
  1055.      setcolor(green);
  1056.      outtextxy(320,50,'Nem találom a');
  1057.      outtextxy(320,130,'Setup.dat file-t!');
  1058.      outtextxy(320,230,'Futtasd le a');
  1059.      outtextxy(320,310,'Setup.exe-t!');
  1060.    repeat
  1061.       a:=random(3)+1;b:=random(42)+22;
  1062.      c:=rgb[a];
  1063.      if c<b then
  1064.               begin
  1065.                for i:=c to b do
  1066.                 begin
  1067.                  rgb[a]:=i;szinallit;
  1068.                 end;
  1069.               end
  1070.             else
  1071.              begin
  1072.               for i:=c downto b do
  1073.                begin
  1074.                 rgb[a]:=i;szinallit;
  1075.                end;
  1076.              end;
  1077.    until keypressed;
  1078.    a1:=1;terminator;
  1079.    cleardevice;closegraph;halt;
  1080.    end;
  1081.  
  1082.  procedure sorsolas;
  1083.   label 1,2;
  1084.   begin
  1085.    kisors:=0;
  1086.    if pontszam=0 then goto 1;
  1087.    if sorsszam<>0 then goto 1;
  1088.    setcolor(0);setfillstyle(1,0);bar(165,80,481,479);
  1089.    settextjustify(centertext,centertext);
  1090.    cc:=random(10);str(cc,q);
  1091.    for a:=1 to 10 do
  1092.              begin
  1093.               settextstyle(1,0,a);
  1094.               setcolor(lightcyan);outtextxy(250,240,q);
  1095.               delay(a1*20);
  1096.               setcolor(0);outtextxy(250,240,q);
  1097.              end;
  1098.    setcolor(lightcyan);outtextxy(250,240,q);delay(a1*1000);
  1099.    idegszam:=hely[18];
  1100.    for a:=1 to 20 do
  1101.               begin
  1102.                 repeat
  1103.                  e:=random(10);dominoszin:=random(15);
  1104.                 until dominoszin<>lightgray;
  1105.                for c:=500 downto 400 do sound(c);
  1106.                nosound;
  1107.                kirdom:=1800+e*10+e;dominokirak;delay(a*a1*20);
  1108.               end;
  1109.    if e<>cc then begin
  1110.                      a:=random(4);
  1111.                      if a=0 then ii:='Nem nyert!';
  1112.                      if a=1 then ii:='Sajnos...';
  1113.                      if a=2 then ii:='Hát...';
  1114.                      if a=3 then ii:='Ez pech...';
  1115.                      for a:=1 to 6 do begin
  1116.                       settextstyle(1,0,a);
  1117.                       setcolor(lightgray);outtextxy(320,105,ii);
  1118.                       delay(a1*5);
  1119.                       setcolor(0);outtextxy(320,105,ii);
  1120.                      end;
  1121.                    setcolor(lightgray);outtextxy(320,105,ii);
  1122.                    delay(a1*3000);
  1123.                  end;
  1124.    if e<>cc then goto 1;
  1125.    kisors:=1;
  1126.    for a:=7 to 9 do begin      {nyert}
  1127.                      for b:=1 to 3 do
  1128.                       begin
  1129.                       sound(a*100);delay(a1*60);nosound;delay(a1*60);
  1130.                      end;
  1131.                     end;
  1132.        sound(1000);delay(a1*600);nosound;
  1133.    a:=random(3);
  1134.    if a=0 then ii:='Nyert!';
  1135.    if a=1 then ii:='Ez igen!';
  1136.    if a=2 then ii:='Mázli...';
  1137.    for a:=1 to 8 do begin
  1138.                settextstyle(1,0,a);
  1139.                setcolor(lightgreen);outtextxy(320,105,ii);
  1140.                delay(a1*5);
  1141.                setcolor(0);outtextxy(320,105,ii);
  1142.                      end;
  1143.      setcolor(lightgreen);outtextxy(320,105,ii);
  1144.        for a:=1 to 7 do begin
  1145.                          b:=random(10)+1;
  1146.                          c:=hely[b] mod 10;d:=hely[b] div 10;
  1147.                          domfogl[c,d]:=false;domfogl[d,c]:=false;
  1148.                          domdel:=b;dominotorles;delay(a1*200);
  1149.                         end;
  1150.    2:
  1151.    delay(a1*3000);
  1152.    setcolor(0);setfillstyle(1,0);bar(165,80,481,479);
  1153.    hely[18]:=idegszam;dominoszin:=darkgray;
  1154.    for a:=11 to 22 do begin
  1155.                         if hely[a]<>100 then
  1156.                             begin
  1157.                              kirdom:=a*100+hely[a];dominokirak;
  1158.                             end;
  1159.                       end;
  1160.    if b1=2 then egerbekapcs;
  1161.    sorsszam:=1;
  1162.    1:
  1163.    settextjustify(lefttext,toptext);
  1164.   end;
  1165.   procedure nemirhato;
  1166.    begin
  1167.     cleardevice;settextjustify(centertext,centertext);
  1168.     setcolor(lightred);settextstyle(1,0,10);outtextxy(320,50,'Baj van!');
  1169.     settextstyle(1,0,5);outtextxy(320,170,'A programot tartalmazó');
  1170.     outtextxy(320,220,'adathordozó nem irható!');
  1171.     outtextxy(320,320,'Irásvédett lemez vagy CD.');
  1172.     repeat until keypressed;
  1173.     cleardevice;closegraph;halt;
  1174.    end;
  1175.  
  1176.  {eddig vannak procedurok}
  1177.  
  1178. {----------------------------------------------------------}
  1179.       {fôprogram}
  1180.  
  1181.     label 1,2,3,4,5,6,7,8,9,10;
  1182.     begin
  1183.      grafikainicializalas;
  1184.      randomize;{inicializálja a véletlenszámgenerátort}
  1185.      getdir(0,utvonal);if copy(utvonal,length(utvonal),1)<>'\' then utvonal:=utvonal+'\';
  1186.   {próbaképpen csinál egy könyvtárat,ha nem lehet,irsvédett a lemez}
  1187.   {$I-} mkdir(utvonal+'probadir');if ioresult<>0 then nemirhato;
  1188.         rmdir(utvonal+'probadir');{törli a próbakönyvtárat}
  1189.      assign(satup,utvonal+'setup.dat');
  1190.   {$I-} reset(satup); if ioresult<>0 then setupdathiany;
  1191.        with hset do     {beolvassa a setup.dat file-t}
  1192.                  begin
  1193.                   read(satup,hset);a1:=param;
  1194.                   read(satup,hset);b1:=param;
  1195.                   read(satup,hset);c1:=param;
  1196.                   read(satup,hset);d1:=param;
  1197.                  end;
  1198.           close(satup);
  1199.          domdemo; {unit-hivás}
  1200.      grafikainicializalas;
  1201.     idegstring:='olvass.el!'; filevizsgalat;
  1202.     idegstring:='doomino.exe';filevizsgalat;
  1203.     if b1=2 then begin
  1204.                    regs.ax:=0;intr($33,regs);if regs.ax=0 then
  1205.                                   begin
  1206.                                     egergond;
  1207.                                   end;
  1208.                       egerbekapcs;
  1209.                  end;
  1210.     jutalom:=0;mu:=0;{képernyôvédelmet vezérlô mutatót nullázza}
  1211.     10:
  1212.     sorsszam:=0;
  1213.     filemegnyitas;
  1214.     9:
  1215.     setbkcolor(0);cleardevice;
  1216.     alapadatok;regiperc:=66;
  1217.     kezdodominok;
  1218.     pontszam:=0;kepernyoszovegek;if b1=2 then egerbekapcs;
  1219.     1:
  1220.     cg:='0';
  1221.     if b1=1 then begin
  1222.                    repeat
  1223.                     pontosido;
  1224.                     if mu>3 then kepernyovedelem;
  1225.                    until keypressed;
  1226.                  end;
  1227.     if b1=2 then begin
  1228.                    repeat
  1229.                     pontosido;
  1230.                     if mu>3 then kepernyovedelem;
  1231.                       egerlekerdez;
  1232.                    until regs.bx>0;
  1233.                  end;
  1234.     mu:=0;
  1235.     if b1=1 then cg:=readkey;
  1236.     if b1=2 then begin
  1237.                    egerlekerdez;
  1238.                  end;
  1239.     if b1=1 then begin
  1240.                if cg=#27 then
  1241.                    begin
  1242.                      if b1=2 then egerkikapcs;
  1243.                      settextstyle(1,0,2);setcolor(lightcyan);
  1244.                      outtextxy(500,40,'ESC');
  1245.                      setfillstyle(1,red);setcolor(blue);
  1246.                      bar3d(170,195,465,235,5,true);
  1247.                      settextstyle(1,0,3);setcolor(lightgray);
  1248.                      outtextxy(180,200,'Nem viccelsz? (Nem/De)');
  1249.                      if b1=2 then egerbekapcs;
  1250.                      cg:=readkey;
  1251.                      if cg='n' then
  1252.                       begin
  1253.                        filezaro;
  1254.                        terminator;cleardevice;closegraph;
  1255.                        textcolor(white);
  1256.                        writeln('');
  1257.                        writeln('Viszlát! Remélem tetszettem!');
  1258.                        writeln('');
  1259.                        writeln('         A  szerzôk');
  1260.                        halt;
  1261.                       end;
  1262.                     kepernyovissza;regiperc:=66;goto 1;
  1263.                  end;
  1264.                end;
  1265.      if b1=2 then begin
  1266.                egerlekerdez;
  1267.     if (regs.cx>500) and (regs.cx<535) and (regs.dx>40) and (regs.dx<60) then
  1268.                    begin
  1269.                      if b1=2 then egerkikapcs;
  1270.                      settextstyle(1,0,2);setcolor(lightcyan);
  1271.                      outtextxy(500,40,'ESC');
  1272.                      setfillstyle(1,red);setcolor(blue);
  1273.                      bar3d(170,195,465,235,5,true);
  1274.                      settextstyle(1,0,3);setcolor(lightgray);
  1275.                      outtextxy(180,200,'Nem viccelsz? (Nem/De)');
  1276.                      if b1=2 then egerbekapcs;
  1277.                      repeat
  1278.                       egerlekerdez;
  1279.                      until regs.bx<>1;
  1280.                      repeat
  1281.                       egerlekerdez;
  1282.                      until regs.bx=1;
  1283.   idegszam:=0;
  1284.   if (regs.cx>358) and (regs.cx<410) and (regs.dx>205) and (regs.dx<225) then idegszam:=1;
  1285.   if (regs.cx>500) and (regs.cx<535) and (regs.dx>40) and (regs.dx<60) then idegszam:=1;
  1286.                  if idegszam=1 then
  1287.                                    begin
  1288.                                     filezaro;
  1289.                                     egerkikapcs;
  1290.                                     terminator;cleardevice;closegraph;
  1291.                                     textcolor(white);
  1292.                                     writeln('');
  1293.                                     writeln('Viszlát! Remélem tetszettem!');
  1294.                                     writeln('');
  1295.                                     writeln('         A  szerzôk');
  1296.                                     halt;
  1297.                                    end;
  1298.                     kepernyovissza;regiperc:=66;goto 1;
  1299.                  end;
  1300.                end;
  1301.     if b1=2 then begin
  1302.                    egerlekerdez;
  1303.                        if (regs.bx=1) and (regs.cx>500) and (regs.cx<625) and (regs.dx>13) and (regs.dx<35) then
  1304.                         begin
  1305.                           d1:=1-d1;regiperc:=66;regisec:=66;pontosido;
  1306.                            egervar1;
  1307.                             goto 1;
  1308.                         end;
  1309.                  end;
  1310.     if b1=1 then begin
  1311.                    if cg=#0 then
  1312.                       begin
  1313.                         cg:=readkey;
  1314.                          if cg=#60 then begin
  1315.                                          if sorsszam<>0 then begin
  1316.                                                               filezaro;
  1317.                                                               goto 10;
  1318.                                                              end;
  1319.                                          sorsolas;
  1320.                                          if kisors=0 then begin
  1321.                                                            filezaro;
  1322.                                                            goto 10;
  1323.                                                           end;
  1324.                                          goto 1;
  1325.                                         end;
  1326.                          if cg=#61 then begin listagombra;regiperc:=66;goto 1;end;
  1327.                          if cg=#59 then begin help;regiperc:=66;goto 1;end;
  1328.                          if cg=#68 then begin d1:=1-d1;regiperc:=66;regisec:=66;pontosido;goto 1;end;
  1329.                          if (cg>#62) and (cg<#67) then begin fonok;regiperc:=66;goto 1;end;
  1330.                       end;
  1331.                  end;
  1332.     if b1=2 then begin
  1333.        egerlekerdez;
  1334.         if (regs.bx=1) and (regs.cx>540) and (regs.cx<570) and (regs.dx>40) and (regs.dx<65) then
  1335.                            begin egervar1;help;regiperc:=66;goto 1;end;
  1336.          if (regs.bx=1) and (regs.cx>577) and (regs.cx<607) and (regs.dx>40) and (regs.dx<65) then
  1337.                            begin
  1338.                             egervar1;egerkikapcs;
  1339.                              kisors:=0;
  1340.                               if sorsszam=0 then sorsolas;
  1341.                                if kisors=0 then begin
  1342.                                               filezaro;goto 10;
  1343.                                                 end;
  1344.                             egerbekapcs;goto 1;
  1345.                            end;
  1346.           if (regs.bx=1) and (regs.cx>612) and (regs.cx<639) and (regs.dx>40) and (regs.dx<65) then
  1347.                            begin egervar1;egerkikapcs;listagombra;regiperc:=66;goto 1;end;
  1348.            if (regs.bx=1) and (regs.cx<150) and (regs.dx>80) then cg:=chr((((regs.dx)-80) div 80)+97);
  1349.            if (regs.bx=1) and (regs.cx>490) and (regs.dx>80) then cg:=chr((((regs.dx)-80) div 80)+102);
  1350.            if regs.bx=3 then begin fonok;regiperc:=66;goto 1;end;
  1351.                  end;
  1352.     if cg<'a' then         {betûre vár}
  1353.                begin
  1354.                 hibahang;goto 1;
  1355.                end;
  1356.     if cg>'j' then
  1357.                begin
  1358.                 hibahang;goto 1;
  1359.                end;
  1360.     konv;szam:=betu-64;
  1361.     if hely[szam]=100 then   {ures helyre rak}
  1362.                        begin
  1363.                         2:
  1364.                         a:=random(10);b:=random(10);
  1365.                          if domfogl[a,b]=true then goto 2;
  1366.                          if domfogl[b,a]=true then goto 2;
  1367.                             if a=b then jutalom:=jutalom+7;
  1368.                          domfogl[a,b]:=true;domfogl[b,a]:=true;
  1369.                          kirdom:=szam*100+a*10+b;dominokirak;
  1370.                          pontszam:=pontszam-10;kepernyoszovegek;
  1371.                          if a+b=18 then
  1372.                                          begin
  1373.                                           dominoszin:=yellow;dominokirak;
  1374.                                           riziko;
  1375.                                          end;
  1376.                           if a+b=0 then
  1377.                                          begin
  1378.                                           dominoszin:=yellow;dominokirak;
  1379.                                           riziko;
  1380.                                          end;
  1381.                          egervar1;goto 1;
  1382.                         end;
  1383.     if hely[szam]<100 then  {felemeli a kijelölt dominót}
  1384.                        begin
  1385.                   kirdom:=szam*100+hely[szam];dominoszin:=blue;
  1386.                         dominokirak;
  1387.                         dominoszin:=darkgray;
  1388.                        end;egervar1;
  1389.     if b1=1 then begin
  1390.                   repeat
  1391.                    pontosido;
  1392.                   cg:='0';
  1393.                   until keypressed;
  1394.                   cg:=readkey;
  1395.                  end;
  1396.      if b1=2 then begin
  1397.                    repeat
  1398.                     egerlekerdez;pontosido;
  1399.                    until regs.bx<>0;
  1400.                   if (regs.bx=1) and (regs.dx>80) and (regs.cx>160) and (regs.cx<480) then
  1401.                    cg:=chr((((regs.cx)-160) div 80)+49);
  1402.                   end;
  1403.      if cg<'1' then       {számra vár}
  1404.                begin
  1405.                 hibahang;dominoszin:=darkgray;kirdom:=szam*100+hely[szam];dominokirak;goto 1;
  1406.                end;
  1407.     if cg>'4' then
  1408.                begin
  1409.                 hibahang;dominoszin:=darkgray;kirdom:=szam*100+hely[szam];dominokirak;goto 1;
  1410.                end;
  1411.     konv;
  1412.     if hely[szamszam+10]<>100 then
  1413.                               begin
  1414.                                hibahang;dominoszin:=darkgray;kirdom:=szam*100+hely[szam];dominokirak;goto 1;
  1415.                               end;
  1416.     if hely[szamszam+14]=100 then mutato:=14
  1417.                              else mutato:=10;
  1418.  
  1419.  
  1420.     if (hely[szamszam+mutato+4] div 10)=(hely[szam] mod 10) then goto 3;
  1421.     if (hely[szamszam+mutato+4] div 10)=(hely[szam] div 10) then
  1422.                                                            begin
  1423.                                                             idegszam:=(hely[szam] div 10)+(hely[szam] mod 10)*10;
  1424.                                                             hely[szam]:=idegszam;
  1425.                                                             goto 3;
  1426.                                                            end;
  1427.     hibahang;dominoszin:=darkgray;kirdom:=szam*100+hely[szam];dominokirak;goto 1;
  1428.     3:
  1429.     kirdom:=(szamszam+mutato)*100+hely[szam];dominokirak;
  1430.     domdel:=szam;dominotorles;
  1431.     pontszam:=pontszam+20;kepernyoszovegek;
  1432.       {furelise vizsgalat}
  1433.         idegszam:=0;
  1434.         for i:=1 to 10 do idegszam:=idegszam+hely[i];
  1435.        if idegszam=1000 then  {ha mind elfogyott kintrôl}
  1436.                          begin
  1437.                          taps;
  1438.                           pontszam:=pontszam+1000;jutalom:=jutalom+99;kepernyoszovegek;
  1439.                          end;
  1440.     {letolas vizsgalat}
  1441.     for i:=15 to 18 do if hely[i]=100 then goto 1;
  1442.     tolas;         {egyenloseg}
  1443.        if hely[19] div 10<>hely[20] then goto 4;
  1444.        if hely[19] div 10<>hely[21] then goto 4;
  1445.        if hely[19] div 10<>hely[22] then goto 4;
  1446.        villogtato;pontszam:=pontszam+500;jutalom:=jutalom+49;kepernyoszovegek;
  1447.     4:
  1448.     for i:=19 to 21 do  {novekves}
  1449.                     begin
  1450.                     if hely[i] div 10>=hely[i+1] div 10 then goto 5;
  1451.                     end;
  1452.      villogtato;pontszam:=pontszam+500;jutalom:=jutalom+45;kepernyoszovegek;
  1453.      5:
  1454.      for i:=19 to 21 do   {csokkenes}
  1455.                     begin
  1456.                     if hely[i] div 10<=hely[i+1] div 10 then goto 6;
  1457.                     end;
  1458.          villogtato;pontszam:=pontszam+500;jutalom:=jutalom+45;kepernyoszovegek;
  1459.      6:
  1460.         for i:=19 to 21 do    {eggyel no}
  1461.                     begin
  1462.                     if hely[i] div 10<>(hely[i+1] div 10)+1 then goto 7;
  1463.                     end;
  1464.          villogtato;pontszam:=pontszam+500;jutalom:=jutalom+99;kepernyoszovegek;
  1465.      7:
  1466.      for i:=19 to 21 do        {eggyel csokken}
  1467.                     begin
  1468.                     if hely[i] div 10<>(hely[i+1] div 10)-1 then goto 8;
  1469.                     end;
  1470.          villogtato;pontszam:=pontszam+500;jutalom:=jutalom+99;kepernyoszovegek;
  1471.      8:
  1472.  
  1473.     goto 1;
  1474.  end.
  1475.