/* [<][>][^][v][top][bottom][index][help] */
DEFINITIONS
This source file includes following definitions.
- initwalls
- scrollwall
- 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 }