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