home *** CD-ROM | disk | FTP | other *** search
/ PC World 2002 December / PCWorld_2002-12_cd.bin / Software / Komercni / Baltik / katA.exe / katA / GRAF / graf.sgp < prev    next >
Text File  |  2002-02-14  |  12KB  |  342 lines

  1. SGPC   5.05 034#000000661  2.02.2002 12:29:39                                   
  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--Graf~2                                                                      ■  13  -2   6   3
  206.           ______________________________Graf~2______________________________
  207.        P²íprava            Jak~m╪²it     M╪²ení       Uloºení           Ukonƒení
  208.          0!                    #C:(1)      #N:(a,c)     4!       :PiτPort8(0x378,0x00)
  209. :GrNastavMód(GrMódVGA)     jak~m╪²it     m╪²ení
  210.  :MyτZaƒátekObsluhy()         1!          2!
  211. :PiτPort8(0x378,0x80)
  212. -o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
  213. 0 ;p²eddefinované prom╪nné
  214.   ;globální prom╪nné (jsou definovány v globálních definicích  Ctrl+G):
  215.     ;prom╪nné celoƒíselné: gA,gB,gC,gD,gE,gF,gG,gH,gI,gJ,gKlávesa;
  216.        ;dalτí p²eddefinované globální prom╪nné mají vºdy p²edponu g..
  217.        ;a jejich názvy jsou shodné s lokálními prom╪nn∞mi definovan∞mi níºe,
  218.        ;nap². gD¼íslo1, gⁿet╪zec atd.
  219.   ;lokální prom╪nné:
  220.     ;prom╪nné celoƒíselné:
  221.        int     a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,Klávesa,      // rozsah -32768..32767
  222.                I¼íslo1,I¼íslo2,I¼íslo3,PàvBarvy;
  223.     ;prom╪nné reálné:
  224.        double  D¼íslo1,D¼íslo2,D¼íslo3;          // rozsah 5.0E-324..1.7E308
  225.     ;prom╪nná znak:
  226.        char    Znak;
  227.     ;prom╪nná ²et╪zec:
  228.        string  ⁿet╪zec;
  229.     ;prom╪nná ƒas:
  230.        Typ¼as ƒas;
  231.  
  232. [ ;vytvo² Baltazaràv grafick∞ prostor
  233.    Vytvo²Prostor(); MyτZaƒátekObsluhy();
  234. ] ;zruτ Baltazaràv grafick∞ prostor
  235.    MyτKonecObsluhy(); ZruτProstor();
  236. v Viditeln∞();
  237. w ;ƒekej na stisk klávesy nebo tlaƒítka myτi
  238.   ¼ekejNaReakci();
  239. R RychlostBaltazara     /*    R:(rychlost)!   0-9 */
  240.  
  241. 1 ;zjiτt╪ní informací, jak m╪²it
  242.  
  243.   TypSoubor Soubor=SouborOtev²i("*\\graf_nu.grf",SouborP²ístup¼tení|SouborP²ístupTextov∞);
  244.   SouborNastavPozici(Soubor,0,SouborPoziceOdZaƒátku);
  245.  
  246.  
  247.   Soubor¼tiI¼íslo(Soubor,q);
  248.   Soubor¼tiI¼íslo(Soubor,c);
  249.   Soubor¼tiI¼íslo(Soubor,d);
  250.   Soubor¼tiI¼íslo(Soubor,e);
  251.   Soubor¼tiI¼íslo(Soubor,f);
  252.   Soubor¼tiI¼íslo(Soubor,g);
  253.   Soubor¼tiI¼íslo(Soubor,h);
  254.   Soubor¼tiI¼íslo(Soubor,i);
  255.   Soubor¼tiI¼íslo(Soubor,j);
  256.  
  257.  
  258.  
  259.  
  260.  
  261. 2 ;m╪²ení
  262.   if (a == 0) { k=d; PiτPort8(0x378,0x81); }
  263.   if (a == 1) { k=e; PiτPort8(0x378,0x82); }
  264.   if (a == 2) { k=f; PiτPort8(0x378,0x84); }
  265.   if (a == 3) { k=g; PiτPort8(0x378,0x88); }
  266.   if (a == 4) { k=h; PiτPort8(0x378,0x90); }
  267.   if (a == 5) { k=i; PiτPort8(0x378,0xA0); }
  268.   if (a == 6) { k=j; PiτPort8(0x378,0xC0); }
  269.  
  270.  
  271.   b=0;
  272.   StopkyNuluj();
  273.   StopkyStart();
  274.   Stopky(ƒas);
  275.  
  276.   while ( ƒas.Sekundy < k ) {
  277.   Myτ¼tiUdálost(gMyτUdálost);
  278.   if ( gMyτUdálost.Typ  ==  MyτUdálostLevéTlDolà ) {
  279.         b=b+1;
  280.         }
  281.   Stopky(ƒas);
  282.   }
  283.  
  284.   if (a == 0) (d=b);
  285.   if (a == 1) (e=b);
  286.   if (a == 2) (f=b);
  287.   if (a == 3) (g=b);
  288.   if (a == 4) (h=b);
  289.   if (a == 5) (i=b);
  290.   if (a == 6) (j=b);
  291.  
  292.  
  293.  
  294.  
  295.  
  296. 4 ;Uloºení nam╪²en∞ch dat do souboru
  297.   TypSoubor Soubor=SouborOtev²i("*\\graf_nu.grf",SouborP²ístupZápis|SouborP²ístupTextov∞);
  298.   SouborNastavPozici(Soubor,0,SouborPoziceOdKonce);
  299.  
  300.   SouborPiτNov∞ⁿádek(Soubor);
  301.  
  302.   SouborPiτU¼íslo(Soubor,d,-1);
  303.   SouborPiτⁿet╪zec(Soubor," ");
  304.   SouborPiτU¼íslo(Soubor,e,-1);
  305.   SouborPiτⁿet╪zec(Soubor," ");
  306.   SouborPiτU¼íslo(Soubor,f,-1);
  307.   SouborPiτⁿet╪zec(Soubor," ");
  308.   SouborPiτU¼íslo(Soubor,g,-1);
  309.   SouborPiτⁿet╪zec(Soubor," ");
  310.   SouborPiτU¼íslo(Soubor,h,-1);
  311.   SouborPiτⁿet╪zec(Soubor," ");
  312.   SouborPiτU¼íslo(Soubor,i,-1);
  313.   SouborPiτⁿet╪zec(Soubor," ");
  314.   SouborPiτU¼íslo(Soubor,j,-1);
  315.   SouborPiτⁿet╪zec(Soubor," ");
  316.  
  317.   TypDatum datum;
  318.   Typ¼as hodiny;
  319.   SystémovéDatum(datum);
  320.   Systémov∞¼as(hodiny);
  321.  
  322.   SouborPiτL¼íslo(Soubor,datum.Den,-1);  SouborPiτⁿet╪zec(Soubor," ");
  323.   SouborPiτL¼íslo(Soubor,datum.M╪síc,-1);  SouborPiτⁿet╪zec(Soubor," ");
  324.   SouborPiτL¼íslo(Soubor,datum.Rok,-1);  SouborPiτⁿet╪zec(Soubor," ");
  325.  
  326.   SouborPiτL¼íslo(Soubor,hodiny.Hodiny,-1);  SouborPiτⁿet╪zec(Soubor," ");
  327.   SouborPiτL¼íslo(Soubor,hodiny.Minuty,-1);  SouborPiτⁿet╪zec(Soubor," ");
  328.   
  329.   SouborPiτⁿet╪zec(Soubor," ");
  330.  
  331. -c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
  332.  
  333. #C ; n-krát                                     #C:(5)         5₧ 
  334.     __CYKLUS
  335. #N ;opakuj n-krát vzestupn╪ pro prom╪nnou       #N:(i,8)  (8x) i=0,1..7
  336.     Od0
  337. =SP---------------------------------------------------------------------------
  338.  
  339. //
  340. // Konec souboru
  341. //////////////////
  342.