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 >
C/C++ Source or Header  |  1992-07-16  |  4KB  |  149 lines

  1. /*                           ===  NM-Dance.c ===
  2.  *
  3.  * void start()
  4.  * void Link(X,Y,k,s,e,Size)
  5.  * void dot_(X,Y,k,s,Size)
  6.  * void man(X,Y,k,Size)
  7.  *
  8.  *
  9.  * void dancer()
  10.  *
  11.  *
  12.  */
  13.  
  14. #include "NM.h"
  15.  
  16. pair Film[300][17];
  17.  
  18. void start()
  19. {
  20.   int i;
  21.  
  22.   Rub(0,0,1139,862,"MediumBlue");Rub(950,0,195,862,"RoyalBlue");
  23.   SetColor("magenta");XSetLineAttributes(display,gc,3,0,0,0);
  24.   Line(947,0,947,862);SetColor("white");XSetLineAttributes(display,gc,1,0,0,0);
  25.   for (i=0;i<21;i++) Line(i*47+3,3,i*47+3,859);
  26.   for (i=0;i<16;i++) Line(3,i*57+3,943,i*57+3);
  27. }
  28.  
  29. void Link(X,Y,k,s,e,Size)
  30.   int X,Y,k,s,e,Size;
  31. {
  32.   Line(X+Film[k][s].a*Size,Y+Film[k][s].b*Size,X+Film[k][e].a*Size,
  33.        Y+Film[k][e].b*Size);
  34. }
  35.  
  36. void dot_(X,Y,k,s,Size)
  37.   int X,Y,k,s,Size;
  38. {
  39.   DrawEllipse(X+Film[k][s].a*Size-Size/2,Y+Film[k][s].b*Size-Size/2,Size,Size,0,
  40.           360);
  41. }
  42.  
  43. void man(X,Y,k,Size)
  44.   int X,Y,k,Size;
  45. {
  46.   int i;
  47.  
  48.   if (Film[k][0].a==0 && Film[k][0].b==0) return;
  49.   DrawEllipse(X+Film[k][0].a*Size,Y+Film[k][0].b*Size,6*Size,6*Size,0,360);
  50.   dot_(X,Y,k,1,Size);Link(X,Y,k,1,5,Size);
  51.   for (i=2;i<8;i++) { Link(X,Y,k,i,i+1,Size);dot_(X,Y,k,i,Size); }
  52.   dot_(X,Y,k,i,Size);Link(X,Y,k,5,9,Size);
  53.   for (i=9;i<13;i++) { Link(X,Y,k,i,i+1,Size);dot_(X,Y,k,i,Size); }
  54.   dot_(X,Y,k,i,Size);Link(X,Y,k,10,14,Size);
  55.   for (i=14;i<16;i++) {Link(X,Y,k,i,i+1,Size);dot_(X,Y,k,i,Size); }
  56.   dot_(X,Y,k,i,Size);
  57. }
  58.  
  59. void dancer()
  60. {
  61.   int i,k,x,y,nearby,dt;
  62.   FILE *dcfile;
  63.  
  64.   i=0;
  65.   if ((dcfile=fopen("Dir_Song/IM.dan","r"))!=NULL)
  66.     {
  67.       for (k=0;k<300;k++) 
  68.     for (i=0;i<17;i++) fread(&Film[k][i],sizeof(pair),1,dcfile);
  69.       if (dcfile != NULL) fclose(dcfile);
  70.     }
  71.   else 
  72.     {
  73.       for (k=0;k<300;k++)
  74.     {
  75.       for (i=0;i<17;i++) 
  76.         {
  77.           switch (i)
  78.         {
  79.           case 0:x=17;y=0;break;
  80.           case 1:x=20;y=7;break;
  81.           case 2:x=4;y=8;break;
  82.           case 3:x=7;y=8;break;
  83.           case 4:x=12;y=9;break;
  84.           case 5:x=20;y=9;break;
  85.           case 6:x=27;y=9;break;
  86.           case 7:x=34;y=6;break;
  87.           case 8:x=37;y=6;break;
  88.           case 9:x=20;y=13;break;
  89.           case 10:x=20;y=17;break;
  90.           case 11:x=15;y=22;break;
  91.           case 12:x=7;y=27;break;
  92.           case 13:x=10;y=28;break;
  93.           case 14:x=27;y=21;break;
  94.           case 15:x=30;y=28;break;
  95.           case 16:x=35;y=28;break;
  96.         }
  97.           Film[k][i].a=x;Film[k][i].b=y; 
  98.       /*    WITH=&Film[k][i];WITH->a=x;WITH->b=y; */
  99.         }
  100.     }
  101.     }
  102.   Rub(0,0,1139,862,"MediumBlue");SetColor("white");nearby=1;dt=5.0/11;start();
  103.   do { } while (!KeyPressed());
  104.   for (k=0;k<300;k++) { man((k%20)*47+7,(k/20)*57+16,k,1); }
  105. DrawRectangle(950,300,179,250,"yellow");
  106. man(936,360,1,5);
  107. do { } while (!KeyPressed());
  108. /*
  109.   k=1;x=30;V.y=24;pointo(&x,&y,0,0);
  110.   do {
  111.        ch=GetKey();
  112.        switch (ch) 
  113.      {
  114.        case '*':get(&V);break;
  115.        case '+':start();
  116.                 for (k=1;k<=30;k++) man(0,0,1,d,k);
  117.                 V.k=1;man(0,0,0,d,1);pointo(&x,&y,0,0);
  118.          break;
  119.        case '<':remove(nearby,-3,0);break;
  120.        case '>':remove(nearby,3,0);break;
  121.        case '?':remove(nearby,0,-2);break;
  122.        case '@':remove(nearby,0,2);break;
  123.        case '!':if (k<30 && Film[k][0].a==0 && 
  124.                         Film[k][0].b==0) 
  125.                   {
  126.             for (i=0;i<=15;i++)
  127.               Film[k][i]=Film[k-1][i];
  128.             k++;man(0,0,1,k);
  129.               } 
  130.                 else man(0,0,1,k);
  131.                 pointo(&x,&y,0,0);
  132.          break;
  133.        case 'A':pointo(&x,&y,-4,0);break;
  134.        case 'D':pointo(&x,&y,4,0);break;
  135.        case 'W':pointo(&x,&y,0,-4);break;
  136.        case 'Z':pointo(&x,&y,0,4);break;
  137.      }
  138.      } while (ch != '&');
  139.   front[0]=1;front[1]=1;front[2]=0;
  140.   if (dcfile != NULL) rewind(dcfile);else dcfile=tmpfile();
  141.   for (k=1;k<=30;k++) 
  142.     for (i=0;i<17;i++) fwrite(&Film[k-1][i],sizeof(pair),1,dcfile);
  143.   if (dcfile != NULL) fclose(dcfile);dcfile=NULL;
  144.   for (i=0; i <= 2; i++) 
  145.     { add[i]=(rand() % 1)+1;pt[i]=rand() % 30;d_t[i]=0;Times[i]=10; }
  146.   if (dcfile != NULL) fclose(dcfile);
  147.  */
  148. }
  149.