home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1999 March
/
Chip_1999-03_cd.bin
/
zkuste
/
SGP
/
Zastera
/
ANIM1.SGP
< prev
next >
Wrap
Text File
|
1999-02-05
|
11KB
|
282 lines
SGPC 5.03 CZ0#351N00003 27.01.1999 12:25:37
# include <sgpbalt.h>
//////////////////////
// Globální prom╪nné
//
// prom╪nné celoƒíselné:
int gA,gB,gC,gD,gE,gF,gG,gH,gI,gJ, // rozsah -32768..32767
gI¼íslo1,gI¼íslo2,gI¼íslo3,gPàvBarvy;
// gKlávesa je souƒástí knihovny Baltazara
// prom╪nné reálné:
double gD¼íslo1,gD¼íslo2,gD¼íslo3; // rozsah 5.0E-324..1.7E308
// prom╪nná znak:
char gZnak;
// prom╪nná ²et╪zec:
string gⁿet╪zec;
/////////////////////
// Pomocné definice
//
#define NE 0
#define ANO 1
#define ABS(x) ((x)>0?(x):-(x))
#define __CYKLUS(N) __Cyklus(1,N);__Cyklus(0,N); //Hlava cyklu
#define __MPVC_ 100 //Maximální poƒet vno²en∞ch cyklà
int __Cyklus( int Nov∞, int Poƒet )
//Nov∞ > 0: Otev²ení nového cyklu s N opakováními (vƒetn╪ 0)
//Nov∞ = 0: Dalτí pràchod cyklem
//Nov∞ < 0: P²edƒasné ukonƒení cyklu
{ static int I[__MPVC_];
static int i = -1;
if( Nov∞ > 0 )
{ if( ++i >= __MPVC_)
{ TxtPiτⁿet╪zec("P²íliτ mnoho vno²en∞ch cyklà");
while(1) {Tón(1000);};
}else I[i]=Poƒet;
}else if( Nov∞ == 0 )
{ if(--I[i]<0){ i--; return(0);}
else return(1);
}else return(-(i--)); //Vrací zápornou aktuální hloubku vno²ení
} //Cyklus
void ¼ekejNaReakci(void)
//¼eká na sitsk klávesy nebo tlaƒítka myτi
{ VyprázdniFrontuKláves();
MyτVyprázdniFrontuUdálostí();
¼ekej(NaKlávesu|NaMyτ);
VyprázdniFrontuKláves();
MyτVyprázdniFrontuUdálostí();
} //¼ekejNaReakci
long ¥¼ti¼íslo ( char* Text )
{ long Vrátit = 0;
GrNastavPozici(272, 0);
Gr¼tiL¼íslo(Text,Vrátit,8,1,0xe);
GrNastavPozici(272, 0);
GrPiτⁿet╪zec( " " );
return Vrátit;
} //¥¼ti¼íslo
long BaltEmuluj( char* Text )
{ long Vrátit = 0;
int Klávesa;
int Konec = 0;
TypP²edm╪t P²edm╪t=1;
VyprázdniFrontuKláves();
GrNastavBarvy( 0x7 ); GrSmaºOkno();
GrPiτⁿet╪zec( Text );
Tón(1000); ¼ekej(10); VypniTón();
while (!Konec)
{ int p;
GrNastavPozici(0, GrV∞τkaZnaku);
GrPiτⁿet╪zec( "ⁿá: "); GrPiτL¼íslo( PoziceBaltazaraY(), 2 );
GrPiτⁿet╪zec( ", Sl: " ); GrPiτL¼íslo( PoziceBaltazaraX(), 2 );
GrPiτⁿet╪zec( ", Sm: " );
int s=Sm╪rBaltazara();
GrPiτⁿet╪zec( s==V∞chod ? "V∞chod" :
s==Jih ? "Jih " :
s==Západ ? "Západ " :
"Sever " );
GrPiτⁿet╪zec( ", Ba: " ); NastavBarvu¼arování( p=NastavBarvu¼arování(0));
GrPiτL¼íslo( p, 2 );
GrPiτⁿet╪zec( ", Ry: " ); RychlostBaltazara(p = RychlostBaltazara(0));
GrPiτL¼íslo( p, 2 );
switch ¼tiKlávesuZFrontyS¼ekáním()
{ case KlDoleva: VlevoVbok(); break;
case KlDoprava: VpravoVbok(); break;
case KlNahoru: Popojdi(1); break;
case KlDolà: ¼aruj(Baltedit()); break;
case KlIns: Vrátit = ¥¼ti¼íslo( "¼íslo: " ); break;
case 'B':
case 'b': NastavBarvu¼arování( ¥¼ti¼íslo("Barva: ") ); break;
case 'C':
case 'c': ¼aruj(¼tverec); break;
case 'R':
case 'r': RychlostBaltazara( ¥¼ti¼íslo("Rychlost: ") ); break;
case KlEnter: Konec = 1; break;
} //switch
} //while
GrNastavBarvy( 0x77 ); GrSmaºOkno();
return Vrátit;
} //BaltEmuluj
///////////////////
// Globální makra
//
-o1-Globals ----------------------------------------------------------------
0 ;prom╪nné
;globální prom╪nné (jsou definovány v globálních definicích Ctrl+G):
;prom╪nné celoƒíselné: gA,gB,gC,gD,gE,gF,gG,gH,gI,gJ,gKlávesa;
;dalτí p²eddefinované globální prom╪nné mají vºdy p²edponu g..
;a jejich názvy jsou shodné s lokálními prom╪nn∞mi definovan∞mi níºe,
;nap². gD¼íslo1, gⁿet╪zec atd.
;lokální prom╪nné:
;prom╪nné celoƒíselné:
int a,b,c,d,e,f,g,h,i,j,Klávesa, //rozsah -32768..32767
I¼íslo1,I¼íslo2,I¼íslo3,PàvBarvy;
;prom╪nné reálné:
double D¼íslo1,D¼íslo2,D¼íslo3; //rozsah 5.0E-324..1.7E308
;prom╪nná znak:
char Znak;
;prom╪nná ²et╪zec:
string ⁿet╪zec;
[ ;vytvo² Baltazaràv grafick∞ prostor
Vytvo²Prostor(); MyτZaƒátekObsluhy();
] ;zruτ Baltazaràv grafick∞ prostor
MyτKonecObsluhy(); ZruτProstor();
a Klávesa= ¼tiKlávesuZFronty();
b P²epniNaBaltazara();
c ¼aruj(¼tverec);
d Gr¼tiZnak("?",Znak,1,0x07); /* edit ano, ƒerná/sv.τedá*/
╨ return BaltEmuluj("Hodnota?");
e BezObláƒku();
f VyprázdniFrontuKláves();
g Gr¼tiSⁿet╪zec("?",ⁿet╪zec,40,1,0x3f); /*40zn, edit ano, modrá/bílá */
h Gr¼tiI¼íslo("?",I¼íslo1,6,0,0x0e); /* 6zn, edit ne, ƒerná/ºlutá */
i Gr¼tiD¼íslo("?",D¼íslo1,20,1,0x0f); /*20zn, edit ne, ƒerná/bílá */
j GrPiτZnak(Znak);
k Klávesa= ¼tiKlávesuZFrontyS¼ekáním();
l VlevoVbok();
ê BaltEmuluj("STOP");
m ;vypiτ ⁿet╪zec do grafického okénka
PàvBarvy=GrNastavBarvy(Modrá<<4|ªlutá); /*ºlutá na modré */
GrPiτⁿet╪zec(ⁿet╪zec); /*vypíτe obsah prom╪nné ⁿet╪zec*/
GrNastavBarvy(PàvBarvy); /*nastaví pàvodní barvy */
n Neviditeln∞();
o SObláƒkem();
p Popojdi(1);
q GrPiτL¼íslo(I¼íslo1,-1); /* -1 = nejkratτí v∞pis */
r VpravoVbok();
t P²epniNaText();
u GrPiτD¼íslo(D¼íslo1,10,2); /*10 ƒíslic, z toho 2 desetinné*/
v Viditeln∞();
w ;ƒekej na stisk klávesy nebo tlaƒítka myτi
¼ekejNaReakci();
x Skryj();
y Odhal();
z ;ƒelem vzad
VlevoVbok(); VlevoVbok();
B NastavBarvu¼arování /* B:(barva)! 0-15 */
C ¼aruj /* C:(p²edm╪t)! 1-150 */
╤ return BaltEmuluj /* ╤:("Volno")! "Test" */
L NaƒtiScénu /* L:("soubor")! "c:\\pavel\\soubor.s00" */
¥ BaltEmuluj /* ¥:("Text")! "Test" */
N Náhodn╪¼aruj /* N:(p²edm╪t)! 1-150 */
P Popojdi /* P:(poƒet_polí)! 0-14 */
R RychlostBaltazara /* R:(rychlost)! 0-9 */
S UloºScénu /* S:("soubor")! "c:\\pavel\\soubor.s00" */
W ¼ekej /* W:(milisekund)! 0-32000 */
X ¼arujNaPozici /* X:(p²edm╪t,x,y)! 1-150, 1-15, 1-10 */
-c1-Globals ---- (? lze pouºít jako náhrada pouze pro /,*,+) -----------------
?n PràchodnostP²edm╪tuP²edB() Je 0
?p PràchodnostP²edm╪tuP²edB() Je 1
?B Barva¼tverceP²edB() /* Je, Není, <, >, <= ,>= */
?P P²edm╪tP²edB() /* Je, Není, <, >, <= ,>= */
?S Sm╪rBaltazara() /* Je, Není, <, >, <= ,>= */
\b Barva¼tverceP²edB()??
\p P²edm╪tP²edB()??
\s Sm╪rBaltazara()??
\C case
#C ; n-krát #C:(5) 5₧
__CYKLUS
#A ;opakuj vzestupn╪ pro prom╪nnou od,do,krok #A:(i,2,10,2) i=2,4..10
OdDoKrok
#D ;opakuj sestupn╪ pro prom╪nnou od,do,krok #D:(i,10,2,2) i=10,8..2
OdDolàDoKrok
#M ;opakuj n-krát sestupn╪ pro prom╪nnou #M:(i,8) (8x) i=7,6..0
DolàDo0
#N ;opakuj n-krát vzestupn╪ pro prom╪nnou #N:(i,8) (8x) i=0,1..7
Od0
===Globals ------------------------------------------------------------------
/*-hf(*/
/*-hf-*/
void main( void )
/*-hf)*/;
;-h---------------------------------------------------------------------------
void main( void )
-s--Program ■ 5 -2 1 3
____________Program______________
Zaƒátek Prost²edek Konec
[1a! *
Po²ád
bd!c
_________________Narazil?_________________
/v /z /s /j
V∞chod Západ Sever Jih
v! z! s! j!
:Tón(300)! :Tón(400)! :Tón(500)! :Tón(600)!
:¼ekej(70)! :¼ekej(70)! :¼ekej(70)! :¼ekej(70)!
:VypniTón()! :VypniTón()! :VypniTón()! :VypniTón()!
-o1----------------------SEZNAM OPERAC╓------------TENTO ⁿ╡DEK NEM╖NIT!-------
0 ;p²eddefinované prom╪nné
;globální prom╪nné (jsou definovány v globálních definicích Ctrl+G):
;prom╪nné celoƒíselné: gA,g
B,gC,gD,gE,gF,gG,gH,gI,gJ,gKlávesa;
;dalτí p²eddefinované globální prom╪nné mají vºdy p²edponu g..
;a jejich názvy jsou shodné s lokálními prom╪nn∞mi definovan∞mi níºe,
;nap². gD¼íslo1, gⁿet╪zec atd.
;lokální prom╪nné:
;prom╪nné celoƒíselné:
int a,b,c,d,e,f,g,h,i,j,Klávesa, // rozsah -32768..32767
I¼íslo1,I¼íslo2,I¼íslo3,PàvBarvy;
;prom╪nné reálné:
double D¼íslo1,D¼íslo2,D¼íslo3; // rozsah 5.0E-324..1.7E308
;prom╪nná znak:
char Znak;
;prom╪nná ²et╪zec:
string ⁿet╪zec;
[ ;vytvo² Baltazaràv grafick∞ prostor
Vytvo²Prostor(); MyτZaƒátekObsluhy();
1 ;Deklarace pot²ebn∞ch prom╪nn∞ch
TypAnimP²edm╪t Míƒ;
int x=0, y=0; //Sou²adnice míƒe
int dx=2, dy=2; //Posun míƒe mezi jednotliv∞mi animacemi
int x0=0, xM=550; //Vodorovné meze
int y0=0, yM=260; //Svislé meze
a Míƒ = AnimP²edm╪tVytvo²( 10,1,1,1); //Animace sem-tam
b AnimP²edm╪tAnimuj(Míƒ,x,y,-1); //Automatické nastavení fáze
c ¼ekej(6); //Um╪lé zpomalení - nastavte vhodné ƒíslo
d x = x + dx; y = y + dy; //Návrh nov∞ch sou²adnic
s y = y0; dy = -dy; //Odráºí se na jih
z x = x0; dx = -dx; //Odráºí se na v∞chod
j y = yM; dy = -dy; //Odráºí se na sever
v x = xM; dx = -dx; //Odráºí se na západ
e BezObláƒku();
y Odhal();
k Klávesa= ¼tiKlávesuZFrontyS¼ekáním();
f VyprázdniFrontuKláves();
l VlevoVbok();
g Gr¼tiSⁿet╪zec("?",ⁿet╪zec,40,1,0x3f); /*40zn, edit ano, modrá/bílá */
h Gr¼tiI¼íslo("?",I¼íslo1,6,0,0x0e); /* 6zn, edit ne, ƒerná/ºlutá */
i Gr¼tiD¼íslo("?",D¼íslo1,20,1,0x0f); /*20zn, edit ne, ƒerná/bílá */
m ;vypiτ ⁿet╪zec do grafického okénka
PàvBarvy=GrNastavBarvy(Modrá<<4|ªlutá); /*ºlutá na modré */
GrPiτⁿet╪zec(ⁿet╪zec); /*vypíτe obsah prom╪nné ⁿet╪zec*/
GrNastavBarvy(PàvBarvy); /*nastaví pàvodní barvy */
n Neviditeln∞();
o SObláƒkem();
t P²epniNaText();
u GrPiτD¼íslo(D¼íslo1,10,2); /*10 ƒíslic, z toho 2 desetinné*/
x Skryj();
q GrPiτL¼íslo(I¼íslo1,-1); /* -1 = nejkratτí v∞pis */
p Popojdi(1);
-c1----------------------SEZNAM PODM╓NEK-----------TENTO ⁿ╡DEK NEM╖NIT!-------
/s y < y0 /*Narazil na severu*/
/z x < x0 /*Narazil na západ╪*/
/j y > yM /*Narazil na jihu*/
/v x > xM /*Narazil na v∞chod╪*/
=SP---------------------------------------------------------------------------
//
// Konec souboru
//////////////////