CLS RANDOMIZE TIMER LET ylength = 31 LET xlength = 41 DIM sx(100) DIM sy(100) DIM ship1r(xlength, ylength) DIM ship2l(xlength, ylength) DIM ship1l(xlength, ylength) DIM ship2r(xlength, ylength) DIM bullet2(6, 6) DIM bullet1(6, 6) DO LOCATE 8, 28 COLOR 11 + 16 PRINT "Welcome to Star Battles" COLOR 14 LOCATE 10, 10 PRINT "Player 1: "; COLOR 12 PRINT "Press A for left, D for right, W for up, S for down, and Spacebar to shoot." COLOR 14 LOCATE 12, 10 PRINT "Player 2: "; COLOR 9 PRINT "Press 4 for left, 6 for right, 8 for up, 5 for down, and Backspace to shoot." LOCATE 15, 10 COLOR 15 PRINT "(Player 2 use Number Pad, NumLock must be on)" LOCATE 16, 10 PRINT "(Player 1, CapsLock must be off)" LOCATE 17, 10 COLOR 13 PRINT "Press P to play" LOOP UNTIL INKEY$ = "p" OR INKEY$ = "P" CLS DO FOR i = 1 TO 500: NEXT i CLS SCREEN 12 LOCATE 12, 36 COLOR 14 PRINT "3" PLAY "o4" PLAY "L8" PLAY "C" FOR i = 1 TO 100000: NEXT i LOCATE 12, 36 COLOR 14 PRINT "2" PLAY "C" FOR i = 1 TO 100000: NEXT i LOCATE 12, 36 COLOR 14 PRINT "1" PLAY "C" FOR i = 1 TO 100000: NEXT i LOCATE 12, 34 COLOR 14 PRINT "BATTLE!" PLAY "L4" PLAY "G" FOR i = 1 TO 100000: NEXT i SCREEN 9, 0, 1, 0 LET ylength = 31 LET xlength = 41 REM get ship 1 into array FOR q = 1 TO ylength a = 100 FOR z = 1 TO xlength READ c PSET (z, q), c PSET (z + a, q), c a = a - 2 NEXT z NEXT q GET (0, 0)-(xlength, ylength), ship1r GET (59, 0)-(100, ylength), ship1l CLS FOR q = 1 TO ylength a = 100 FOR z = 1 TO xlength READ c IF c = 12 THEN LET c = 9 PSET (z, q), c PSET (z + a, q), c a = a - 2 NEXT z NEXT q GET (0, 0)-(xlength, ylength), ship2l GET (60, 0)-(100, ylength), ship2r LET x = z LET y = q LET y2 = q CLS CIRCLE (3, 3), 2, 14 GET (1, 1)-(6, 6), bullet1 CLS CIRCLE (3, 3), 2, 10 GET (1, 1)-(6, 6), bullet2 CLS LET p1h = 100 LET p2h = 100 REM random stars FOR s = 1 TO 100 LET xstars = INT(RND * 639) + 1 LET ystars = INT(RND * 339) + 1 LET sx(s) = xstars LET sy(s) = ystars NEXT s FOR d = 1 TO 100 PSET (sx(d), sy(d)), 15 NEXT d REM erase where ships start LET x2 = 500 PUT (x, y), ship1r PUT (x2, y2), ship2l LINE (10, 2)-(110, 8), 12, BF LINE (500, 2)-(600, 8), 9, BF LET n = 1 LET a$ = INKEY$ DO WHILE a$ <> LCASE$("q") LET a$ = INKEY$ REM erase ships as they move IF x < x2 THEN PUT (x, y), ship1r PUT (x2, y2), ship2l END IF IF x > x2 THEN PUT (x2, y2), ship2r PUT (x, y), ship1l END IF REM player 1 controls IF a$ = "w" THEN LET p1m$ = "up" IF a$ = "s" THEN LET p1m$ = "down" IF a$ = "a" THEN LET p1m$ = "left" IF a$ = "d" THEN LET p1m$ = "right" REM player 2 controls IF a$ = "4" THEN LET p2m$ = "left" IF a$ = "6" THEN LET p2m$ = "right" IF a$ = "5" THEN LET p2m$ = "down" IF a$ = "8" THEN LET p2m$ = "up" REM player 1 moving IF p1m$ = "up" THEN LET y = y - 7 IF p1m$ = "down" THEN LET y = y + 7 IF p1m$ = "left" THEN LET x = x - 7 IF p1m$ = "right" THEN LET x = x + 7 REM player 2 moving IF p2m$ = "up" THEN LET y2 = y2 - 7 IF p2m$ = "down" THEN LET y2 = y2 + 7 IF p2m$ = "left" THEN LET x2 = x2 - 7 IF p2m$ = "right" THEN LET x2 = x2 + 7 REM player 1 off the screen IF x < 2 THEN LET x = 585 IF x > 585 THEN LET x = 2 IF y < 2 THEN LET y = 303 IF y > 303 THEN LET y = 2 REM player 2 off the screen IF x2 < 2 THEN LET x2 = 585 IF x2 > 585 THEN LET x2 = 2 IF y2 < 2 THEN LET y2 = 303 IF y2 > 303 THEN LET y2 = 2 IF a$ = CHR$(32) THEN LINE (b1x, b1y)-(b1x + 5, b1y + 5), 0, BF LET b1m$ = "yes" IF x < x2 THEN LET b1x = x + 41 LET b1d$ = "right" END IF IF x > x2 THEN LET b1x = x LET b1d$ = "left" END IF LET b1y = y + 14 END IF IF b1m$ = "yes" THEN PUT (b1x, b1y), bullet1 LINE (b1x, b1y)-(b1x + 5, b1y + 5), 0, BF IF b1d$ = "right" THEN LET b1x = b1x + 14 IF b1d$ = "left" THEN LET b1x = b1x - 14 PUT (b1x, b1y), bullet1, XOR IF b1d$ = "right" THEN IF (b1x > x2) AND ((b1y > y2) AND (b1y < y2 + 31)) THEN LET p2h = p2h - 10 LET b1m$ = "no" LINE (b1x, b1y)-(b1x + 5, b1y + 5), 0, BF END IF END IF IF b1d$ = "left" THEN IF (b1x < x2 + 41) AND ((b1y > y2) AND (b1y < y2 + 31)) THEN LET p2h = p2h - 10 LET b1m$ = "no" LINE (b1x, b1y)-(b1x + 5, b1y + 5), 0, BF END IF END IF END IF IF (b1x < 14) THEN LET b1m$ = "no" LINE (b1x, b1y)-(b1x + 5, b1y + 5), 0, BF END IF IF (b1x > 599) THEN LET b1m$ = "no" LINE (b1x, b1y)-(b1x + 5, b1y + 5), 0, BF END IF IF a$ = CHR$(8) THEN LINE (b2x, b2y)-(b2x + 5, b2y + 5), 0, BF LET b2m$ = "yes" IF x2 > x THEN LET b2x = x2 LET b2d$ = "left" END IF IF x2 < x THEN LET b2x = x2 + 41 LET b2d$ = "right" END IF LET b2y = y2 + 14 END IF IF b2m$ = "yes" THEN PUT (b2x, b2y), bullet2 LINE (b2x, b2y)-(b2x + 5, b2y + 5), 0, BF IF b2d$ = "right" THEN LET b2x = b2x + 14 IF b2d$ = "left" THEN LET b2x = b2x - 14 PUT (b2x, b2y), bullet2, XOR IF b2d$ = "right" THEN IF (b2x > x) AND ((b2y > y) AND (b2y < y + 31)) THEN LET p1h = p1h - 10 LET b2m$ = "no" LINE (b2x, b2y)-(b2x + 5, b2y + 5), 0, BF END IF END IF IF b2d$ = "left" THEN IF (b2x < x + 41) AND ((b2y > y) AND (b2y < y + 31)) THEN LET p1h = p1h - 10 LET b2m$ = "no" LINE (b2x, b2y)-(b2x + 5, b2y + 5), 0, BF END IF END IF END IF IF (b2x > 599) THEN LET b2m$ = "no" LINE (b2x, b2y)-(b2x + 5, b2y + 5), 0, BF END IF IF (b2x < 14) THEN LET b2m$ = "no" LINE (b2x, b2y)-(b2x + 5, b2y + 5), 0, BF END IF REM healthbars IF p1h = 90 THEN LINE (100, 3)-(109, 7), 0, BF IF p1h = 80 THEN LINE (90, 3)-(109, 7), 0, BF IF p1h = 70 THEN LINE (80, 3)-(109, 7), 0, BF IF p1h = 60 THEN LINE (70, 3)-(109, 7), 0, BF IF p1h = 50 THEN LINE (60, 3)-(109, 7), 0, BF IF p1h = 40 THEN LINE (50, 3)-(109, 7), 0, BF IF p1h = 30 THEN LINE (40, 3)-(109, 7), 0, BF IF p1h = 20 THEN LINE (30, 3)-(109, 7), 0, BF IF p1h = 10 THEN LINE (20, 3)-(109, 7), 0, BF IF p1h = 0 THEN LET w = 1 LET a$ = "q" LINE (11, 3)-(109, 7), 0, BF LET s = 1 END IF IF p2h = 90 THEN LINE (501, 3)-(510, 7), 0, BF IF p2h = 80 THEN LINE (501, 3)-(520, 7), 0, BF IF p2h = 70 THEN LINE (501, 3)-(530, 7), 0, BF IF p2h = 60 THEN LINE (501, 3)-(540, 7), 0, BF IF p2h = 50 THEN LINE (501, 3)-(550, 7), 0, BF IF p2h = 40 THEN LINE (501, 3)-(560, 7), 0, BF IF p2h = 30 THEN LINE (501, 3)-(570, 7), 0, BF IF p2h = 20 THEN LINE (501, 3)-(580, 7), 0, BF IF p2h = 10 THEN LINE (501, 3)-(590, 7), 0, BF IF p2h = 0 THEN LET w = 2 LET a$ = "q" LINE (501, 3)-(599, 7), 0, BF END IF REM draw ships moving IF x < x2 THEN PUT (x, y), ship1r, XOR PUT (x2, y2), ship2l, XOR END IF IF x > x2 THEN PUT (x, y), ship1l, XOR PUT (x2, y2), ship2r, XOR END IF PCOPY 1, 0 DO timenow! = TIMER LOOP UNTIL timenow! <> lasttime! lasttime! = timenow! LOOP IF w = 1 THEN FOR a = 2 TO 62 COLOR 9 LOCATE 12, a - 1 PRINT " " LOCATE 12, a PRINT "Player 2 Wins!" PCOPY 1, 0 FOR i = 1 TO 2500: NEXT i NEXT a LOCATE 12, 1 END IF IF w = 2 THEN FOR a = 62 TO 2 STEP -1 COLOR 12 LOCATE 12, a PRINT "Player 1 Wins!" LOCATE 12, a + 14 PRINT " " PCOPY 1, 0 FOR i = 1 TO 2500: NEXT i NEXT a END IF SCREEN 12 COLOR 3 LOCATE 14, 18 INPUT "Would you like to play again (Y/N)"; y$ CLS LET x = 1 LET y = 1 LET x2 = 500 LET y2 = 1 LET a$ = " " LET w = 0 LET p1m$ = " " LET p2m$ = " " RESTORE LOOP WHILE y$ = "y" OR y$ = "Y" DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,12,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,04,00,00,00,00,12,12,12,12,12,12,12,02,02,02,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,04,00,14,07,07,07,12,12,12,12,12,12,12,02,02,02,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,14,04,04,07,07,07,07,12,12,12,12,12,12,12,02,02,02,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,04,04,04,14,07,07,07,07,07,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00 DATA 00,00,00,00,00,14,04,14,04,07,07,07,07,07,12,12,12,12,12,12,12,12,12,12,02,02,02,12,12,12,12,12,12,12,12,12,12,12,07,07,00 DATA 00,00,00,00,00,04,04,04,14,07,07,07,07,07,12,12,12,12,12,12,12,12,12,12,02,02,02,12,12,12,12,12,12,12,12,12,12,12,07,07,07 DATA 00,00,00,00,00,00,00,14,04,04,07,07,07,07,12,12,12,12,12,12,12,12,12,12,02,02,02,12,12,12,12,12,12,12,12,12,12,12,07,07,00 DATA 00,00,00,00,00,00,00,00,04,04,14,07,07,07,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,02,02,02,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,02,02,02,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,02,02,02,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,12,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,12,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,02,02,02,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,02,02,02,12,12,12,12,12,12,07,07,07,14,04,04,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,02,02,02,12,12,12,12,12,12,07,07,07,07,04,04,14,00,00,00,00,00,00,00 DATA 00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,07,07,07,07,07,14,04,04,04,00,00,00,00,00 DATA 00,00,07,07,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,02,02,02,12,12,07,07,07,07,07,04,14,04,14,00,00,00,00,00 DATA 00,07,07,07,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,02,02,02,12,12,07,07,07,07,07,14,04,04,04,00,00,00,00,00 DATA 00,00,07,07,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,02,02,02,12,12,07,07,07,07,04,04,14,00,00,00,00,00,00,00 DATA 00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,07,07,07,14,04,04,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,02,02,02,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,02,02,02,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,02,02,02,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,12,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,12,12,12,12,12,12,12,12,12,12,12,12,12,12,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00