home *** CD-ROM | disk | FTP | other *** search
/ PC World 2002 December / PCWorld_2002-12_cd.bin / Software / Komercni / Baltik / katB.exe / katB / PARTIE / partie_i.sgp < prev    next >
Text File  |  2002-09-10  |  9KB  |  251 lines

  1. SGPC   5.05 034#000001035  3.09.2002 19:46:55                                    StructNo 0   0
  2.  
  3. # include <sgpbalt.h>
  4.  
  5.  int i,ii;  // pomocné
  6.  struct {
  7.   int R,G,B;
  8.  } paleta[15];  // paleta pro úvodní rozsv╪tlení obrazu
  9.  int R,G,B;  // pomocné poloºky palety
  10.  Typ¼as cas;  // m╪²ení prodlevy pro samovolné ztmavení obrazovky
  11.  
  12. /////////////////////
  13. // Pomocné definice
  14. //
  15.  
  16. #define NE      0
  17. #define ANO     1
  18.  
  19. #define ABS(x)  ((x)>0?(x):-(x))
  20.  
  21. #define __CYKLUS(N)   __Cyklus(1,N);__Cyklus(0,N);   //Hlava cyklu
  22. #define __MPVC_ 100   //Maximální poƒet vno²en∞ch cyklà
  23.  
  24. int __Cyklus( int Nov∞, int Poƒet )
  25. //Nov∞ > 0: Otev²ení nového cyklu s N opakováními (vƒetn╪ 0)
  26. //Nov∞ = 0: Dalτí pràchod cyklem
  27. //Nov∞ < 0: P²edƒasné ukonƒení cyklu
  28. { static int I[__MPVC_];
  29.   static int i = -1;
  30.   if( Nov∞ > 0 )
  31.   { if( ++i >= __MPVC_)
  32.     { TxtPiτⁿet╪zec("P²íliτ mnoho vno²en∞ch cyklà");
  33.       while(1) {Tón(1000);};
  34.     }else I[i]=Poƒet;
  35.   }else if( Nov∞ == 0 )
  36.   { if(--I[i]<0){ i--; return(0);}
  37.                   else return(1);
  38.   }else return(-(i--));  //Vrací zápornou aktuální hloubku vno²ení
  39. }  //Cyklus
  40.  
  41. void ¼ekejNaReakci(void)
  42. //¼eká na sitsk klávesy nebo tlaƒítka myτi
  43. { VyprázdniFrontuKláves();
  44.   MyτVyprázdniFrontuUdálostí();
  45.   ¼ekej(NaKlávesu|NaMyτ);
  46.   VyprázdniFrontuKláves();
  47.   MyτVyprázdniFrontuUdálostí();
  48. } //¼ekejNaReakci
  49.  
  50. long ¥¼ti¼íslo ( char* Text )
  51. { long Vrátit = 0;
  52.   GrNastavPozici(272, 0);
  53.   Gr¼tiL¼íslo(Text,Vrátit,8,1,0xe);
  54.   GrNastavPozici(272, 0);
  55.   GrPiτⁿet╪zec( "               " );
  56.   return Vrátit;
  57. } //¥¼ti¼íslo
  58.  
  59. long BaltEmuluj( char* Text )
  60. { long       Vrátit = 0;
  61.   int        Klávesa;
  62.   int        Konec = 0;
  63.   TypP²edm╪t P²edm╪t=1;
  64.   VyprázdniFrontuKláves();
  65.   GrNastavBarvy( 0x7 );  GrSmaºOkno();
  66.   GrPiτⁿet╪zec( Text );
  67.   Tón(1000); ¼ekej(10); VypniTón();
  68.   while (!Konec)
  69.   { int p;
  70.     GrNastavPozici(0, GrV∞τkaZnaku);
  71.     GrPiτⁿet╪zec( "ⁿá: "); GrPiτL¼íslo( PoziceBaltazaraY(), 2 );
  72.     GrPiτⁿet╪zec( ",  Sl: " ); GrPiτL¼íslo( PoziceBaltazaraX(), 2 );
  73.     GrPiτⁿet╪zec( ",  Sm: " );
  74.     int s=Sm╪rBaltazara();
  75.     GrPiτⁿet╪zec( s==V∞chod ? "V∞chod" :
  76.                   s==Jih    ? "Jih   " :
  77.                   s==Západ  ? "Západ " :
  78.                               "Sever " );
  79.     GrPiτⁿet╪zec( ",  Ba: " ); NastavBarvu¼arování( p=NastavBarvu¼arování(0));
  80.                               GrPiτL¼íslo( p, 2 );
  81.     GrPiτⁿet╪zec( ",  Ry: " ); RychlostBaltazara(p = RychlostBaltazara(0));
  82.                               GrPiτL¼íslo( p, 2 );
  83.     switch ¼tiKlávesuZFrontyS¼ekáním()
  84.     { case KlDoleva:   VlevoVbok(); break;
  85.       case KlDoprava:  VpravoVbok(); break;
  86.       case KlNahoru:   Popojdi(1); break;
  87.       case KlDolà:     ¼aruj(Baltedit()); break;
  88.       case KlIns:      Vrátit = ¥¼ti¼íslo( "¼íslo: " ); break;
  89.       case 'B':
  90.       case 'b':        NastavBarvu¼arování( ¥¼ti¼íslo("Barva: ") ); break;
  91.       case 'C':
  92.       case 'c':        ¼aruj(¼tverec); break;
  93.       case 'R':
  94.       case 'r':        RychlostBaltazara( ¥¼ti¼íslo("Rychlost: ") ); break;
  95.       case KlEnter:    Konec = 1; break;
  96.     } //switch
  97.   } //while
  98.   GrNastavBarvy( 0x77 ); GrSmaºOkno();
  99.   return Vrátit;
  100. } //BaltEmuluj
  101.  
  102.  
  103. ///////////////////
  104. // Globální makra
  105. //
  106. -o1-Globals ----------------------------------------------------------------
  107. 0 ;prom╪nné
  108.   ;globální prom╪nné (jsou definovány v globálních definicích  Ctrl+G):
  109.     ;prom╪nné celoƒíselné: gA,gB,gC,gD,gE,gF,gG,gH,gI,gJ,gKlávesa;
  110.        ;dalτí p²eddefinované globální prom╪nné mají vºdy p²edponu g..
  111.        ;a jejich názvy jsou shodné s lokálními prom╪nn∞mi definovan∞mi níºe,
  112.        ;nap². gD¼íslo1, gⁿet╪zec atd.
  113.   ;lokální prom╪nné:
  114.     ;prom╪nné celoƒíselné:
  115.        int     a,b,c,d,e,f,g,h,i,j,Klávesa,      //rozsah -32768..32767
  116.                I¼íslo1,I¼íslo2,I¼íslo3,PàvBarvy;
  117.     ;prom╪nné reálné:
  118.        double  D¼íslo1,D¼íslo2,D¼íslo3;          //rozsah 5.0E-324..1.7E308
  119.     ;prom╪nná znak:
  120.        char    Znak;
  121.     ;prom╪nná ²et╪zec:
  122.        string  ⁿet╪zec;
  123. [ ;vytvo² Baltazaràv grafick∞ prostor
  124.    Vytvo²Prostor(); MyτZaƒátekObsluhy();
  125. ] ;zruτ Baltazaràv grafick∞ prostor
  126.    MyτKonecObsluhy(); ZruτProstor();
  127. a Klávesa= ¼tiKlávesuZFronty();
  128. b P²epniNaBaltazara();
  129. c ¼aruj(¼tverec);
  130. d Gr¼tiZnak("?",Znak,1,0x07);            /*      edit ano, ƒerná/sv.τedá*/
  131. ╨ return BaltEmuluj("Hodnota?");
  132. e BezObláƒku();
  133. f VyprázdniFrontuKláves();
  134. g Gr¼tiSⁿet╪zec("?",ⁿet╪zec,40,1,0x3f);  /*40zn, edit ano, modrá/bílá   */
  135. h Gr¼tiI¼íslo("?",I¼íslo1,6,0,0x0e);     /* 6zn, edit  ne, ƒerná/ºlutá  */
  136. i Gr¼tiD¼íslo("?",D¼íslo1,20,1,0x0f);    /*20zn, edit  ne, ƒerná/bílá   */
  137. j GrPiτZnak(Znak);
  138. k Klávesa= ¼tiKlávesuZFrontyS¼ekáním();
  139. l VlevoVbok();
  140. ê BaltEmuluj("STOP");
  141. m ;vypiτ ⁿet╪zec do grafického okénka
  142.    PàvBarvy=GrNastavBarvy(Modrá<<4|ªlutá); /*ºlutá na modré             */
  143.    GrPiτⁿet╪zec(ⁿet╪zec);                /*vypíτe obsah prom╪nné ⁿet╪zec*/
  144.    GrNastavBarvy(PàvBarvy);              /*nastaví pàvodní barvy        */
  145. n Neviditeln∞();
  146. o SObláƒkem();
  147. p Popojdi(1);
  148. q GrPiτL¼íslo(I¼íslo1,-1);               /* -1 = nejkratτí v∞pis        */
  149. r VpravoVbok();
  150. t P²epniNaText();
  151. u GrPiτD¼íslo(D¼íslo1,10,2);             /*10 ƒíslic, z toho 2 desetinné*/
  152. v Viditeln∞();
  153. w ;ƒekej na stisk klávesy nebo tlaƒítka myτi
  154.   ¼ekejNaReakci();
  155. x Skryj();
  156. y Odhal();
  157. z ;ƒelem vzad
  158.    VlevoVbok(); VlevoVbok();
  159. B NastavBarvu¼arování   /*       B:(barva)!   0-15                    */
  160. C ¼aruj                 /*     C:(p²edm╪t)!   1-150                   */
  161. ╤ return BaltEmuluj     /*     ╤:("Volno")!   "Test"                  */
  162. L NaƒtiScénu            /*    L:("soubor")!   "c:\\pavel\\soubor.s00" */
  163. ¥ BaltEmuluj            /*      ¥:("Text")!   "Test"                  */
  164. N Náhodn╪¼aruj          /*     N:(p²edm╪t)!   1-150                   */
  165. P Popojdi               /*  P:(poƒet_polí)!   0-14                    */
  166. R RychlostBaltazara     /*    R:(rychlost)!   0-9                     */
  167. S UloºScénu             /*    S:("soubor")!   "c:\\pavel\\soubor.s00" */
  168. W ¼ekej                 /*  W:(milisekund)!   0-32000                 */
  169. X ¼arujNaPozici         /* X:(p²edm╪t,x,y)!   1-150, 1-15, 1-10       */
  170. -c1-Globals ---- (? lze pouºít jako náhrada pouze pro /,*,+) -----------------
  171. ?n PràchodnostP²edm╪tuP²edB() Je 0
  172. ?p PràchodnostP²edm╪tuP²edB() Je 1
  173. ?B Barva¼tverceP²edB()  /* Je, Není, <, >, <= ,>= */
  174. ?P P²edm╪tP²edB()       /* Je, Není, <, >, <= ,>= */
  175. ?S Sm╪rBaltazara()      /* Je, Není, <, >, <= ,>= */
  176. \b Barva¼tverceP²edB()??
  177. \p P²edm╪tP²edB()??
  178. \s Sm╪rBaltazara()??
  179. \C case
  180. #C ; n-krát                                     #C:(5)         5₧ 
  181.     __CYKLUS
  182. #A ;opakuj vzestupn╪ pro prom╪nnou od,do,krok   #A:(i,2,10,2)  i=2,4..10
  183.     OdDoKrok
  184. #D ;opakuj sestupn╪  pro prom╪nnou od,do,krok   #D:(i,10,2,2)  i=10,8..2
  185.     OdDolàDoKrok
  186. #M ;opakuj n-krát sestupn╪  pro prom╪nnou       #M:(i,8)  (8x) i=7,6..0
  187.     DolàDo0
  188. #N ;opakuj n-krát vzestupn╪ pro prom╪nnou       #N:(i,8)  (8x) i=0,1..7
  189.     Od0
  190. ===Globals ------------------------------------------------------------------
  191. /*-hf(*/
  192. /*-hf-*/
  193. void main( void )  // ░░▒▒▓▓██ PARTIE V1.00 INTRO  (public domain) ██▓▓▒▒░░
  194. /*-hf)*/;
  195. ;-h---------------------------------------------------------------------------
  196. void main( void )  // ░░▒▒▓▓██ PARTIE V1.00 INTRO  (public domain) ██▓▓▒▒░░
  197. -s--INTRO                                                                       ■  10  -2 -24   3
  198.          INTRO
  199.       :EscMínus()
  200.     :GrNastavMód(2)
  201.    :GrNastavV∞stup(2)
  202. :GrNastavPàvodníPaletu()
  203. :GrNastavBarvuPozadí(0)
  204.      :GrSmaºOkno()
  205.        O0w1!
  206. -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
  207. w ;ƒekání
  208.   VyprázdniFrontuKláves();
  209.   StopkyNuluj();StopkyStart();
  210.   do Stopky(cas); while ((BylaStisknutaKlávesa()==0) && (cas.Sekundy<3));
  211.   StopkyStop();
  212.   VyprázdniFrontuKláves();
  213. O GrNaƒtiBMP(0,0,"*\\partie.bmp",0,0,-1,-1,1);
  214. 0 ;naƒtení palety ze souboru
  215.   TypSoubor soubor=SouborOtev²i("*\\partie.pal",
  216.                                 SouborP²ístup¼tení|SouborP²ístupBinární);
  217.   for (i=0; i<=15; i++)
  218.   {
  219.    paleta[i].R=Soubor¼tiZnak(soubor);
  220.    paleta[i].G=Soubor¼tiZnak(soubor);
  221.    paleta[i].B=Soubor¼tiZnak(soubor);
  222.   }
  223.   SouborZav²i(soubor);
  224.   for (i=1; i<=64; i++)
  225.    for (ii=0; ii<=15; ii++)
  226.    {
  227.     GrBarvaPalety(ii,R,G,B);
  228.     if (R<paleta[ii].R) R++;
  229.     if (G<paleta[ii].G) G++;
  230.     if (B<paleta[ii].B) B++;
  231.     GrNastavBarvuPalety(ii,R,G,B);
  232.     ¼ekej(2);
  233.    }
  234. 1 ;ztmavení barvy
  235.   for (i=1; i<=32; i++)
  236.    for (ii=0; ii<=15; ii++)
  237.    {
  238.     GrBarvaPalety(ii,R,G,B);
  239.     if (R>0) R--;
  240.     if (G>0) G--;
  241.     if (B>0) B--;
  242.     GrNastavBarvuPalety(ii,R,G,B);
  243.     ¼ekej(2);
  244.    }
  245. -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
  246. =SP---------------------------------------------------------------------------
  247.  
  248. //
  249. // Konec souboru
  250. //////////////////
  251.