DECLARE SUB centertext (str AS STRING, y AS INTEGER)
DEFINT A-Z
SCREEN 9, , 0, 1
PRINT "hello"
'DRAW "bm-100,0m0,+25"
'PCOPY 0, 1
'SLEEP
'END
TYPE bullet
x AS SINGLE
y AS SINGLE
vx AS SINGLE
vy AS SINGLE
state AS INTEGER
END TYPE
CONST bulcount = 50
DIM bullets(bulcount) AS bullet
FOR i = 0 TO bulcount
bullets(i).state = 0
NEXT
TYPE score
nimi AS STRING * 3
score AS INTEGER
END TYPE
DIM scores(5) AS score
'OPEN "scores.dat" FOR INPUT AS #1
'CLOSE #1
FOR i = 0 TO 5
scores(i).nimi = "ERC"
scores(i).score = 600
NEXT i
OPEN "scores.txt" FOR INPUT AS #1
FOR i = 0 TO 5
INPUT #1, scores(i).score, scores(i).nimi
NEXT
CLOSE #1
GOSUB showscores
DIM keys(0 TO 127)
a = 0
px! = 160
py! = 100
curbul = 0
points = 1000
DO
CLS
' GOSUB keyupd
rotta = 0
tv = 0
kco = INP(&H60)
IF (kco = &H4B OR 0) THEN
keys(0) = 0
IF (keys(1) = 0) THEN keys(0) = 1
keys(1) = 0
keys(2) = 0
keys(3) = 0
ELSEIF (kco = &H4D OR 0) THEN
keys(1) = 0
IF (keys(0) = 0) THEN keys(1) = 1
keys(0) = 0
keys(2) = 0
keys(3) = 0
ELSEIF (kco = &H48 OR 0) THEN
keys(0) = 0
keys(1) = 0
keys(2) = 1
keys(3) = 0
ELSEIF (kco = &H50 OR 0) THEN
keys(0) = 0
keys(1) = 0
keys(2) = 0
keys(3) = 0
ELSEIF (kco = &H1C OR 0) THEN
keys(3) = 1
keys(0) = 0
keys(1) = 0
keys(2) = 0
ELSEIF (kco = &H1 OR 0) THEN
keys(4) = 1
END IF
IF (keys(0)) THEN rotta = -5
IF (keys(1)) THEN rotta = 5
IF (keys(2)) THEN tv = 3
IF (keys(3)) THEN
keys(3) = 0
fubbul = curbul
DO
IF (bullets(curbul).state = 0) THEN
bullets(curbul).state = 3
bullets(curbul).x = px! + pox! * 30
bullets(curbul).y = py! + poy! * 30
bullets(curbul).vx = pox! * 30
bullets(curbul).vy = poy! * 30
points = points - 10
EXIT DO
END IF
curbul = (curbul + 1) MOD bulcount
LOOP UNTIL fubbul = curbul
END IF
a = (a + rotta + 360) MOD 360
CONST PI = 3.141592654#
ar! = a * (PI / 180)
pox! = SIN(ar!)
poy! = COS(ar!)
px! = px! + pox! * tv
py! = py! + poy! * tv
' PRINT px!, py!
COLOR 15
centertext "D A N K T A N K", 2
COLOR 10
centertext "Shoot lazer to a box via bounce", 3
FOR i = 0 TO 0
IF (bullets(i).state >= 1) THEN
bullets(i).x = bullets(i).x + bullets(i).vx
bullets(i).y = bullets(i).y + bullets(i).vy
'IF (bullets(i).x < 10 OR bullets(i).x > 630 OR bullets(i).y < 10 OR bullets(i).y > 330) THEN
' bullets(i).state = 0
'END IF
IF (bullets(i).x < 10 OR bullets(i).x > 630) THEN
bullets(i).vx = -bullets(i).vx
bullets(i).state = bullets(i).state - 1
END IF
IF (bullets(i).y < 10 OR bullets(i).y > 330) THEN
bullets(i).vy = -bullets(i).vy
bullets(i).state = bullets(i).state - 1
END IF
LINE (bullets(i).x, bullets(i).y)-(bullets(i).x - bullets(i).vx, bullets(i).y - bullets(i).vy), 12
IF (bullets(i).x > 550 AND bullets(i).x < 600 AND bullets(i).y > 100 AND bullets(i).y < 150) THEN
bounces = 3 - bullets(i).state
IF bounces <= 0 THEN
bullets(i).state = 0
ELSE
points = points * bounces
SCREEN 9, , 0, 1
COLOR 15
PRINT "woo, you won! "; points
PCOPY 0, 1
GOTO endseq
END IF
END IF
END IF
NEXT i
boxvari = (boxvari + 1) AND 15
LINE (550, 100)-(600, 150), boxvari, B