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