| 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 |