home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 March / Chip_1999-03_cd.bin / zkuste / SGP / Zastera / MOJE2.SGP < prev    next >
Text File  |  1999-02-01  |  11KB  |  306 lines

  1. SGPC   5.03 CZ0#351N00003 25.01.1999 11:32:19                                   
  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. /*-hf(*/
  200. /*-hf-*/
  201. void main( void )
  202. /*-hf)*/;
  203. ;-h---------------------------------------------------------------------------
  204. void main( void )
  205. -s--Program                                                                     ■ 108  36 -11   3
  206.          ____________Program____________
  207.       Zaƒátek       Prost²edek       Konec
  208.  0[nR:(8)!       lP:(8)!               !w]
  209.                       r!
  210.                C:(1071)!
  211.               pC:(1049)!
  212.               pC:(1063)!
  213.               pC:(1046)!
  214.               pC:(1067)!
  215.               pC:(1054)!
  216.              plC:(1072)!
  217.               rC:(1058)!
  218.              zpppppplpl!
  219.                C:(1061)!
  220.               pC:(1046)!
  221.               pC:(1059)!
  222.               pC:(1046)!
  223.                 zppplpl!
  224.                C:(1064)!
  225.               pC:(1060)!
  226.               pC:(1066)!
  227.               pC:(1056)!
  228.               pC:(1066)!
  229.               pC:(1061)!
  230.               pC:(1046)!
  231.                zppppppl!
  232.                   P:(6)!
  233.                  lP:(5)!
  234.                C:(1059)!
  235.               pC:(1050)!
  236.               pC:(1055)!
  237.               pC:(1064)!
  238.               pC:(1065)!
  239.               pC:(1046)!
  240.               pC:(1063)!
  241.               pC:(1064)!
  242.              plC:(1073)!
  243.               rC:(1054)!
  244.              plC:(1072)!
  245.          lppprpC:(1033)!
  246.              prC:(1075)!
  247.                 zP:(11)!
  248.                    lppl!
  249.                        #N:(a,3)
  250.                        |
  251.                 ppC:(9)!
  252.                 pC:(14)!
  253.         zppzpplprC:(13)!
  254.                  pC:(8)!
  255.         zppzpplprC:(33)!
  256.                 pC:(12)!
  257.                zppzplpr!
  258.           :GrSmaºOkno()!
  259. :ⁿet╪zec="~PROGRAM╡TOR"!
  260.                       m!
  261. -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
  262. 0 ;p²eddefinované prom╪nné
  263.   ;globální prom╪nné (jsou definovány v globálních definicích  Ctrl+G):
  264.     ;prom╪nné celoƒíselné: gA,gB,gC,gD,gE,gF,gG,gH,gI,gJ,gKlávesa;
  265.        ;dalτí p²eddefinované globální prom╪nné mají vºdy p²edponu g..
  266.        ;a jejich názvy jsou shodné s lokálními prom╪nn∞mi definovan∞mi níºe,
  267.        ;nap². gD¼íslo1, gⁿet╪zec atd.
  268.   ;lokální prom╪nné:
  269.     ;prom╪nné celoƒíselné:
  270.        int     a,b,c,d,e,f,g,h,i,j,Klávesa,      // rozsah -32768..32767
  271.                I¼íslo1,I¼íslo2,I¼íslo3,PàvBarvy;
  272.     ;prom╪nné reálné:
  273.        double  D¼íslo1,D¼íslo2,D¼íslo3;          // rozsah 5.0E-324..1.7E308
  274.     ;prom╪nná znak:
  275.        char    Znak;
  276.     ;prom╪nná ²et╪zec:
  277.        string  ⁿet╪zec;
  278. [ ;vytvo² Baltazaràv grafick∞ prostor
  279.    Vytvo²Prostor(); MyτZaƒátekObsluhy();
  280. ] ;zruτ Baltazaràv grafick∞ prostor
  281.    MyτKonecObsluhy(); ZruτProstor();
  282. v Viditeln∞();
  283. w ;ƒekej na stisk klávesy nebo tlaƒítka myτi
  284.   ¼ekejNaReakci();
  285. R RychlostBaltazara     /*    R:(rychlost)!   0-9 */
  286. l VlevoVbok();
  287. P Popojdi               /*  P:(poƒet_polí)!   0-14                    */
  288. r VpravoVbok();
  289. C ¼aruj                 /*     C:(p²edm╪t)!   1-150                   */
  290. p Popojdi(1);
  291. z ;ƒelem vzad
  292.    VlevoVbok(); VlevoVbok();
  293. n Neviditeln∞();
  294. m ;vypiτ ⁿet╪zec do grafického okénka
  295.    PàvBarvy=GrNastavBarvy(Modrá<<4|ªlutá); /*ºlutá na modré             */
  296.    GrPiτⁿet╪zec(ⁿet╪zec);                /*vypíτe obsah prom╪nné ⁿet╪zec*/
  297.    GrNastavBarvy(PàvBarvy);              /*nastaví pàvodní barvy        */
  298. -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
  299. #N ;opakuj n-krát vzestupn╪ pro prom╪nnou       #N:(i,8)  (8x) i=0,1..7
  300.     Od0
  301. =SP---------------------------------------------------------------------------
  302.  
  303. //
  304. // Konec souboru
  305. //////////////////
  306.