root/walls.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. initwalls
  2. scrollwall
  3. putwalls

   1 /* walls.c */
   2 
   3 #include <string.h>
   4 #include <walls.h>
   5 #include <screen.h>
   6 
   7 #define WALLLOOP 40
   8 #define UNITS 8
   9 #define UNITLINES  7
  10 
  11 static int count = 0;
  12 
  13 static char walldata[UNITS*UNITLINES][WIDTH+1] ={
  14   "OOOOO                             OOOOOO",
  15   "OOOOOO       O          O        OOOOOOO",
  16   "OOOOOO      OOO        OOO       OOOOOOO",
  17   "OOOOOO     OOOO       OOOOO      OOOOOOO",
  18   "OOOOOO      OOO       OOOO      OOOOOOOO",
  19   "OOOOOOO      OO        O       OOOOOOOOO",
  20   "OOOOOOOO                      OOOOOOOOOO",
  21   /*   ,    |    ,    |    ,    |    ,    */
  22   "OOOOOOOOOO                  OOOOOOOOOOOO",
  23   "OOOOOOOOO                  OOOOOOOOOOOOO",
  24   "OOOOOOO                   OOOOOOOOOOOOOO",
  25   "OOOO                     OOOOOOOOOOOOOOO",
  26   "OOO                     OOOOOOOOOOOOOOOO",
  27   "OOO                   OOOOOOOOOOOOOOOOOO",
  28   "OO                   OOOOOOOOOOOOOOOOOOO",
  29   /*   ,    |    ,    |    ,    |    ,    */
  30   "OO                    OOOOOOOOOOOOOOOOOO",
  31   "OOO                   OOOOOOOOOOOOOOOOOO",
  32   "OOO                    OOOOOOOOOOOOOOOOO",
  33   "OOOO                     OOOOOOOOOOOOOOO",
  34   "OOOOOOO                    OOOOOOOOOOOOO",
  35   "OOOOOOOOO                    OOOOOOOOOOO",
  36   "OOOOOOOOOOO                   OOOOOOOOOO",
  37   /*   ,    |    ,    |    ,    |    ,    */
  38   "OOOOOOOOOOOOOO                 OOOOOOOOO",
  39   "OOOOOOOOOOOOOOOO                OOOOOOOO",
  40   "OOOOOOOOOOOOOOOOOO               OOOOOOO",
  41   "OOOOOOOOOOOOOOOOOOOO              OOOOOO",
  42   "OOOOOOOOOOOOOOOOOOOOO               OOOO",
  43   "OOOOOOOOOOOOOOOOOOOOOO               OOO",
  44   "OOOOOOOOOOOOOOOOOOOOOOO               OO",
  45   /*   ,    |    ,    |    ,    |    ,    */
  46   "OOOOOOOOOOOOOOOOOOOOO                 OO",
  47   "OOOOOOOOOOOOOOOOOOOO                 OOO",
  48   "OOOOOOOOOOOOOOOOOOO                 OOOO",
  49   "OOOOOOOOOOOOOOOOO                  OOOOO",
  50   "OOOOOOOOOOOOOO                    OOOOOO",
  51   "OOOOOOOOOOOO                    OOOOOOOO",
  52   "OOOOOOOOO                      OOOOOOOOO",
  53   /*   ,    |    ,    |    ,    |    ,    */
  54   "OOOOOOO            OOOOO        OOOOOOOO",   
  55   "OOOOOO          OOOOOOOOOO        OOOOOO",
  56   "OOOOOO         OOOOOOOOOOOO        OOOOO",
  57   "OOOOOO         OOOOOOOOOOOO          OOO",   
  58   "OOOOOOO        OOOOOOOOOOO          OOOO",   
  59   "OOOOOOO         OOOOOOOOO         OOOOOO",   
  60   "OOOOOOOO          OOOOO          OOOOOOO",   
  61   /*   ,    |    ,    |    ,    |    ,    */
  62   "OOOOOO                            OOOOOO",   
  63   "OOOOO       OO            OO       OOOOO",   
  64   "OOOO       OOO     OO     OOO       OOOO",   
  65   "OOOO        O     OOOO     O        OOOO",   
  66   "OOOOO              OO              OOOOO",   
  67   "OOOOO                              OOOOO",   
  68   "OOOOO                              OOOOO",   
  69   /*   ,    |    ,    |    ,    |    ,    */
  70   "OOOOO                              OOOOO",   
  71   "OOOOO                              OOOOO",   
  72   "OOOOO      O                O      OOOOO",   
  73   "OOOOO      O    OO    OO    O      OOOOO",   
  74   "OOOOO       O   O      O   O       OOOOO",   
  75   "OOOOOO                            OOOOOO",   
  76   "OOOOOOO                          OOOOOOO",   
  77   /*   ,    |    ,    |    ,    |    ,    */
  78 };
  79 
  80 static char collisioncheckdata[UNITS*UNITLINES][WIDTH];
  81 
  82 static int wallorder[WALLLOOP] ={
  83   0,1,2,3,4, 5,6,7,6,7, 0,1,2,3,4, 5,6,7,6,7,
  84   0,1,2,1,2, 7,6,7,6,7, 0,3,4,3,4, 5,5,5,0,5,
  85 };
  86 
  87 
  88 void initwalls(void){
  89   int i,j;
  90   for(i=0;i<UNITS*UNITLINES;i++){
  91     for(j=0;j<WIDTH;j++){
  92       if(walldata[i][j] ==' '){ 
  93         collisioncheckdata[i][j] = NONOBJ;//non object
  94       }else{
  95         collisioncheckdata[i][j] = WALL;//wall
  96       }
  97     }
  98   }
  99 }
 100 
 101 void scrollwall(void){
 102   count++;
 103 }
 104 
 105 void putwalls(int lines){
 106   int unit,lline;
 107   int i,j;
 108   for (i=lines;i>0;i--){
 109     unit = ((count+i) / UNITLINES) % WALLLOOP; 
 110     lline = ((count+i) % UNITLINES); 
 111     for(j=0;j<WIDTH;j++){
 112       putdata(j,lines-i,walldata[wallorder[unit]*UNITLINES+lline][j],
 113               collisioncheckdata[wallorder[unit]*UNITLINES+lline][j]);
 114     }
 115   }
 116   for(j=0;j<WIDTH;j++){
 117     putdata(j,0,'+',BORDER);
 118     putdata(j,lines-1,'+',BORDER);
 119   }            
 120   for(j=0;j<lines;j++){
 121     putdata(0,j,'+',BORDER);
 122     putdata(WIDTH-1,j,'+',BORDER);
 123   }            
 124 }

/* [<][>][^][v][top][bottom][index][help] */