home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-385-Vol-1of3.iso
/
d
/
dir_nm20.zip
/
Dir_NM_2.0
/
NM-Dance.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-07-16
|
4KB
|
149 lines
/* === NM-Dance.c ===
*
* void start()
* void Link(X,Y,k,s,e,Size)
* void dot_(X,Y,k,s,Size)
* void man(X,Y,k,Size)
*
*
* void dancer()
*
*
*/
#include "NM.h"
pair Film[300][17];
void start()
{
int i;
Rub(0,0,1139,862,"MediumBlue");Rub(950,0,195,862,"RoyalBlue");
SetColor("magenta");XSetLineAttributes(display,gc,3,0,0,0);
Line(947,0,947,862);SetColor("white");XSetLineAttributes(display,gc,1,0,0,0);
for (i=0;i<21;i++) Line(i*47+3,3,i*47+3,859);
for (i=0;i<16;i++) Line(3,i*57+3,943,i*57+3);
}
void Link(X,Y,k,s,e,Size)
int X,Y,k,s,e,Size;
{
Line(X+Film[k][s].a*Size,Y+Film[k][s].b*Size,X+Film[k][e].a*Size,
Y+Film[k][e].b*Size);
}
void dot_(X,Y,k,s,Size)
int X,Y,k,s,Size;
{
DrawEllipse(X+Film[k][s].a*Size-Size/2,Y+Film[k][s].b*Size-Size/2,Size,Size,0,
360);
}
void man(X,Y,k,Size)
int X,Y,k,Size;
{
int i;
if (Film[k][0].a==0 && Film[k][0].b==0) return;
DrawEllipse(X+Film[k][0].a*Size,Y+Film[k][0].b*Size,6*Size,6*Size,0,360);
dot_(X,Y,k,1,Size);Link(X,Y,k,1,5,Size);
for (i=2;i<8;i++) { Link(X,Y,k,i,i+1,Size);dot_(X,Y,k,i,Size); }
dot_(X,Y,k,i,Size);Link(X,Y,k,5,9,Size);
for (i=9;i<13;i++) { Link(X,Y,k,i,i+1,Size);dot_(X,Y,k,i,Size); }
dot_(X,Y,k,i,Size);Link(X,Y,k,10,14,Size);
for (i=14;i<16;i++) {Link(X,Y,k,i,i+1,Size);dot_(X,Y,k,i,Size); }
dot_(X,Y,k,i,Size);
}
void dancer()
{
int i,k,x,y,nearby,dt;
FILE *dcfile;
i=0;
if ((dcfile=fopen("Dir_Song/IM.dan","r"))!=NULL)
{
for (k=0;k<300;k++)
for (i=0;i<17;i++) fread(&Film[k][i],sizeof(pair),1,dcfile);
if (dcfile != NULL) fclose(dcfile);
}
else
{
for (k=0;k<300;k++)
{
for (i=0;i<17;i++)
{
switch (i)
{
case 0:x=17;y=0;break;
case 1:x=20;y=7;break;
case 2:x=4;y=8;break;
case 3:x=7;y=8;break;
case 4:x=12;y=9;break;
case 5:x=20;y=9;break;
case 6:x=27;y=9;break;
case 7:x=34;y=6;break;
case 8:x=37;y=6;break;
case 9:x=20;y=13;break;
case 10:x=20;y=17;break;
case 11:x=15;y=22;break;
case 12:x=7;y=27;break;
case 13:x=10;y=28;break;
case 14:x=27;y=21;break;
case 15:x=30;y=28;break;
case 16:x=35;y=28;break;
}
Film[k][i].a=x;Film[k][i].b=y;
/* WITH=&Film[k][i];WITH->a=x;WITH->b=y; */
}
}
}
Rub(0,0,1139,862,"MediumBlue");SetColor("white");nearby=1;dt=5.0/11;start();
do { } while (!KeyPressed());
for (k=0;k<300;k++) { man((k%20)*47+7,(k/20)*57+16,k,1); }
DrawRectangle(950,300,179,250,"yellow");
man(936,360,1,5);
do { } while (!KeyPressed());
/*
k=1;x=30;V.y=24;pointo(&x,&y,0,0);
do {
ch=GetKey();
switch (ch)
{
case '*':get(&V);break;
case '+':start();
for (k=1;k<=30;k++) man(0,0,1,d,k);
V.k=1;man(0,0,0,d,1);pointo(&x,&y,0,0);
break;
case '<':remove(nearby,-3,0);break;
case '>':remove(nearby,3,0);break;
case '?':remove(nearby,0,-2);break;
case '@':remove(nearby,0,2);break;
case '!':if (k<30 && Film[k][0].a==0 &&
Film[k][0].b==0)
{
for (i=0;i<=15;i++)
Film[k][i]=Film[k-1][i];
k++;man(0,0,1,k);
}
else man(0,0,1,k);
pointo(&x,&y,0,0);
break;
case 'A':pointo(&x,&y,-4,0);break;
case 'D':pointo(&x,&y,4,0);break;
case 'W':pointo(&x,&y,0,-4);break;
case 'Z':pointo(&x,&y,0,4);break;
}
} while (ch != '&');
front[0]=1;front[1]=1;front[2]=0;
if (dcfile != NULL) rewind(dcfile);else dcfile=tmpfile();
for (k=1;k<=30;k++)
for (i=0;i<17;i++) fwrite(&Film[k-1][i],sizeof(pair),1,dcfile);
if (dcfile != NULL) fclose(dcfile);dcfile=NULL;
for (i=0; i <= 2; i++)
{ add[i]=(rand() % 1)+1;pt[i]=rand() % 30;d_t[i]=0;Times[i]=10; }
if (dcfile != NULL) fclose(dcfile);
*/
}