home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 March / Chip_1999-03_cd.bin / zkuste / SGP / Baltazar / SGPVZOR.000 < prev    next >
Text File  |  1999-01-12  |  9KB  |  236 lines

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