1 |
MODE 15 |
2 |
MODE 13 |
3 |
OFF |
4 |
ON ERROR MODE 12: REPORT: PRINT ERL: END |
5 |
|
6 |
PRINT''" Red Blue" |
7 |
PRINT'"Move left Z 2" |
8 |
PRINT'"Move right X 3" |
9 |
PRINT'"Fire bullet <space> Enter" |
10 |
PRINT''"Press any key to start..." |
11 |
IF GET |
12 |
|
13 |
MODE 15 |
14 |
MODE 13: REM 1280 * 1024 os units; 320 * 256 pixels (4 os units = 1 pixel) |
15 |
OFF |
16 |
|
17 |
PROCs |
18 |
|
19 |
Bank% = 1 |
20 |
REPEAT |
21 |
WAIT |
22 |
SYS"OS_Byte", 113, Bank% |
23 |
SYS"OS_Byte", 112, 3 - Bank% |
24 |
Bank% = 3 - Bank% |
25 |
PROCf |
26 |
PROCm |
27 |
n% += 1 |
28 |
IF TIME - 100 > m% THEN m% += 100: o% = n%: n% = 0 |
29 |
UNTIL 0 |
30 |
END |
31 |
|
32 |
|
33 |
DEF PROCs |
34 |
x1% = 400 |
35 |
x2% = 800 |
36 |
b1y% = -100 |
37 |
b2y% = -100 |
38 |
z1% = 0 |
39 |
z2% = 0 |
40 |
zh% = 0 |
41 |
zp% = 0 |
42 |
s% = 0 |
43 |
e% = 0 |
44 |
f% = 1 |
45 |
m% = TIME |
46 |
n% = 0 |
47 |
o% = 0 |
48 |
DIM sx%(10) |
49 |
DIM sy%(10) |
50 |
DIM sd%(10) |
51 |
DIM se%(10) |
52 |
se%() = FALSE |
53 |
ENDPROC |
54 |
|
55 |
|
56 |
DEF PROCf |
57 |
COLOUR 128 + %010000 |
58 |
CLS |
59 |
GCOL %000011 |
60 |
PLOT 4, x1%, 140 |
61 |
PLOT 0, -40, -40 |
62 |
PLOT 81, 80, 0 |
63 |
GCOL %110000 |
64 |
PLOT 4, x2%, 140 |
65 |
PLOT 0, -40, -40 |
66 |
PLOT 81, 80, 0 |
67 |
GCOL %001100 |
68 |
RECTANGLE FILL 0, 0, 1280, 100 |
69 |
IF b1y% > 0 THEN |
70 |
GCOL %010011 |
71 |
CIRCLE FILL b1x%, b1y%, 4 |
72 |
ENDIF |
73 |
IF b2y% > 0 THEN |
74 |
GCOL %110001 |
75 |
CIRCLE FILL b2x%, b2y%, 4 |
76 |
ENDIF |
77 |
IF s% > 0 THEN |
78 |
FOR t% = 1 TO 10 |
79 |
IF se%(t%) THEN |
80 |
GCOL RND(%111111) |
81 |
RECTANGLE FILL sx%(t%) - 20, sy%(t%) - 20, 40 |
82 |
ENDIF |
83 |
NEXT |
84 |
ENDIF |
85 |
COLOUR %111111 |
86 |
PRINT "Red: "+STR$z1% TAB(10)" "; |
87 |
IF zp% = 1 THEN PRINT "<-"; ELSE PRINT " "; |
88 |
PRINT" High: "+STR$zh%; |
89 |
IF zp% = 2 THEN PRINT " ->"; |
90 |
PRINTTAB(30) "Blue: "+STR$z2% |
91 |
COLOUR 0 |
92 |
COLOUR 128 + %001100 TINT 196 |
93 |
PRINTTAB(1, 30) "Level: "+STR$f% TAB(20) "Frames/sec: "+STR$o% |
94 |
ENDPROC |
95 |
|
96 |
|
97 |
DEF PROCm |
98 |
IF INKEY -98 THEN x1% -= 16: IF x1% < 0 THEN x1% = 0 |
99 |
IF INKEY -67 THEN x1% += 16: IF x1% > 1280 THEN x1% = 1280 |
100 |
IF INKEY -125 THEN x2% -= 16: IF x2% < 0 THEN x2% = 0 |
101 |
IF INKEY -109 THEN x2% += 16: IF x2% > 1280 THEN x2% = 1280 |
102 |
IF (INKEY -99) AND b1y% < 0 THEN b1y% = 130: b1x% = x1% |
103 |
IF (INKEY -61) AND b2y% < 0 THEN b2y% = 130: b2x% = x2% |
104 |
IF b1y% > 0 THEN b1y% += 40: IF b1y% > 1000 THEN b1y% = -100 |
105 |
IF b2y% > 0 THEN b2y% += 40: IF b2y% > 1000 THEN b2y% = -100 |
106 |
IF RND(50) = 1 AND s% < 10 THEN |
107 |
s% += 1 |
108 |
t% = 1 |
109 |
WHILE se%(t%) = TRUE |
110 |
t% += 1 |
111 |
ENDWHILE |
112 |
sx%(t%) = RND(1200) |
113 |
sy%(t%) = 1000 |
114 |
sd%(t%) = f% |
115 |
se%(t%) = TRUE |
116 |
e% += 1 |
117 |
IF e% = 20 THEN f% += 1: e% = 0 |
118 |
ENDIF |
119 |
IF s% > 0 THEN |
120 |
FOR t% = 1 TO 10 |
121 |
IF se%(t%) THEN |
122 |
sy%(t%) -= sd%(t%) |
123 |
IF sy%(t%) < 120 THEN |
124 |
s% = 0 |
125 |
FOR u% = 1 TO 10 |
126 |
se%(u%) = FALSE |
127 |
NEXT |
128 |
IF z1% > zh% THEN zh% = z1%: zp% = 1 |
129 |
IF z2% > zh% THEN zh% = z2%: zp% = 2 |
130 |
z1% = 0 |
131 |
z2% = 0 |
132 |
e% = 0 |
133 |
f% = 1 |
134 |
ELSE |
135 |
IF b1y% > 0 THEN |
136 |
IF (sx%(t%) - 20 < b1x%) AND (sx%(t%) + 20 > b1x%) AND (b1y% > sy%(t%) - 20) THEN s% -= 1: se%(t%) = FALSE: z1% += sy%(t%) / 10: b1y% = -100 |
137 |
ENDIF |
138 |
IF b2y% > 0 THEN |
139 |
IF (sx%(t%) - 20 < b2x%) AND (sx%(t%) + 20 > b2x%) AND (b2y% > sy%(t%) - 20) THEN s% -= 1: se%(t%) = FALSE: z2% += sy%(t%) / 10: b2y% = -100 |
140 |
ENDIF |
141 |
ENDIF |
142 |
ENDIF |
143 |
NEXT |
144 |
ENDIF |
145 |
ENDPROC |