home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / C / R_LA4_01.ZIP / ROCKET.C < prev    next >
Encoding:
C/C++ Source or Header  |  1987-12-25  |  3.1 KB  |  73 lines

  1. /****************************************************************/
  2. /* ROCKET.C - A revised program typed from the book "Microsoft C*/
  3. /* Programming for the IBM" by Robert Lafore. The program is on */
  4. /* page 241. ANSI.SYS must be set up to use. This program is a  */
  5. /* slightly changed version of MOVE.C (page 241).               */
  6. /****************************************************************/
  7.  
  8. #define ROWS 25
  9. #define COLS 5
  10. #define HOMECLR "\x1B[2J"
  11. #define CUR_BOTT "\x1B[%d;%df"
  12. #define CUR_TOP "\x1B[%d;%df"
  13.  
  14. main()
  15. {
  16. int count, j, k, m;
  17. char *ptr[ROWS];           /*pointers to rows*/
  18. char *temp;                /*pointer storage*/
  19. static char pict[ROWS][COLS] = {       /* rocketship */
  20.       { 0,        0,       0,       0,       0          },
  21.       { 0,        0,       0,       0,       0          },
  22.       { 0,        0,       0,       0,       0          },
  23.       { 0,        0,       0,       0,       0          },
  24.       { 0,        0,       0,       0,       0          },
  25.       { 0,        0,       0,       0,       0          },
  26.       { 0,        0,       0,       0,       0          },
  27.       { 0,        0,       0,       0,       0          },
  28.       { 0,        0,       0,       0,       0          },
  29.       { 0,        0,       0,       0,       0          },
  30.       { 0,        0,       0,       0,       0          },
  31.       { 0,        0,       0,       0,       0          },
  32.       { 0,        0,       0,       0,       0          },
  33.       { 0,        0,       0,       0,       0          },
  34.       { 0,        0,       0,       0,       0          },
  35.       { 0,        0,       0,       0,       0          },
  36.       { 0,        0,       0,       0,       0          },
  37.       { 0,        0,       0,       0,       0          },
  38.       { 0,        0,       0,       0,       0          },
  39.       { 0,        0,       0,       0,       0          },
  40.       { 0,        0,       0,       0,       0          },
  41.       { 0,        0,       0,       0,       0          },
  42.       { 0,        0,       '\x1E',  0,       0          },
  43.       { 0,        '\x1E',  '\x1E',  '\x1E',  0          }  };
  44.  
  45. static char gnd[] =        /* ground line */
  46.             { '\xCD', '\xCD', '\xCD', '\xCD', '\xCD' };
  47.  
  48.    for(count = 0; count < ROWS; count++)     /*set up pointers*/
  49.       *(ptr + count) = *(pict + count);
  50.  
  51.    for(count = 0; count < ROWS - 1; count++) {  /*do ROWS-1 # of times*/
  52.       printf(HOMECLR);
  53.       printf(CUR_BOTT, 25,0);
  54.       printf("%s", gnd);                   /*print ground*/
  55.       printf(CUR_TOP, 0,0);
  56.       for(j = 0; j < ROWS-1; j++) {   /*print screen*/
  57.          for(k = 0; k < COLS; k++) {
  58.             if(*(*(ptr + j) + k) != 0) {     /*is rocket on line?*/
  59.                for(m = 0; m < COLS; m++)     /*Yes, print line*/
  60.                   printf("%c", *(*(ptr + j) + m));
  61.                break;
  62.             }
  63.          }
  64.          printf("%c", '\n');
  65.       }
  66.       temp = *ptr;               /*rotate pointers to move rocket*/
  67.       for(j = 0; j < ROWS - 1; j++)
  68.          *(ptr + j) = *(ptr + j + 1);
  69.       *(ptr + ROWS - 1) = temp;
  70.    }
  71. }
  72.  
  73.