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

COLOR 2
points = points - 1
pop$ = STR$(points) + " pts - bounce count to multiply"
centertext pop$, 4


DRAW "c10"
DRAW "bm" + STR$(INT(px!)) + "," + STR$(INT(py!))
DRAW "ta" + STR$(a)
DRAW "BE20"
DRAW "D40 L10 D5 L20 U5 L10 U40 R40"

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



SCREEN 9, , scrnum, 1 - scrnum
scrnum = (scrnum + 1) AND 1



LOOP UNTIL keys(4)

GOSUB showscores

END

endseq:



OPEN "scores.txt" FOR OUTPUT AS #1
FOR i = 0 TO 5

   PRINT #1, scores(i).score, scores(i).nimi
NEXT
CLOSE #1

GOSUB showscores
END

showscores:

SCREEN 9, , 0, 1
DO
 CLS
col = (col + 1) AND 15
COLOR col
centertext "D A N K   T A N K", 4

COLOR 6
FOR i = 0 TO 5
LOCATE 8 + i, 35
PRINT scores(i).nimi + " " + STR$(scores(i).score)
NEXT
PCOPY 0, 1
LOOP UNTIL INKEY$ = CHR$(13)

RETURN

DEFINT A-Z
keyupd:
       kco = INP(&H60)
       IF (kco AND 128) THEN
         keys((kco AND 127) XOR 0) = 0
       ELSE
         keys((kco AND 127) XOR 0) = 1
       END IF

       RETURN

SUB centertext (str AS STRING, y AS INTEGER)
       LOCATE y, (80 - LEN(str)) / 2
       PRINT str
END SUB