home *** CD-ROM | disk | FTP | other *** search
/ PC World 2002 December / PCWorld_2002-12_cd.bin / Software / Komercni / Baltik / katB.exe / katB / CERVI / CERVI.SGP < prev    next >
Text File  |  2002-09-26  |  49KB  |  1,169 lines

  1. SGPC   5.03 CZ0#352N00132  2.09.2002 20:55:10                                    StructNo 1   1
  2.  
  3. # include <sgpbalt.h>
  4.  
  5. # include "Cervi_ks.h"
  6. # include "Cervi_fc.c"
  7.  
  8. // Triviální funkce a podprogramy jsou v souboru Cervi_fc.c
  9. // typy a konstanty v .h
  10.  
  11. //gMyτUdálost a gKlávesa jsou v sgpbalt.h, gaMyτ v Cervi_ks.h
  12.  
  13. // Globální makra
  14. //
  15. -o1-Globals ----------------------------------------------------------------
  16. -c1-Globals ---- (? lze pouºít jako náhrada pouze pro /,*,+) -----------------
  17. \C case
  18. #N ;opakuj n-krát vzestupn╪ pro prom╪nnou       #N:(i,8)  (8x) i=0,1..7
  19.     Od0
  20. ===Globals ------------------------------------------------------------------
  21. /*-hf(*/
  22. /*-hf-*/
  23. short int NastavHraní(short int *RychlostHry, Typ¼ervi *¼ervi, TypOvlKlávesy Klávesy[], double Hustota¼ervà)
  24. /*-hf-*/;
  25. short int M_NovéHraní( void )
  26. /*-hf-*/;
  27. short int M_Nápov╪da( void )
  28. /*-hf-*/;
  29. short int M_Soubor( void )
  30. /*-hf-*/;
  31. short int M_Auto²i( void )
  32. /*-hf-*/;
  33. short int M_Konec( void )
  34. /*-hf-*/;
  35. void ZobrazMenu( void )
  36. /*-hf-*/;
  37. void main( void )
  38. /*-hf)*/;
  39. ;-h---------------------------------------------------------------------------
  40. short int NastavHraní(short int *RychlostHry, Typ¼ervi *¼ervi, TypOvlKlávesy Klávesy[], double Hustota¼ervà)
  41. -s--NastavHraní                                                                 ■   4  -2 -26 259
  42. NastavHraní
  43.     n!
  44. -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
  45. n ;nastav hraní
  46.  
  47.   /**** p²ípravy */
  48.   TypSoubor SVstup;  /* souborová prom╪nná pro naƒítání dat */
  49.   double AktHmotnost; /* udrºuje ƒásteƒnou hmotnost ƒerva, kolem kterého se toƒí v∞poƒet */
  50.   string ⁿet╪zec, V∞zva;
  51.   short i, j, k;
  52.    /* i, j a k jsou pomocné prom╪nné pro indexaci polí apod., uºívané jen v blízkém okolí v∞skytu */
  53.  
  54.   /**** nastavení hraní */
  55.   KlKonecObsluhy();
  56.   GrSmaºOkno();
  57.   /**** nadpis */
  58.       GrNastavPozici(15*Grµí²kaZnaku,GrV∞τkaZnaku);
  59.       GrNastavBarvuPop²edí(Bílá);
  60.       GrPiτⁿet╪zec("¼ervi - nastavení nové hry - stiskn╪te klávesu...");
  61.       ¼ekejNaKlávesu();
  62.       /*zp╪t?*/
  63.       if (¼tiKlávesuZFronty() == KlEsc){
  64.          /* úklid po naƒítání */
  65.          KlZaƒátekObsluhy(0);
  66.          GrSmaºOkno();
  67.          /* návrat */
  68.          return Ne;
  69.       }
  70.       GrNastavBarvuPop²edí(Sv╪tloτedá);
  71.  
  72.   /**** rychlost hry */
  73.       GrPiτNov∞ⁿádek();
  74.       GrPiτNov∞ⁿádek();
  75.       do{   /* dokud nedostanem korektní vstup */
  76.          GrNastavPozici(2*Grµí²kaZnaku,GrPoziceY());
  77.          V∞zva = "Zadej rychlost hry (1-99):";
  78.          if (Gr¼tiSⁿet╪zec(V∞zva,ⁿet╪zec,2,0,Tmavoτedá<<4|Bílá) == -1) {
  79.             /* úklid po naƒítání */
  80.             KlZaƒátekObsluhy(0);
  81.             GrSmaºOkno();
  82.             /* návrat */
  83.             return Ne;
  84.          }
  85.          /*vyhodnocení*/
  86.          *RychlostHry = StrNaL¼íslo(ⁿet╪zec,0);
  87.       } while ((*RychlostHry > 99) Nebo (*RychlostHry < 1));
  88.       GrPiτⁿet╪zec("Rychlost hry je ");
  89.       GrNastavBarvuPop²edí(Bílá);
  90.       GrPiτL¼íslo(*RychlostHry,-1);
  91.       GrNastavBarvuPop²edí(Sv╪tloτedá);
  92.       GrPiτⁿet╪zec(".");
  93.  
  94.   /**** poƒet ƒervà */
  95.       GrPiτNov∞ⁿádek();
  96.       GrPiτNov∞ⁿádek();
  97.       do{   /* dokud nedostanem korektní vstup */
  98.          GrNastavPozici(2*Grµí²kaZnaku,GrPoziceY());
  99.          V∞zva = "Zadej poƒet ƒervà (2-" + StrL¼íslo(MaxP¼ervà,-1) + "):";
  100.          if (Gr¼tiSⁿet╪zec(V∞zva,ⁿet╪zec,2,0,Tmavoτedá<<4|Bílá) == -1) {
  101.             /* úklid po naƒítání */
  102.             KlZaƒátekObsluhy(0);
  103.             GrSmaºOkno();
  104.             /* návrat */
  105.             return Ne;
  106.          }
  107.          /*vyhodnocení*/
  108.          ¼ervi->P¼ervà = StrNaL¼íslo(ⁿet╪zec,0);
  109.       } while ((¼ervi->P¼ervà > MaxP¼ervà) Nebo (¼ervi->P¼ervà < 2));
  110.       GrPiτⁿet╪zec("Poƒet ƒervà je ");
  111.       GrNastavBarvuPop²edí(Bílá);
  112.       GrPiτL¼íslo(¼ervi->P¼ervà,-1);
  113.       GrNastavBarvuPop²edí(Sv╪tloτedá);
  114.       GrPiτⁿet╪zec(".");
  115.  
  116.   /**** poƒet kuliƒek */
  117.  
  118.       GrPiτNov∞ⁿádek();
  119.       GrPiτNov∞ⁿádek();
  120.       do{   /* dokud nedostanem korektní vstup */
  121.          GrNastavPozici(2*Grµí²kaZnaku,GrPoziceY());
  122.          V∞zva = "Zadej poƒet zaƒáteƒních kuliƒek (2-" + StrL¼íslo(MaxPKuliƒek,-1) + "):";
  123.          if (Gr¼tiSⁿet╪zec(V∞zva,ⁿet╪zec,2,0,Tmavoτedá<<4|Bílá) == -1) {
  124.             /* úklid po naƒítání */
  125.             KlZaƒátekObsluhy(0);
  126.             GrSmaºOkno();
  127.             /* návrat */
  128.             return Ne;
  129.          }
  130.          /*vyhodnocení*/
  131.          ¼ervi->PoƒáteƒníPKuliƒek = StrNaL¼íslo(ⁿet╪zec,0);
  132.       } while ((¼ervi->PoƒáteƒníPKuliƒek > MaxPKuliƒek) Nebo (¼ervi->PoƒáteƒníPKuliƒek < 2));
  133.       GrPiτⁿet╪zec("Poƒet kuliƒek na zaƒátku hry je ");
  134.       GrNastavBarvuPop²edí(Bílá);
  135.       GrPiτL¼íslo(¼ervi->PoƒáteƒníPKuliƒek,-1);
  136.       GrNastavBarvuPop²edí(Sv╪tloτedá);
  137.       GrPiτⁿet╪zec(".");
  138.  
  139.   /**** ƒervi */
  140.       k = Ano;
  141.       for (i = 0; i < ¼ervi->P¼ervà; i++){
  142.         /*** jeden ƒerv barva podle jeho barvy */
  143.         GrPiτNov∞ⁿádek();
  144.         GrPiτNov∞ⁿádek();
  145.         /* barva (pro text) */
  146.         switch (i){
  147.               case 0:¼ervi->Jeden¼erv[i].Barva = ¼ervená;break;
  148.               case 1:¼ervi->Jeden¼erv[i].Barva = Krémová;break;
  149.               case 2:¼ervi->Jeden¼erv[i].Barva = Modrá;break;
  150.               case 3:¼ervi->Jeden¼erv[i].Barva = Oranºová;break;
  151.               default:¼ervi->Jeden¼erv[i].Barva = ¼erná;break;
  152.         }
  153.         /* jméno */
  154.         do{   /* dokud nedostanem korektní vstup */
  155.            GrNastavPozici(2*Grµí²kaZnaku,GrPoziceY());
  156.            V∞zva = "Zadej jméno hráƒe ƒ." + StrL¼íslo(i+1,-1) + ":";
  157.            if (Gr¼tiSⁿet╪zec(V∞zva,¼ervi->Jeden¼erv[i].Jméno,MaxDJména,0,Tmavoτedá<<4|Bílá) == -1){
  158.               /* úklid po naƒítání */
  159.               KlZaƒátekObsluhy(0);
  160.               GrSmaºOkno();
  161.               /* návrat */
  162.               return Ne;
  163.            }
  164.         } while (¼ervi->Jeden¼erv[i].Jméno == ""); /* prázdné jméno */
  165.         GrPiτⁿet╪zec("¼erv ƒ." + StrL¼íslo(i+1,-1) + " se jmenuje ");
  166.         GrNastavBarvuPop²edí(¼ervi->Jeden¼erv[i].Barva);
  167.         GrPiτⁿet╪zec(¼ervi->Jeden¼erv[i].Jméno);
  168.         GrNastavBarvuPop²edí(Sv╪tloτedá);
  169.         GrPiτⁿet╪zec(".");
  170.  
  171.  
  172.         /* t∞m */
  173.         GrPiτNov∞ⁿádek();
  174.         GrNastavPozici(2*Grµí²kaZnaku,GrPoziceY());
  175.         do{   /* dokud nedostanem korektní vstup */
  176.            if (k == Ne) {
  177.               ¼ervi->Jeden¼erv[i].T∞m = i;
  178.               break;
  179.            }
  180.            else {
  181.                 GrNastavPozici(2*Grµí²kaZnaku,GrPoziceY());
  182.                 V∞zva = "Zadej ƒíslo t∞mu, k n╪muº " + ¼ervi->Jeden¼erv[i].Jméno + " pat²í (1-" + StrL¼íslo(¼ervi->P¼ervà,-1) + "):";
  183.                 if (Gr¼tiSⁿet╪zec(V∞zva,ⁿet╪zec,2,0,Tmavoτedá<<4|Bílá) == -1) {
  184.                    /* úklid po naƒítání */
  185.                    KlZaƒátekObsluhy(0);
  186.                    GrSmaºOkno();
  187.                    /* návrat */
  188.                    return Ne;
  189.                 }
  190.                 /* vyhodnocení a vracení */
  191.                 ¼ervi->Jeden¼erv[i].T∞m = StrNaL¼íslo(ⁿet╪zec,0) - 1;
  192.                 if ((¼ervi->Jeden¼erv[i].T∞m > ¼ervi->P¼ervà - 1) Nebo (¼ervi->Jeden¼erv[i].T∞m < 0)) {
  193.                    /* automatické doplσování */
  194.                    k = Ne;
  195.                    ¼ervi->Jeden¼erv[i].T∞m = i;
  196.                    break;
  197.                 }
  198.                 GrPiτⁿet╪zec(¼ervi->Jeden¼erv[i].Jméno + " je ƒlenem t∞mu ");
  199.                 GrNastavBarvuPop²edí(Bílá);
  200.                 GrPiτL¼íslo(¼ervi->Jeden¼erv[i].T∞m+1,-1);
  201.                 GrNastavBarvuPop²edí(Sv╪tloτedá);
  202.                 GrPiτⁿet╪zec(".");
  203.  
  204.            }
  205.         } while ((¼ervi->Jeden¼erv[i].T∞m > ¼ervi->P¼ervà - 1) Nebo (¼ervi->Jeden¼erv[i].T∞m < 0));
  206.  
  207.       } /* konec nastavení jednoho ƒerva */
  208.  
  209.   /**** konec naƒítání od uºivatele */
  210.  
  211.   /**** dotvo²ení ƒervà */
  212.   for (i = 0; i < ¼ervi->P¼ervà; i++){  /* vτichni ¼ervi */
  213.       AktHmotnost = 0;
  214.       /* barva je p²ed nastavením jména (z klávesnice) */
  215.       ¼ervi->Jeden¼erv[i].Klávesy = &Klávesy[i];
  216.       ¼ervi->Jeden¼erv[i].Body = 0;
  217.       ¼ervi->Jeden¼erv[i].Hmotnost = 0;
  218.       ¼ervi->Jeden¼erv[i].PKuliƒek = ¼ervi->PoƒáteƒníPKuliƒek;
  219.       for (j = 0; j < ¼ervi->Jeden¼erv[i].PKuliƒek; j++){  /* vτechny kuliƒky ¼erva */
  220.           /* poloha aº p²i nastavení konkrétní hry */
  221.           ¼ervi->Jeden¼erv[i].Kuliƒka[j].Polom╪r = (16 - j);
  222.           /* m = Ró*V; VKoule = (4*Pí*r^3)/3 */
  223.           ¼ervi->Jeden¼erv[i].Kuliƒka[j].Hmotnost = Hustota¼ervà*4*Pí*sqr(¼ervi->Jeden¼erv[i].Kuliƒka[j].Polom╪r)*¼ervi->Jeden¼erv[i].Kuliƒka[j].Polom╪r/3;
  224.           ¼ervi->Jeden¼erv[i].Kuliƒka[j].Rychlost.X = 0;
  225.           ¼ervi->Jeden¼erv[i].Kuliƒka[j].Rychlost.Y = 0;
  226.           ¼ervi->Jeden¼erv[i].Kuliƒka[j].Síla.X = 0;
  227.           ¼ervi->Jeden¼erv[i].Kuliƒka[j].Síla.Y = 0;
  228.           AktHmotnost += ¼ervi->Jeden¼erv[i].Kuliƒka[j].Hmotnost;
  229.       }
  230.       ¼ervi->Jeden¼erv[i].Hmotnost = AktHmotnost;
  231.       /*GrPiτD¼íslo(AktHmotnost,-1,2);
  232.       GrPiτZnak('*');
  233.       ¼ekejNaKlávesu();*/
  234.   }
  235.  
  236.   /**** naƒtení ovládacích kláves - poƒet podle poƒtu ƒervà */
  237.   SVstup = SouborOtev²i("*\\Cervi_so\\kláv.txt",SouborP²ístup¼tení|SouborP²ístupTextov∞);
  238.   /* kontrola úsp╪chu */
  239.   if (SVstup == 0) { /* neúsp╪ch */
  240.      /* hláτka */
  241.      /* hláτka */
  242.      GrPiτHláτku("CHYBA: Hra nemàºe p²istupovat ke sv∞m souboràm. (Cervi_so\\kláv.txt)","      Pokuste se umoºnit p²ístup, nebo kontaktujte v∞robce.");
  243.      /* úklid po naƒítání */
  244.      KlZaƒátekObsluhy(0);
  245.      GrSmaºOkno();
  246.      /* návrat */
  247.      return Ne;      /* !!!!!!!!!!! nevracej se, nybrz imp hodnoty, i do hlasky */
  248.   } /* jinak úsp╪ch */
  249.   /* naƒítání */
  250.   SouborNastavPozici(SVstup,0,SouborPoziceOdZaƒátku);
  251.   Soubor¼tiNov∞ⁿádek(SVstup);Soubor¼tiNov∞ⁿádek(SVstup);
  252.   for (i = 0; i < ¼ervi->P¼ervà; i++){    /* jedna sada kláves */
  253.  
  254.       if (Soubor¼tiI¼íslo(SVstup,Klávesy[i].Nahoru) != 0) {
  255.          /* poτkozená data */
  256.          /* hláτka */
  257.          GrPiτHláτku("CHYBA: Soubor ovládacích kláves (Cervi_so\\kláv.txt) je poτkozen.","      Pokuste se jej obnovit, nebo kontaktujte v∞robce.");
  258.          /* úklid po naƒítání */
  259.          KlZaƒátekObsluhy(0);
  260.          GrSmaºOkno();
  261.          /* návrat */
  262.          return Ne;
  263.       }
  264.       if (Soubor¼tiI¼íslo(SVstup,Klávesy[i].Dolà) != 0) {
  265.          /* poτkozená data */
  266.          /* hláτka */
  267.          GrPiτHláτku("CHYBA: Soubor ovládacích kláves (Cervi_so\\kláv.txt) je poτkozen.","      Pokuste se jej obnovit, nebo kontaktujte v∞robce.");
  268.          /* úklid po naƒítání */
  269.          KlZaƒátekObsluhy(0);
  270.          GrSmaºOkno();
  271.          /* návrat */
  272.          return Ne;
  273.       }
  274.       if (Soubor¼tiI¼íslo(SVstup,Klávesy[i].Doprava) != 0) {
  275.          /* poτkozená data */
  276.          /* hláτka */
  277.          GrPiτHláτku("CHYBA: Soubor ovládacích kláves (Cervi_so\\kláv.txt) je poτkozen.","      Pokuste se jej obnovit, nebo kontaktujte v∞robce.");
  278.          /* úklid po naƒítání */
  279.          KlZaƒátekObsluhy(0);
  280.          GrSmaºOkno();
  281.          /* návrat */
  282.          return Ne;
  283.       }
  284.       if (Soubor¼tiI¼íslo(SVstup,Klávesy[i].Doleva) != 0) {
  285.          /* poτkozená data */
  286.          /* hláτka */
  287.          GrPiτHláτku("CHYBA: Soubor ovládacích kláves (Cervi_so\\kláv.txt) je poτkozen.","      Pokuste se jej obnovit, nebo kontaktujte v∞robce.");
  288.          /* úklid po naƒítání */
  289.          KlZaƒátekObsluhy(0);
  290.          GrSmaºOkno();
  291.          /* návrat */
  292.          return Ne;
  293.       }
  294.       Soubor¼tiNov∞ⁿádek(SVstup);
  295.   }
  296.   SouborZav²i(SVstup);
  297.  
  298.  
  299.   /* ƒekání na ov╪²ení */
  300.   GrPiτNov∞ⁿádek();
  301.   GrNastavPozici(2*Grµí²kaZnaku,GrPoziceY());
  302.   GrPiτⁿet╪zec("Stiskn╪te klávesu a hrajte nebo se vra£te do menu (Esc).");
  303.   KlZaƒátekObsluhy(0);
  304.   Kl¼ekejNaUdálostKlávesnice();
  305.   if ((gKlUdálost.Typ == KlUdálostKlDolà) ASouƒasn╪ (gKlUdálost.Klávesa == KlScanEsc)){
  306.      /* návrat */
  307.      GrSmaºOkno();
  308.      return Ne;
  309.   }
  310.  
  311.   /* záv╪r naƒítání - animy by se p²i p²edƒasném návratu zapomn╪ly zruτit */
  312.   for (i = 0; i < ¼ervi->P¼ervà; i++){ /* vτichni ƒervi */
  313.       for (j = 0; j < ¼ervi->Jeden¼erv[i].PKuliƒek; j++){ /* vτechny kuliƒky ¼erva */
  314.           ¼ervi->Jeden¼erv[i].Kuliƒka[j].Anim = AnimP²edm╪tVytvo²(2001 + 1000*i + j*PFází,PFází,0,1);
  315.       }
  316.   }
  317.  
  318.   /* úklid po naƒítání */
  319.   GrNastavBarvuPop²edí(Sv╪tloτedá);
  320.   GrSmaºOkno();
  321.  
  322. -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
  323. =SP---------------------------------------------------------------------------
  324.  
  325. ;-h---------------------------------------------------------------------------
  326. short int M_NovéHraní( void )
  327. -s--M_NovéHraní                                                                 ■  87  -2  78 259
  328.         ____________________________________________________M_NovéHraní________________________________________________________________
  329.      zaƒátek                                             prost²edek                                                           ______konec______
  330. naƒtení,~nastavení                                           *:KonecHraní~Není~Ano                                   uvolnit,~vyprázdnit    návrat
  331.        0!1        _______________________________________jedna~hra___________________________________________________        9!           :return~Ne
  332.                zaƒátek        úvod~?                     zápas                              záv╪r,~vyhodnocení znovu~hrát?
  333.                  2!                                        *:KonecHry~Není~Ano                     h!              Z!
  334.                    ____________________________________jedno~kolo___________________________________
  335.              vτichni~ƒervi   bonusy~?     ____interakce____       │   pauza?   sejmuti~obrazu?   konec?
  336.                    #N:(i,¼ervi.P¼ervà)   zdi   ocasy   bonusy~?   │     /P            /s          k!
  337.                jeden~ƒerv                z!     o!                │    ano           ano
  338.                  hraje                                            │    P!            U!
  339.                    /:¼ervi.Jeden¼erv[i].Hraje==Ano                │
  340.               ____ano____                                         │
  341.            v∞poƒty   animace                                      │
  342.              w!        a!                                         │
  343.                                                                   │
  344.                                                                   │
  345.                                                                   │
  346.                                                                   │
  347.                                                                   │
  348.                                                                   │
  349.                                                                   │
  350.                                                                   │
  351.                                                                   │
  352.                                                                   │
  353.                                                                   │
  354.                                                                   │
  355.                                                                   │
  356.                                                                   │
  357.                                                                   │
  358.                                                                   │
  359.                                                                   │
  360.                                                        :¼ekej(100-RychlostHry)
  361. -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
  362. 0 ;naƒti nastavení ze souboru a inicializuj herní prom╪nné
  363.   /**** p²ípravy */
  364.   TypSoubor SVstup;  /* souborová prom╪nná pro naƒítání dat */
  365.   double AktHmotnost; /* udrºuje ƒásteƒnou hmotnost ƒerva, kolem kterého se toƒí v∞poƒet */
  366.   string ⁿet╪zec;  /* univerzální ²et╪zec */
  367.   short VT∞m, KonecHraní = Ne, KonecHry = Ne, RychlostHry = ImpRychlost;
  368.   int i, j, k, l;
  369.    /* i, j, k a l jsou pomocné prom╪nné pro indexaci polí apod., uºívané jen v blízkém okolí v∞skytu */
  370.    /* VT∞m - vít╪zn∞ t∞m (pouºití ve vyhodnocení a testu konce hry) */
  371.   int HláτkaX = 156, HláτkaY = 120;   /* konstanty pro umíst╪ní hláτky */
  372.   int MaxBody = 0;   /* inic */
  373.   int MaxSílaHlavy = ImpMaxSílaHlavy;   /* maximální síla hlavy */
  374.   double Hustota¼ervà = ImpHustota¼ervà;  /* hustota ƒervà pro dopoƒtení hmotnosti */
  375.   double Tuhost = ImpTuhost;    /* tuhost spoje kuliƒek */
  376.   double Zpomalení = ImpZpomalení;    /* zpomalení (pseudot²ení) */
  377.   double KoefOdrazu = ImpKoefOdrazu; /* podíl pohlcené energie p²i odrazu */
  378.   double GravZrych = ImpGravZrych; /* gravitaƒní zrychlení */
  379.   double Meziv∞sledek, Alfa; /* pomocné prom╪nné */
  380.   float VzdálenostKuliƒek;  /* pomocná prom╪nná */
  381.   TypAnimP²edm╪t Hláτka[6];
  382.   int SSI = 0; /* ƒíslo screenshotu (v aktuálním b╪hu programu) */
  383.  
  384.   TypOvlKlávesy Klávesy[MaxP¼ervà];
  385.   Typ¼ervi ¼ervi;
  386.  
  387.   /**** naƒtení nastavení fyzikálních vlastností ƒervà a prost²edí ze souboru */
  388.   SVstup = SouborOtev²i("*\\Cervi_so\\fyz.txt",SouborP²ístup¼tení|SouborP²ístupTextov∞);
  389.   /* kontrola úsp╪chu */
  390.   if (SVstup == 0) {    /* neúsp╪ch */
  391.      /* hláτka */
  392.      GrPiτHláτku("CHYBA: Hra nemàºe p²istupovat ke sv∞m souboràm. (Cervi_so\\fyz.txt)","Pokuste se umoºnit p²ístup, nebo kontaktujte v∞robce.");
  393.      /* úklid */
  394.      /* návrat */
  395.      return Ne;
  396.   }
  397.   if (SouborNastavPozici(SVstup,0,SouborPoziceOdZaƒátku) == -1) {
  398.      /* hláτka */
  399.      GrPiτHláτku("CHYBA: soubor Cervi_so\\fyz.txt je poτkozen.","Pokuste se umoºnit p²ístup, nebo kontaktujte v∞robce.");
  400.      /* úklid */
  401.      /* návrat */
  402.      return Ne;
  403.   }
  404.   /* bezpeƒné ƒtení !!!!!!!!!!!! pouºij imp hodnoty */
  405.   Soubor¼tiNov∞ⁿádek(SVstup);
  406.   Soubor¼tiNov∞ⁿádek(SVstup);
  407.   Soubor¼tiI¼íslo(SVstup,MaxSílaHlavy);
  408.   Soubor¼tiNov∞ⁿádek(SVstup);
  409.   Soubor¼tiD¼íslo(SVstup,Tuhost);
  410.   Soubor¼tiNov∞ⁿádek(SVstup);
  411.   Soubor¼tiD¼íslo(SVstup,Zpomalení);
  412.   Soubor¼tiNov∞ⁿádek(SVstup);
  413.   Soubor¼tiD¼íslo(SVstup,KoefOdrazu);
  414.   Soubor¼tiNov∞ⁿádek(SVstup);
  415.   Soubor¼tiD¼íslo(SVstup,Hustota¼ervà);
  416.   Soubor¼tiNov∞ⁿádek(SVstup);
  417.   Soubor¼tiD¼íslo(SVstup,GravZrych);
  418.  
  419.   SouborZav²i(SVstup);
  420.  
  421.   KoefOdrazu = sqrt(1-KoefOdrazu);  /* p²edpoƒítání pro p²ím∞ v∞poƒet rychlosti */
  422.  
  423. 1 ;nastav hraní
  424.   /* je v po²ádku nastaveno ? */
  425.   if (NastavHraní(&RychlostHry, &¼ervi, Klávesy, Hustota¼ervà) == Ne) return Ne; /* ne - skonƒi */
  426.  
  427. 2 ;p²iprav hru
  428.   GrNastavV∞stup(GrV∞stupOkno);
  429.   GrSmaºOkno();
  430.   KonecHry = Ne;
  431.  
  432.   /* oºivení a donastavení ƒervà */
  433.   for (i = 0; i < ¼ervi.P¼ervà; i++){ /* vτichni ƒervi */
  434.       ¼ervi.Jeden¼erv[i].Hraje = Ano;
  435.  
  436.       AktHmotnost = 0;
  437.       ¼ervi.Jeden¼erv[i].PKuliƒek = ¼ervi.PoƒáteƒníPKuliƒek;
  438.       ¼ervi.Jeden¼erv[i].Hmotnost = 0;
  439.       /* generování nové polohy do m²íºe (proti kolizím) */
  440.       do {
  441.           k = Grµí²kaPolíƒka*(1 + Náhodné¼íslo(µí²kaProstoru - 1));   /* X */
  442.           l = GrV∞τkaPolíƒka*(1 + Náhodné¼íslo(V∞τkaProstoru - 1));   /* Y */
  443.           KonecHry = Ano;
  444.           for (j = 0; j < i; j++) {
  445.               if ((k == ¼ervi.Jeden¼erv[j].Kuliƒka[Hlava].Poloha.X)
  446.                  ASouƒasn╪ (l == ¼ervi.Jeden¼erv[j].Kuliƒka[Hlava].Poloha.Y)){
  447.                  /* obsazeno */
  448.                  KonecHry = Ne;
  449.               }
  450.               /* jinak volné místo */
  451.           }
  452.       } while (KonecHry == Ne);
  453.       ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Poloha.X = k;
  454.       ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Poloha.Y = l;
  455.       /* kuliƒky */
  456.       for (j = 0; j < ¼ervi.Jeden¼erv[i].PKuliƒek; j++){  /* vτechny kuliƒky */
  457.           ¼ervi.Jeden¼erv[i].Kuliƒka[j].Poloha.X = ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Poloha.X;
  458.           ¼ervi.Jeden¼erv[i].Kuliƒka[j].Poloha.Y = ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Poloha.Y;
  459.           ¼ervi.Jeden¼erv[i].Kuliƒka[j].Rychlost.X = 0;
  460.           ¼ervi.Jeden¼erv[i].Kuliƒka[j].Rychlost.Y = 0;
  461.           ¼ervi.Jeden¼erv[i].Kuliƒka[j].Síla.X = 0;
  462.           ¼ervi.Jeden¼erv[i].Kuliƒka[j].Síla.Y = 0;
  463.           AktHmotnost += ¼ervi.Jeden¼erv[i].Kuliƒka[j].Hmotnost;
  464.       }
  465.       ¼ervi.Jeden¼erv[i].Hmotnost = AktHmotnost;
  466.   }
  467.  
  468.   KonecHry = Ne; /* pouºito p²i generování nové polohy ƒervà */
  469.  
  470. w ;prove╘ w∞poƒty pro p²íτtí stav ƒervà
  471.  
  472.   /***** hlava */
  473.   /*** nová síla hlavy - podle ovládání */
  474.   /* ovládání */
  475.        /* vodorovná */
  476.        if (KlKlávesaStisknuta(¼ervi.Jeden¼erv[i].Klávesy->Doleva)) {
  477.           /* doleva */
  478.           if (KlKlávesaStisknuta(¼ervi.Jeden¼erv[i].Klávesy->Nahoru)) {
  479.              /* a nahoru */
  480.              ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.X = - MaxSílaHlavy/sqrt(2);
  481.              ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.Y = - MaxSílaHlavy/sqrt(2);
  482.           }
  483.           else if (KlKlávesaStisknuta(¼ervi.Jeden¼erv[i].Klávesy->Dolà)) {
  484.              /* a dolu */
  485.              ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.X = - MaxSílaHlavy/sqrt(2);
  486.              ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.Y = MaxSílaHlavy/sqrt(2);
  487.           }
  488.           else {
  489.              /* nikam */
  490.              ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.X = - MaxSílaHlavy;
  491.              ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.Y = 0;
  492.           }
  493.        }
  494.        else if (KlKlávesaStisknuta(¼ervi.Jeden¼erv[i].Klávesy->Doprava)) {
  495.           /* doprava */
  496.           if (KlKlávesaStisknuta(¼ervi.Jeden¼erv[i].Klávesy->Nahoru)) {
  497.              /* a nahoru */
  498.              ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.X = MaxSílaHlavy/sqrt(2);
  499.              ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.Y = - MaxSílaHlavy/sqrt(2);
  500.           }
  501.           else if (KlKlávesaStisknuta(¼ervi.Jeden¼erv[i].Klávesy->Dolà)) {
  502.              /* a dolu */
  503.              ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.X = MaxSílaHlavy/sqrt(2);
  504.              ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.Y = MaxSílaHlavy/sqrt(2);
  505.           }
  506.           else {
  507.              /* nikam */
  508.              ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.X = MaxSílaHlavy;
  509.              ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.Y = 0;
  510.           }
  511.        }
  512.        else {
  513.           /* jenom svislé */
  514.           ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.X = 0;
  515.           if (KlKlávesaStisknuta(¼ervi.Jeden¼erv[i].Klávesy->Nahoru)) {
  516.              /* a nahoru */
  517.              ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.Y = - MaxSílaHlavy;
  518.           }
  519.           else if (KlKlávesaStisknuta(¼ervi.Jeden¼erv[i].Klávesy->Dolà)) {
  520.              /* a dolu */
  521.              ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.Y = MaxSílaHlavy;
  522.           }
  523.           else {
  524.              /* nikam */
  525.              ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.Y = 0;
  526.           }
  527.        }
  528.  
  529.   /*** nová rychlost hlavy - podle síly a zpomalení*/
  530.   AktHmotnost = ¼ervi.Jeden¼erv[i].Hmotnost;
  531.   ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Rychlost.X += ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.X/AktHmotnost;
  532.   ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Rychlost.Y += ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Síla.Y/AktHmotnost;
  533.   ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Rychlost.X *= Zpomalení;
  534.   ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Rychlost.Y *= Zpomalení;
  535.  
  536.   /*** nová poloha hlavy - podle rychlosti */
  537.   ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Poloha.X += ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Rychlost.X;
  538.   ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Poloha.Y += ¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Rychlost.Y;
  539.  
  540.   /***** kuliƒky */
  541.   for (j = Hlava + 1; j < ¼ervi.Jeden¼erv[i].PKuliƒek; j++){
  542.           /** nová síla - podle p²edchozí kuliƒky nebo hlavy*/
  543.              ¼ervi.Jeden¼erv[i].Kuliƒka[j].Síla.X = Tuhost*(¼ervi.Jeden¼erv[i].Kuliƒka[j-1].Poloha.X - ¼ervi.Jeden¼erv[i].Kuliƒka[j].Poloha.X);
  544.              ¼ervi.Jeden¼erv[i].Kuliƒka[j].Síla.Y = Tuhost*(¼ervi.Jeden¼erv[i].Kuliƒka[j-1].Poloha.Y - ¼ervi.Jeden¼erv[i].Kuliƒka[j].Poloha.Y);
  545.  
  546.           /** nová rychlost - podle síly a zpomalení */
  547.              AktHmotnost -= ¼ervi.Jeden¼erv[i].Kuliƒka[j-1].Hmotnost;
  548.              ¼ervi.Jeden¼erv[i].Kuliƒka[j].Rychlost.X += ¼ervi.Jeden¼erv[i].Kuliƒka[j].Síla.X/AktHmotnost;
  549.              ¼ervi.Jeden¼erv[i].Kuliƒka[j].Rychlost.Y += ¼ervi.Jeden¼erv[i].Kuliƒka[j].Síla.Y/AktHmotnost;
  550.              ¼ervi.Jeden¼erv[i].Kuliƒka[j].Rychlost.X *= Zpomalení;
  551.              ¼ervi.Jeden¼erv[i].Kuliƒka[j].Rychlost.Y *= Zpomalení;
  552.  
  553.  
  554.           /** nová poloha - podle rychlosti */
  555.              ¼ervi.Jeden¼erv[i].Kuliƒka[j].Poloha.X += ¼ervi.Jeden¼erv[i].Kuliƒka[j].Rychlost.X;
  556.              ¼ervi.Jeden¼erv[i].Kuliƒka[j].Poloha.Y += ¼ervi.Jeden¼erv[i].Kuliƒka[j].Rychlost.Y;
  557.   }
  558.  
  559.  
  560.   /*redukce bodà proti p²eteƒení*/
  561.   if (¼ervi.Jeden¼erv[i].Body > (2147483646)/2) {       /* 2147483648(2^31) - 2 */
  562.           for (j = 0; j < ¼ervi.P¼ervà; j++) ¼ervi.Jeden¼erv[j].Body /= 2;
  563.   }
  564.  
  565. a ;animuj ƒerva [i]
  566.   /* hlava */
  567.   AnimP²edm╪tAnimuj(¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Anim,¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Poloha.X-Grµí²kaPolíƒka/2,¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Poloha.Y-GrV∞τkaPolíƒka/2,-1);
  568.   /* ostatní kuliƒky */
  569.   for (j = Hlava + 1; j < ¼ervi.Jeden¼erv[i].PKuliƒek; j++){
  570.           AnimP²edm╪tAnimuj(¼ervi.Jeden¼erv[i].Kuliƒka[j].Anim,¼ervi.Jeden¼erv[i].Kuliƒka[j].Poloha.X-Grµí²kaPolíƒka/2,¼ervi.Jeden¼erv[i].Kuliƒka[j].Poloha.Y-GrV∞τkaPolíƒka/2,-1);
  571.   }
  572.  
  573. z ;obsluº interakce zdí a ƒervà (zprav. odrazy)
  574.   for (i = 0; i < ¼ervi.P¼ervà; i++){  /* kaºd∞ ƒerv */
  575.       /* p²eskoƒení nehrajících ƒervà */
  576.       if (¼ervi.Jeden¼erv[i].Hraje == Ne) continue;
  577.       for (j = 0; j < ¼ervi.Jeden¼erv[i].PKuliƒek; j++){   /* kaºdá kuliƒka O(n.m) */
  578.           /*** vτechny zdi */
  579.           /* svislé */
  580.           if (¼ervi.Jeden¼erv[i].Kuliƒka[j].Poloha.X - ¼ervi.Jeden¼erv[i].Kuliƒka[j].Polom╪r <= 0) {
  581.              /* levá */
  582.              ¼ervi.Jeden¼erv[i].Kuliƒka[j].Poloha.X = 1 + ¼ervi.Jeden¼erv[i].Kuliƒka[j].Polom╪r;
  583.              ¼ervi.Jeden¼erv[i].Kuliƒka[j].Rychlost.X = - KoefOdrazu * ¼ervi.Jeden¼erv[i].Kuliƒka[j].Rychlost.X;
  584.  
  585.           }
  586.           else if (¼ervi.Jeden¼erv[i].Kuliƒka[j].Poloha.X + ¼ervi.Jeden¼erv[i].Kuliƒka[j].Polom╪r >= µí²kaProstoru * Grµí²kaPolíƒka) {
  587.              /* pravá */
  588.              ¼ervi.Jeden¼erv[i].Kuliƒka[j].Poloha.X = µí²kaProstoru * Grµí²kaPolíƒka - 1 - ¼ervi.Jeden¼erv[i].Kuliƒka[j].Polom╪r;
  589.              ¼ervi.Jeden¼erv[i].Kuliƒka[j].Rychlost.X = - KoefOdrazu * ¼ervi.Jeden¼erv[i].Kuliƒka[j].Rychlost.X;
  590.  
  591.           }
  592.           /* vodorovné */
  593.           if (¼ervi.Jeden¼erv[i].Kuliƒka[j].Poloha.Y - ¼ervi.Jeden¼erv[i].Kuliƒka[j].Polom╪r <= 0) {
  594.              /* horní */
  595.              ¼ervi.Jeden¼erv[i].Kuliƒka[j].Poloha.Y = 1 + ¼ervi.Jeden¼erv[i].Kuliƒka[j].Polom╪r;
  596.              ¼ervi.Jeden¼erv[i].Kuliƒka[j].Rychlost.Y = - KoefOdrazu * ¼ervi.Jeden¼erv[i].Kuliƒka[j].Rychlost.Y;
  597.  
  598.  
  599.           }
  600.           else if (¼ervi.Jeden¼erv[i].Kuliƒka[j].Poloha.Y + ¼ervi.Jeden¼erv[i].Kuliƒka[j].Polom╪r >= V∞τkaProstoru * GrV∞τkaPolíƒka) {
  601.              /* dolní */
  602.              ¼ervi.Jeden¼erv[i].Kuliƒka[j].Poloha.Y = V∞τkaProstoru * GrV∞τkaPolíƒka - 1 - ¼ervi.Jeden¼erv[i].Kuliƒka[j].Polom╪r;
  603.              ¼ervi.Jeden¼erv[i].Kuliƒka[j].Rychlost.Y = - KoefOdrazu * ¼ervi.Jeden¼erv[i].Kuliƒka[j].Rychlost.Y;
  604.  
  605.           }
  606.       }
  607.   }
  608.  
  609. o ;obsluº interakce ocáskà ƒervà (ºranici)
  610.   for (i = 0; i < ¼ervi.P¼ervà; i++){  /* kaºd∞ ƒerv s kaºd∞m - O(n^2) */
  611.       /* p²eskoƒení nehrajících ƒervà */
  612.       if (¼ervi.Jeden¼erv[i].Hraje == Ne) continue;
  613.       for (j = 0; j < ¼ervi.P¼ervà; j++){  /* vτichni ƒervi */
  614.           /* p²eskoƒení nehrajících ƒervà a spoluhráƒà v t∞mu */
  615.           if ((¼ervi.Jeden¼erv[j].Hraje == Ne) Nebo (¼ervi.Jeden¼erv[i].T∞m == ¼ervi.Jeden¼erv[j].T∞m)) continue;
  616.           /* p²eskoƒení sebe sama (i == j) - rovnají se i t∞my, o ²ádek v∞τ */
  617.           /* sn╪dl mu ocas ? */
  618.           if (AnimP²edm╪tKolidujeS(¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Anim,¼ervi.Jeden¼erv[j].Kuliƒka[¼ervi.Jeden¼erv[j].PKuliƒek-1].Anim)){
  619.              /* ano, hlava ƒerva [i] koliduje s ocáskem (posl. kuliƒkou) ƒerva [j] */
  620.              /* sn╪dení */
  621.              AnimP²edm╪tSchovej(¼ervi.Jeden¼erv[j].Kuliƒka[¼ervi.Jeden¼erv[j].PKuliƒek-1].Anim);
  622.              /* p²ipoƒtení bodà */
  623.              ¼ervi.Jeden¼erv[j].Hmotnost -= ¼ervi.Jeden¼erv[j].Kuliƒka[¼ervi.Jeden¼erv[j].PKuliƒek-1].Hmotnost;
  624.              ¼ervi.Jeden¼erv[j].PKuliƒek--;
  625.              ¼ervi.Jeden¼erv[i].Body += sqr(¼ervi.PoƒáteƒníPKuliƒek - ¼ervi.Jeden¼erv[j].PKuliƒek);
  626.              if (¼ervi.Jeden¼erv[j].PKuliƒek <= 1) {
  627.                 /* ano, má uº jen hlavu - uº si nezahraje */
  628.                 AnimP²edm╪tAnimuj(¼ervi.Jeden¼erv[j].Kuliƒka[¼ervi.PoƒáteƒníPKuliƒek-1].Anim,¼ervi.Jeden¼erv[j].Kuliƒka[Hlava].Poloha.X-Grµí²kaPolíƒka/2,¼ervi.Jeden¼erv[j].Kuliƒka[Hlava].Poloha.Y-GrV∞τkaPolíƒka/2,1);
  629.                 AnimP²edm╪tSchovej(¼ervi.Jeden¼erv[j].Kuliƒka[Hlava].Anim);
  630.                 ¼ervi.Jeden¼erv[j].Hraje = Ne;
  631.                 ¼ervi.Pªiv∞ch¼ervà--;
  632.                 /* p²ipoƒtení bodà */
  633.                 ¼ervi.Jeden¼erv[i].Body += ¼ervi.Jeden¼erv[j].Body;
  634.              }
  635.           }
  636.       }
  637.   }
  638.  
  639. k ;zjisti konec hry
  640.  
  641.   /** regulérní: dàkaz sporem, p²edpokládám konec hry */
  642.   for (i = 0; i < ¼ervi.P¼ervà ; i++){         /* urƒení moºného vít╪zného t∞mu */
  643.         if (¼ervi.Jeden¼erv[i].Hraje == Ano) {
  644.               VT∞m = ¼ervi.Jeden¼erv[i].T∞m;
  645.               break;
  646.         }
  647.   }
  648.  
  649.   for (i = 0; i < ¼ervi.P¼ervà; i++){         /* jsou vτichni zúƒastn╪ní z t∞mu? */
  650.         if ((¼ervi.Jeden¼erv[i].Hraje == Ano) ASouƒasn╪ (¼ervi.Jeden¼erv[i].T∞m != VT∞m)){
  651.               KonecHry = Ne;   /* existuje hrრz jiného t∞mu, proto jeτt╪ není konec */
  652.               break;
  653.         }
  654.         else KonecHry = Ano;
  655.   }
  656.  
  657.   /** vynucen∞ ovládáním: */
  658.   Kl¼tiUdálost(gKlUdálost);
  659.   if ((gKlUdálost.Typ==KlUdálostKlDolà) ASouƒasn╪ (gKlUdálost.Klávesa==KlScanEsc) ASouƒasn╪ (KonecHry == Ne)){
  660.      /* stisk Esc a není regulérní konec */
  661.      /*** ov╪²ení */
  662.      /* p²íprava a vykreslení */
  663.      for (i = 0;i < 6;i++){
  664.          Hláτka[i] = AnimP²edm╪tVytvo²(1 + i,1,1,1);
  665.          AnimP²edm╪tAnimuj(Hláτka[i],HláτkaX + i * Grµí²kaPolíƒka,HláτkaY,-1);
  666.      }
  667.      /* ƒekání na odpov╪╘ */
  668.      i = Ne;
  669.      KlVyprázdniFrontuUdálostí();
  670.      while (i == Ne){
  671.          Kl¼ekejNaUdálostKlávesnice();
  672.          if ((gKlUdálost.Klávesa == KlScanA) Nebo (gKlUdálost.Klávesa == KlScanEsc)) {
  673.             /* konec hry */
  674.             KonecHry = Ano;
  675.             i = Ano;
  676.          }
  677.          if (gKlUdálost.Klávesa == KlScanN) {
  678.             /* hra pokraƒuje */
  679.             i = Ano;
  680.          }
  681.      }
  682.      /* zruτení dotazu */
  683.      for (i = 0; i < 6; i++){
  684.          AnimP²edm╪tSchovej(Hláτka[i]);
  685.          AnimP²edm╪tZruτ(Hláτka[i]);
  686.      }
  687.   }
  688.  
  689. P ;pozastav hru
  690.   /* vytvo²ení a vykreslení */
  691.   for (i = 0;i < 6;i++){
  692.       Hláτka[i] = AnimP²edm╪tVytvo²(61 + i,1,1,1);
  693.       AnimP²edm╪tAnimuj(Hláτka[i],HláτkaX + i*Grµí²kaPolíƒka,HláτkaY,-1);
  694.   }
  695.   /*ƒekání*/
  696.   KlVyprázdniFrontuUdálostí();
  697.   Kl¼ekejNaUdálostKlávesnice();
  698.   /*zruτení p²edm╪tà*/
  699.   for (i = 0;i < 6;i++){
  700.       AnimP²edm╪tSchovej(Hláτka[i]);
  701.       AnimP²edm╪tZruτ(Hláτka[i]);
  702.   }
  703.  
  704. U ;uloº  rastr
  705.   GrUloºBMP(0,0,-1,-1,"*\\SS"+StrL¼íslo(SSI++,4)+".bmp");
  706.   GrPiτZnak('*');
  707.  
  708. h ;grafick∞ konec a hodnocení
  709.   /*p²íprava a vykreslení*/
  710.   GrNastavBarvuPop²edí(¼erná);
  711.   GrNastavBarvuPozadí(¼erná);
  712.   GrKresliVypln╪n∞Obdélník(HláτkaX - Grµí²kaZnaku,HláτkaY - GrV∞τkaZnaku,HláτkaX + 41*Grµí²kaZnaku,HláτkaY + 9*GrV∞τkaZnaku); /* podklad */
  713.  
  714.   /* vytvo²ení a animace hláτky KONEC */
  715.   for (i = 0; i < 6; i++){
  716.       Hláτka[i] = AnimP²edm╪tVytvo²(46 + i,1,1,1);
  717.       AnimP²edm╪tAnimuj(Hláτka[i],HláτkaX + i*Grµí²kaPolíƒka,HláτkaY - 50,-1);
  718.   }
  719.   GrNastavPozici(HláτkaX,HláτkaY);
  720.   GrNastavBarvuPop²edí(Sv╪tloτedá);
  721.  
  722.   /*** v∞pis vít╪ze */
  723.       GrPiτⁿet╪zec("Zvít╪zil hrრ");
  724.       /*nalezení vít╪ze*/
  725.       j = -1;
  726.       MaxBody = 0;
  727.       for (i = 0;i < ¼ervi.P¼ervà; i++){
  728.           if ((1) ASouƒasn╪ (¼ervi.Jeden¼erv[i].Body > MaxBody)){
  729.              j = i;
  730.              MaxBody = ¼ervi.Jeden¼erv[i].Body;
  731.           }
  732.       }
  733.       /* v∞pis */
  734.       GrNastavBarvuPop²edí(¼ervi.Jeden¼erv[j].Barva);
  735.       GrPiτⁿet╪zec(¼ervi.Jeden¼erv[j].Jméno);
  736.       GrNastavBarvuPop²edí(Sv╪tloτedá);
  737.       GrPiτⁿet╪zec(", t∞m ƒíslo ");
  738.       GrNastavBarvuPop²edí(¼ervi.Jeden¼erv[j].Barva);
  739.       GrPiτL¼íslo(¼ervi.Jeden¼erv[j].T∞m + 1,-1);
  740.       GrNastavBarvuPop²edí(Sv╪tloτedá);
  741.       GrPiτZnak('.');
  742.  
  743.   /**** tabulka */
  744.       /* záhlaví */
  745.       GrPiτNov∞ⁿádek();
  746.       GrPiτNov∞ⁿádek();
  747.       GrNastavPozici(HláτkaX + 15,GrPoziceY());
  748.       GrPiτⁿet╪zec("po². jméno    t∞m  body");
  749.       GrPiτNov∞ⁿádek();
  750.  
  751.       /*první ²ádek*/
  752.       GrPiτNov∞ⁿádek();
  753.       GrNastavPozici(HláτkaX + 15 + Grµí²kaZnaku,GrPoziceY());
  754.       /*barva*/
  755.       GrNastavBarvuPop²edí(¼ervi.Jeden¼erv[j].Barva);
  756.       GrPiτⁿet╪zec("1.   ");
  757.       GrNastavBarvuPop²edí(Sv╪tloτedá);
  758.       GrPiτⁿet╪zec(¼ervi.Jeden¼erv[j].Jméno);
  759.       GrNastavPozici(HláτkaX + 15 + MaxDJména*Grµí²kaZnaku + 5*Grµí²kaZnaku,GrPoziceY());
  760.       GrPiτL¼íslo(¼ervi.Jeden¼erv[j].T∞m + 1,-1);
  761.       GrPiτⁿet╪zec("    ");
  762.       GrPiτL¼íslo(¼ervi.Jeden¼erv[j].Body,-1);
  763.  
  764.       /* oºivení hráƒà pro úƒely hledání po²edí */
  765.       for (i = 0; i < ¼ervi.P¼ervà; i++){
  766.           ¼ervi.Jeden¼erv[i].Hraje = Ano;
  767.       }
  768.       ¼ervi.Jeden¼erv[j].Hraje = Ne;
  769.  
  770.       for (i = 0; i < ¼ervi.P¼ervà - 1; i++){
  771.           /*²ádek*/
  772.           /*kter∞ hráƒ? - vyuºívá vlastnosti .Hraje */
  773.           MaxBody = 0;
  774.           for (j = 0; j < ¼ervi.P¼ervà; j++){
  775.               if ((¼ervi.Jeden¼erv[j].Body >= MaxBody) ASouƒasn╪ (¼ervi.Jeden¼erv[j].Hraje == Ano)){
  776.                  MaxBody = ¼ervi.Jeden¼erv[j].Body;
  777.                  k = j;
  778.               }
  779.           }
  780.           ¼ervi.Jeden¼erv[k].Hraje = Ne;
  781.           ¼ervi.Pªiv∞ch¼ervà--;
  782.  
  783.           /*v∞pis*/
  784.           GrPiτNov∞ⁿádek();
  785.           GrNastavPozici(HláτkaX + 15 + Grµí²kaZnaku,GrPoziceY());
  786.           GrNastavBarvuPop²edí(¼ervi.Jeden¼erv[k].Barva);
  787.           GrPiτU¼íslo(i+2,-1);  /* po²adí */
  788.           GrPiτZnak('.');
  789.           GrPiτⁿet╪zec("   ");
  790.           GrNastavBarvuPop²edí(Sv╪tloτedá);
  791.           GrPiτⁿet╪zec(¼ervi.Jeden¼erv[k].Jméno);
  792.           GrNastavPozici(HláτkaX + 15 + MaxDJména*Grµí²kaZnaku + 5*Grµí²kaZnaku,GrPoziceY());
  793.           GrPiτL¼íslo(¼ervi.Jeden¼erv[k].T∞m + 1,-1);
  794.           GrPiτⁿet╪zec("    ");
  795.           GrPiτL¼íslo(¼ervi.Jeden¼erv[k].Body,-1);
  796.       }
  797.  
  798.       ¼ekej(1500);
  799.       KlVyprázdniFrontuUdálostí();     /* proti p²edƒasnému odklepnutí */
  800.       Kl¼ekejNaUdálostKlávesnice();
  801.   /** konec tabulky */
  802.  
  803.       /* screenshot??
  804.       if ((gKlUdálost.Typ==KlUdálostKlDolà) ASouƒasn╪ (gKlUdálost.Klávesa==KlScanF1))  GrUloºBMP(0,0,-1,-1,"obraz.bmp");*/
  805.  
  806.   /* zruτení hláτky KONEC */
  807.   for (i = 0; i < 6; i++){
  808.       AnimP²edm╪tSchovej(Hláτka[i]);
  809.       AnimP²edm╪tZruτ(Hláτka[i]);
  810.   }
  811.  
  812. Z ;zjisti novou hru
  813.   /* p²íprava a vykreslení */
  814.   for (i = 0; i < 6; i++){
  815.       Hláτka[i] = AnimP²edm╪tVytvo²(16 + i,1,1,1);
  816.       AnimP²edm╪tAnimuj(Hláτka[i],HláτkaX + i * Grµí²kaPolíƒka,HláτkaY,-1);
  817.   }
  818.   /* ƒekání na odpov╪╘ */
  819.   KlVyprázdniFrontuUdálostí();
  820.   i = Ne;
  821.   while (i == Ne){
  822.         Kl¼ekejNaUdálostKlávesnice();
  823.         if (gKlUdálost.Klávesa == KlScanA) {
  824.            /* ano, znova */
  825.            KonecHraní = Ne;
  826.            /*** nulovat body? */
  827.                /* zruτení p²edm╪tà minulého dotazu */
  828.                for (i = 0; i < 6; i++){
  829.                    AnimP²edm╪tSchovej(Hláτka[i]);
  830.                    AnimP²edm╪tZruτ(Hláτka[i]);
  831.                }
  832.                /* p²íprava a vykreslení */
  833.                for (i = 0; i < 6; i++){
  834.                    Hláτka[i] = AnimP²edm╪tVytvo²(31 + i,1,1,1);
  835.                    AnimP²edm╪tAnimuj(Hláτka[i],HláτkaX + i*Grµí²kaPolíƒka,HláτkaY,-1);
  836.                }
  837.                /* ƒekání na odpov╪╘ */
  838.                KlVyprázdniFrontuUdálostí();
  839.                i = Ne;
  840.                while (i == Ne){
  841.                      Kl¼ekejNaUdálostKlávesnice();
  842.                      if (gKlUdálost.Klávesa == KlScanA) {
  843.                         /*ano, nulování*/
  844.                         for (j = 0; j < ¼ervi.P¼ervà; j++) ¼ervi.Jeden¼erv[j].Body = 0;
  845.                      }
  846.                      i = Ano;
  847.                }
  848.                /* zruτení p²edm╪tà dotazu na nulování */
  849.                for (i = 0; i < 6; i++){
  850.                    AnimP²edm╪tSchovej(Hláτka[i]);
  851.                    AnimP²edm╪tZruτ(Hláτka[i]);
  852.                }
  853.  
  854.         }
  855.         else {
  856.            /* konec hraní */
  857.            KonecHraní = Ano;
  858.            /* zruτení p²edm╪tà dotazu */
  859.            for (i = 0; i < 6; i++){
  860.                AnimP²edm╪tSchovej(Hláτka[i]);
  861.                AnimP²edm╪tZruτ(Hláτka[i]);
  862.            }
  863.  
  864.         }
  865.         i = Ano;
  866.   }
  867.  
  868. 9 ;zruτ p²edm╪ty, ukli╘ po hraní
  869.   for (i = 0; i < ¼ervi.P¼ervà; i++){  /* vτichni ƒervi */
  870.       /* hlava */
  871.       AnimP²edm╪tZruτ(¼ervi.Jeden¼erv[i].Kuliƒka[Hlava].Anim);
  872.       /* ostatní kuliƒky */
  873.       for (j = Hlava + 1; j < ¼ervi.PoƒáteƒníPKuliƒek; j++){
  874.           AnimP²edm╪tZruτ(¼ervi.Jeden¼erv[i].Kuliƒka[j].Anim);
  875.       }
  876.   }
  877.  
  878. -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
  879. #N ;opakuj n-krát vzestupn╪ pro prom╪nnou       #N:(i,8)  (8x) i=0,1..7
  880.     Od0
  881.  
  882. /P ;zjisti pozastavení hry
  883.    ((gKlUdálost.Typ==KlUdálostKlDolà) ASouƒasn╪ (gKlUdálost.Klávesa == KlScanF1))
  884.  
  885. /s ; screenshot
  886.    ((gKlUdálost.Typ==KlUdálostKlDolà) ASouƒasn╪ (gKlUdálost.Klávesa == KlScanF2))
  887. =SP---------------------------------------------------------------------------
  888. ;-h---------------------------------------------------------------------------
  889. short int M_Nápov╪da( void )
  890. -s--M_Nápov╪da                                                                  ■  15  -2  -1 259
  891.       ____________M_Nápov╪da___________
  892.    p²íprava       napovídání      zakonƒení
  893.      p!               *:Konec==Ne    k!
  894.          ___________kousek__________
  895.      zobrazení                   vstupy
  896.         Z!                         *:Zm╪na==Ne
  897.             _____________________vstup______________________
  898.          naƒtení           zm╪na~nebo~ukonƒení   interaktivita~stránky
  899. :Kl¼tiUdálost(gKlUdálost)          z!
  900. -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
  901. p ;p²iprav podmínky
  902.  
  903.   GrNastavV∞stup(GrV∞stupOkno);
  904.   GrNastavPàvodníPaletu();
  905.   GrNastavBarvuPozadí(0);
  906.   KlVyprázdniFrontuUdálostí();
  907.   short int Stránka = 0, Zm╪na = Ne, Konec = Ne;
  908.   int PStránek;
  909.   TypSoubor Soubor;
  910.   string ⁿet╪zec;  /* pro naƒítání textà nápov╪dy */
  911.  
  912.   /* ƒti ze souboru poƒet stránek */
  913.   Soubor = SouborOtev²i("*\\Cervi_hl\\help.txt",SouborP²ístup¼tení|SouborP²ístupTextov∞);
  914.   /* test na neúsp╪ch */
  915.   if (Soubor == 0) {    /* neúsp╪ch */
  916.      /* hláτka */
  917.      GrPiτHláτku("CHYBA: Nápov╪da nemàºe p²istupovat ke sv∞m souboràm (Cervi_hl\\help.txt).","      Pokuste se umoºnit p²ístup, nebo kontaktujte v∞robce.");
  918.      /* úklid */
  919.      /* návrat */
  920.      return Ne;
  921.   }
  922.   Soubor¼tiNov∞ⁿádek(Soubor);
  923.   if (Soubor¼tiI¼íslo(Soubor,PStránek) != 0){   /* chyba! */
  924.      /* hláτka */
  925.      GrPiτHláτku("CHYBA: Soubor nápov╪dy (Cervi_hl\\help.txt) je poτkozen.","      Pokuste se obnovit soubor, nebo kontaktujte v∞robce.");
  926.      /* úklid */
  927.      /* návrat */
  928.      return Ne;
  929.   }
  930.   SouborZav²i(Soubor);
  931.  
  932. z ;zjisti zm╪nu nebo ukonƒení
  933.   if (gKlUdálost.Typ == KlUdálostKlDolà){  /* stisk klávesy */
  934.      if ((gKlUdálost.Klávesa == KlScanDoleva) Nebo (gKlUdálost.Klávesa == KlScanNahoru)){
  935.         /* doleva nebo nahoru - zp╪t */
  936.         Stránka--;
  937.         if (Stránka < 0) {  /* vyjela p²ed zaƒátek */
  938.            Stránka = 0;
  939.         }
  940.         else  {
  941.            Zm╪na = Ano;
  942.         }
  943.      }
  944.      else if ((gKlUdálost.Klávesa == KlScanDoprava) Nebo (gKlUdálost.Klávesa == KlScanDolà)){
  945.         /* doprava nebo dolà - dál */
  946.         Stránka++;
  947.         if (Stránka > PStránek - 1) { /* vyjela za konec */
  948.            Stránka = PStránek - 1;
  949.         }
  950.         else  {
  951.            Zm╪na = Ano;
  952.         }
  953.  
  954.      }
  955.      else if ((gKlUdálost.Klávesa >= KlScan1) ASouƒasn╪ (gKlUdálost.Klávesa <= KlScan1 + PStránek - 1)){
  956.         /* p²ímá volba ƒísla stránky */
  957.         Zm╪na = Ano;
  958.         Stránka = (gKlUdálost.Klávesa - KlScan1);
  959.      }
  960.      if ((gKlUdálost.Klávesa == KlScanEsc) Nebo (gKlUdálost.Klávesa == KlScanF10)){
  961.         /* ukonƒení */
  962.         Konec = Ano;
  963.         Zm╪na = Ano;
  964.      }
  965.   }
  966.  
  967. k ;zakonƒi
  968.   return 0;
  969.  
  970. Z ;zobraz stránku Stránka nápov╪dy
  971.  
  972.   GrSmaºOkno();
  973.  
  974.   /* naƒtení scény */
  975.  
  976.   /* naƒtení textu ze souboru */
  977.   Soubor = SouborOtev²i("*\\Cervi_hl\\help" + StrL¼íslo(Stránka,-1) + ".lat",SouborP²ístup¼tení|SouborP²ístupTextov∞);
  978.   /* kontrola úsp╪chu */
  979.   if (Soubor == 0) {    /* neúsp╪ch */
  980.      /* hláτka */
  981.      GrPiτHláτku("CHYBA: Nápov╪da nemàºe p²istupovat ke sv∞m souboràm. (Cervi_hl\\help" + StrL¼íslo(Stránka,-1) + ".lat)","     Pokuste se umoºnit p²ístup, nebo kontaktujte v∞robce.");
  982.      /* úklid */
  983.      /* návrat */
  984.      return Ne;
  985.   }
  986.  
  987.   /* nadpis */
  988.   GrNastavPozici(80,30);
  989.   GrNastavBarvuPop²edí(Modrá);
  990.   GrPiτⁿet╪zec("Nápov╪da pro hru ¼ervi - ");
  991.   GrPiτL¼íslo(Stránka+1,-1);
  992.   GrPiτⁿet╪zec(". stránka: ");
  993.   GrPiτNov∞ⁿádek();
  994.   GrNastavPozici(80,GrPoziceY()+5);
  995.   Soubor¼tiSⁿet╪zec(Soubor,ⁿet╪zec);
  996.   StrSmaº(ⁿet╪zec,-1,1);        /* umazání \n */
  997.   GrNastavBarvuPop²edí(¼ervená);
  998.   GrPiτⁿet╪zec(ⁿet╪zec);
  999.   GrNastavBarvuPop²edí(Sv╪tloτedá);
  1000.   GrPiτNov∞ⁿádek();
  1001.   GrPiτNov∞ⁿádek();
  1002.  
  1003.   /* sta£ */
  1004.   GrDopiτSoubor(Soubor,35,GrPoziceY());
  1005.  
  1006.   /* konec naƒítání */
  1007.   SouborZav²i(Soubor);
  1008.  
  1009.   /* ? naƒtení dalτího obrázku */
  1010.   Zm╪na = Ne;
  1011.  
  1012. -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
  1013. =SP---------------------------------------------------------------------------
  1014.  
  1015. ;-h---------------------------------------------------------------------------
  1016. short int M_Soubor( void )
  1017. -s--M_Soubor                                                                    ■   3  -2 -26   3
  1018.  M_Soubor
  1019. :return~0
  1020. -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
  1021. -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
  1022. =SP---------------------------------------------------------------------------
  1023.  
  1024. ;-h---------------------------------------------------------------------------
  1025. short int M_Auto²i( void )
  1026. -s--M_Auto²i                                                                    ■   3  -2 -27   3
  1027.  M_Auto²i
  1028. :return~0
  1029. -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
  1030. -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
  1031. =SP---------------------------------------------------------------------------
  1032.  
  1033. ;-h---------------------------------------------------------------------------
  1034. short int M_Konec( void )
  1035. -s--M_Konec                                                                     ■   2  -2 -27   3
  1036.  M_Konec
  1037. :return~1;
  1038. -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
  1039. -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
  1040. =SP---------------------------------------------------------------------------
  1041.  
  1042. ;-h---------------------------------------------------------------------------
  1043. void ZobrazMenu( void )
  1044. -s--ZobrazMenu                                                                  ■  21  -2  -3 259
  1045.           _________________ZobrazMenu_________________
  1046. p²íprava~a~vykreslení                             Obsluha
  1047.         01!                                          *:KonecM~==~Ne
  1048.              ____________________________________Jedno~kolo___________________________________
  1049.            Vstupy    Aktivace?                   V∞b╪r?   model~ƒerva   :¼ekej(50)   zvláτtní~ukonƒení
  1050.             v!       klávesnicí                    /v                                    (Esc,~F10)
  1051.                         k!             ___________ano____________                           z!
  1052.                                  provedení~akce   znovu-vykreslení~a~nov∞~vstup
  1053.                                       p!                      1v!
  1054. -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
  1055. 0 ;deklaruj lokální prom╪nné
  1056.   short int i;     /* pomocná indexovací prom╪nná */
  1057.   short int KonecM = 0;
  1058.   /* p²íprava menu */
  1059.   TypMenu Menu;
  1060.   Menu.PTlaƒítek = 3;
  1061.   Menu.AktivTlaƒítko = 0;
  1062.  
  1063.   Menu.Tlaƒítko[0].Jméno = "Nová hra";
  1064.   Menu.Tlaƒítko[0].X = 14;
  1065.   Menu.Tlaƒítko[0].Y = 2;
  1066.   Menu.Tlaƒítko[0].¼P²edm╪tu = 114;        /* sudá ƒísla!! */
  1067.   Menu.Tlaƒítko[0].Akce = M_NovéHraní;
  1068.  
  1069.   Menu.Tlaƒítko[1].Jméno = "Nápov╪da";
  1070.   Menu.Tlaƒítko[1].X = 11;
  1071.   Menu.Tlaƒítko[1].Y = 6;
  1072.   Menu.Tlaƒítko[1].¼P²edm╪tu = 114;
  1073.   Menu.Tlaƒítko[1].Akce = M_Nápov╪da;
  1074.  
  1075.   Menu.Tlaƒítko[2].Jméno = "Konec Programu";
  1076.   Menu.Tlaƒítko[2].X = 3;
  1077.   Menu.Tlaƒítko[2].Y = 8;
  1078.   Menu.Tlaƒítko[2].¼P²edm╪tu = 114;
  1079.   Menu.Tlaƒítko[2].Akce = M_Konec;
  1080.  
  1081. 1 ;vykresli nabídku
  1082.   if (KonecM == Ne){ /* pokud jeτt╪ není konec */
  1083.      /* naƒtení scény */
  1084.      NaƒtiScénu("*\\Cervi.s00");
  1085.      /* tlaƒítka */
  1086.      for (i = 0; i < Menu.PTlaƒítek; i++){  /* pro vτechna tlaƒítka */
  1087.           ¼arujNaPozici(Menu.Tlaƒítko[i].¼P²edm╪tu,Menu.Tlaƒítko[i].X,Menu.Tlaƒítko[i].Y);
  1088.      }
  1089.      /* aktivace nové hry */
  1090.      Menu.AktivTlaƒítko = 0;    /* aktivní nová hra */
  1091.      AktivujTlaƒítkoNa(Menu.Tlaƒítko[Menu.AktivTlaƒítko].X,Menu.Tlaƒítko[Menu.AktivTlaƒítko].Y);
  1092.   }
  1093.  
  1094. v ;zpracuj data ze vstupních za²ízení
  1095.   Kl¼tiUdálost(gKlUdálost);
  1096.  
  1097. k ;prob╪hla aktivace klávesnicí ? -> tak aktivuj
  1098.   if (gKlUdálost.Typ == KlUdálostKlDolà){  /* stisk klávesy */
  1099.      if ((gKlUdálost.Klávesa == KlScanDoleva) Nebo (gKlUdálost.Klávesa == KlScanDolà)){
  1100.         /* doleva a dolà */
  1101.         i = Menu.AktivTlaƒítko;
  1102.         i++;
  1103.         i = (i > Menu.PTlaƒítek - 1) ? Menu.PTlaƒítek - 1 : i; /* nejde za konec */
  1104.         if (i != Menu.AktivTlaƒítko) { /* zm╪na akt. tl. */
  1105.             DeaktivujTlaƒítkoNa(Menu.Tlaƒítko[Menu.AktivTlaƒítko].X,Menu.Tlaƒítko[Menu.AktivTlaƒítko].Y);
  1106.             Menu.AktivTlaƒítko = i; /* ( Menu.AktivTlaƒítko++ ) */
  1107.             AktivujTlaƒítkoNa(Menu.Tlaƒítko[Menu.AktivTlaƒítko].X,Menu.Tlaƒítko[Menu.AktivTlaƒítko].Y);
  1108.         }
  1109.      }
  1110.      else if ((gKlUdálost.Klávesa == KlScanDoprava) Nebo (gKlUdálost.Klávesa == KlScanNahoru)){
  1111.         /* doprava a nahoru */
  1112.         i = Menu.AktivTlaƒítko;
  1113.         i--;
  1114.         i = (i < 0) ? 0 : i; /* nejde za konec */
  1115.         if (i != Menu.AktivTlaƒítko) { /* zm╪na akt. tl. */
  1116.             DeaktivujTlaƒítkoNa(Menu.Tlaƒítko[Menu.AktivTlaƒítko].X,Menu.Tlaƒítko[Menu.AktivTlaƒítko].Y);
  1117.             Menu.AktivTlaƒítko = i; /* ( Menu.AktivTlaƒítko-- ) */
  1118.             AktivujTlaƒítkoNa(Menu.Tlaƒítko[Menu.AktivTlaƒítko].X,Menu.Tlaƒítko[Menu.AktivTlaƒítko].Y);
  1119.         }
  1120.      }
  1121.   }
  1122.  
  1123.  
  1124.  
  1125. p ;prove╘ akci aktivního tlaƒítka
  1126.   KlVyprázdniFrontuUdálostí();
  1127.   KonecM = Menu.Tlaƒítko[Menu.AktivTlaƒítko].Akce();
  1128.   KlVyprázdniFrontuUdálostí();
  1129.  
  1130. z ;zjisti zvláτtní ukonƒení
  1131.   if ((gKlUdálost.Typ == KlUdálostKlDolà) ASouƒasn╪ ((gKlUdálost.Klávesa == KlScanEsc) Nebo (gKlUdálost.Klávesa == KlScanF10))) {
  1132.      /* stisk Esc nebo F10 */
  1133.      KonecM = Menu.Tlaƒítko[TlKonec].Akce();
  1134.   }
  1135.  
  1136. -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
  1137. /v ;byl proveden v∞b╪r
  1138.    ((gKlUdálost.Typ == KlUdálostKlDolà) ASouƒasn╪ ((gKlUdálost.Klávesa == KlScanEnter) Nebo (gKlUdálost.Klávesa == KlScanMezerník) Nebo (gKlUdálost.Klávesa == KlScanNumEnter)))
  1139.    /* stisk kláves Enter (i NumPad) nebo Mezerník */
  1140. =SP---------------------------------------------------------------------------
  1141.  
  1142. ;-h---------------------------------------------------------------------------
  1143. void main( void )
  1144. -s--CERVI                                                                       ■   5  -2 -17 259
  1145.    _________CERVI__________
  1146. Zaƒátek    Prost²edek   Konec
  1147.   z!     :ZobrazMenu()   k!
  1148. -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
  1149. z ;nastav obrazovku, grafiku, klávesnici a myτ
  1150.   EscPlus();
  1151.   Vytvo²Prostor();
  1152.   RychlostBaltazara(9);
  1153.   GrNastavV∞stup(GrV∞stupOkno);
  1154.   GrNastavPàvodníPaletu();
  1155.   GrNastavBarvuPozadí(0);
  1156.   AnimNastavGrV∞stup(GrV∞stupOkno);
  1157.   NastavJménoBankyP²edm╪tà("*\\Cervi.b00");
  1158.   KlZaƒátekObsluhy(0);
  1159.  
  1160. k ;vra£ obrazovku, grafiku, klávesnici a myτ do pàvodního stavu
  1161.   KlKonecObsluhy();
  1162.   ZruτProstor();
  1163.   EscMínus();
  1164.  
  1165. -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
  1166. =SP---------------------------------------------------------------------------
  1167.  
  1168. // Konec souboru
  1169.