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

