'ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ '³ LANDER .BAS LUNAR LANDER!!!! ³ 'ÆÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵ '³ This program is by Mallard. For other programs like this ³ '³ one, or for more information, please contact me. I can ³ '³ be reached at "mallard@gcomm.com" via Internet e-mail or ³ '³ or via WWW - "http://www.lookup.com/homepages/80948/qb/ ³ '³ index.html". Please upload as much source code as you can ³ '³ to this home page! Feel free to distribute this program,³ '³ or use part or all of it in one of your own as long as I ³ '³ am given credit. Thanks! ÍMallardÍ ³ 'ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; ' ' SPECIAL NOTE: This is one of my great programming efforts and I'd appreciate ' it if you wouldn't modify and distribute it. ' ' C 1995/96 by Mallard. ' DECLARE SUB PrintThing () DECLARE SUB Menu () DECLARE SUB Delay () DECLARE SUB HiScore () DECLARE SUB Roids () DECLARE SUB bonus () DECLARE SUB Fried (guyx!, guyy!) DECLARE SUB Expl () DECLARE SUB BlastOff (x!, y!) DECLARE SUB ThemeSong () DECLARE SUB LoseSong () DECLARE SUB WinSong () DECLARE SUB LSound () DECLARE SUB WSound () DECLARE SUB Title () COMMON SHARED x, y, points, boon, boon2, dela SCREEN 7, 0, 1, 0 ON ERROR GOTO er DIM desc$(5), colors(5, 2) desc$(1) = "Planet Hermes" desc$(2) = "Planet Odyssesus" desc$(3) = "Planet Athena" desc$(4) = "Planet Moria" desc$(5) = "Planet Zeus" colors(1, 1) = 11: colors(1, 2) = 3 colors(2, 1) = 12: colors(2, 2) = 4 colors(3, 1) = 13: colors(3, 2) = 5 colors(4, 1) = 14: colors(4, 2) = 6 colors(5, 1) = 15: colors(5, 2) = 7 DIM SHARED l(100), e(100), g(100), n(100), d(100), a(100), r(100) 'SCREEN 7, 0, 1, 0 RANDOMIZE TIMER PRINT "Please wait..." PCOPY 1, 0 CLS Title SCREEN 9 SCREEN 0, 0, 0, 0 Menu CLS COLOR 13 PRINT "Choose your skill level:" PRINT " 1. 1000 fuel" PRINT " 2. 750 fuel" PRINT " 3. 500 fuel" PRINT " 4. 250 fuel" PRINT " 5. 100 fuel" PRINT INPUT "Skill Level"; skill ON ERROR GOTO bad OPEN "lander.cfg" FOR INPUT AS 1 INPUT #1, dela CLOSE ON ERROR GOTO er GOTO okdelay bad: PRINT PRINT "--386DX + owners:" PRINT "Lander may run fast on your computer. Please experiment with the delay" PRINT "to ensure fun playing." PRINT PRINT "Enter a value from 0 to 32767. If the game runs normally, leave it empty." INPUT "Delay?"; dela OPEN "lander.cfg" FOR OUTPUT AS 1 PRINT #1, dela CLOSE okdelay: CLS SCREEN 7, 0, 1, 0 RANDOMIZE TIMER SELECT CASE skill CASE 1 fuel = 1000 CASE 2 fuel = 750 CASE 3 fuel = 500 CASE 4 fuel = 250 CASE 5 fuel = 100 END SELECT IF fuel = 0 THEN fuel = 500: skill = 3 DIM SHARED ship1(130), aste(130), Explo(130), Fry(100) DIM planet1(289), planet2(289), planet3(289), comet(225) GOSUB Getgraphics DIM mtns(320) okp: IF bon = 0 THEN level = level + 1: ELSE bon = 0 IF level = 6 THEN LOCATE 1, 1 PRINT "You beat the game! Good job. " PCOPY 1, 0 8 IF INKEY$ = "" THEN GOTO 8 SCREEN 9 SCREEN 0, 0, 0, 0 WSound GOTO Pagain END IF RANDOMIZE TIMER boon2 = 0 CLS SELECT CASE skill CASE 1 fuel = 1000 CASE 2 fuel = 750 CASE 3 fuel = 500 CASE 4 fuel = 250 CASE 5 fuel = 100 END SELECT IF fuel = 0 THEN fuel = 500 y = 185 FOR i = 0 TO 320 mtns(i) = y SELECT CASE INT(RND * 5) + 1 CASE 1 IF y < 198 THEN y = y + 1 CASE 2 IF y > 160 THEN y = y - 1 END SELECT PSET (i, y), colors(level, 1) NEXT PAINT (0, 199), colors(level, 2), colors(level, 1) LET p1x = INT(RND * 100) + 6 LET p1y = INT(RND * 140) + 1 redop2x: LET p2x = INT(RND * 100) + 106 LET p2y = INT(RND * 140) + 1 IF p2x > 150 AND p2x < 170 THEN GOTO redop2x LET p3x = INT(RND * 100) + 200 LET p3y = INT(RND * 140) + 1 PUT (p1x, p1y), planet1 PUT (p2x, p2y), planet2 PUT (p3x, p3y), planet3 DIM star(50, 3) FOR i = 1 TO 50 LET c = INT(RND * 3) + 1 IF c = 1 THEN c = 8 IF c = 2 THEN c = 7 IF c = 3 THEN c = 15 star(i, 1) = INT(RND * 320) star(i, 2) = INT(RND * 160) star(i, 3) = c NEXT FOR i = 1 TO 50 PSET (star(i, 1), star(i, 2)), star(i, 3) NEXT DIM landing(20) landingst = INT(RND * 260) + 30 s = 1 FOR i = landingst TO landingst + 19 landing(s) = i s = s + 1 PSET (i - 1, mtns(i)), 1 PSET (i - 1, mtns(i) + 1), 1 PSET (i - 1, mtns(i) + 2), 1 NEXT PCOPY 1, 2 PCOPY 2, 1 ymomentum = .01 xmomentum = 0 ydir = 1 xdir = 0 x = 160 y = 0 so$ = "Level:" + STR$(level) LOCATE 12, 15 PRINT so$ LOCATE 13, (25 - LEN(desc$(level))) PRINT desc$(level) PCOPY 1, 0 7 IF INKEY$ = "" THEN GOTO 7 PCOPY 2, 1 putship: s$ = "" DO WHILE s$ = "" s$ = INKEY$ PUT (x, y), ship1, PSET IF ymomentum <> 0 THEN SELECT CASE ydir CASE 1 ymomentum = ymomentum + .05 CASE 2 ymomentum = ymomentum + .05: IF ymomemntum >= 0 THEN ydir = 1 END SELECT END IF IF xmomentum <> 0 THEN SELECT CASE xdir CASE 1 IF x < 300 THEN xmomentum = xmomentum + .05: ELSE xmomentum = xmomentum - .05 CASE 2 IF x > 10 THEN xmomentum = xmomentum - .05: ELSE xmomentum = xmomentum + .05 END SELECT END IF y = y + ymomentum x = x + xmomentum IF x > 300 THEN x = 300 IF x < 10 THEN x = 10 IF y < 10 THEN y = 10 IF level = 3 THEN IF fuel < 500 AND fuel > 400 THEN IF x < 20 AND y < 20 THEN LOCATE 12, 15: PRINT "BONUS LEVEL!!": PCOPY 1, 0: DO WHILE INKEY$ = "": LOOP: bonus: x = 160: y = 0: fuel = 500: PCOPY 2, 1: boon = 1: level = level - 1: GOTO okp IF y + 13 >= 160 THEN IF INT(y + 13) >= mtns(x + 5) THEN FOR i = 1 TO 20 IF INT(x + 5) <> landing(i) THEN bad = bad + 1 NEXT i IF bad = 20 THEN Expl LOCATE 1, 1 PRINT "Ouch." PCOPY 1, 0 2 IF INKEY$ = "" THEN GOTO 2 SCREEN 9: SCREEN 0, 0, 0, 0: PRINT "You lose.": LSound: GOTO Pagain END IF bad = 0 IF xmomentum > 2 THEN Expl: SCREEN 9: SCREEN 0, 0, 0, 0: PRINT "You lose.": LSound: GOTO Pagain IF xmomentum < -2 THEN Expl: SCREEN 9: SCREEN 0, 0, 0, 0: PRINT "You lose.": LSound: GOTO Pagain IF ymomentum > 2 THEN Expl: SCREEN 9: SCREEN 0, 0, 0, 0: PRINT "You lose.": LSound: GOTO Pagain IF ymomentum < -2 THEN Expl: SCREEN 9: SCREEN 0, 0, 0, 0: PRINT "You lose.": LSound: GOTO Pagain GOTO onground SCREEN 9: SCREEN 0, 0, 0, 0: PRINT "You win.": WSound: GOTO Pagain END IF END IF LOCATE 1, 1 PRINT "Fuel:"; fuel; "XM:"; LEFT$(STR$(xmomentum), 5); " "; "YM:"; LEFT$(STR$(xmomentum), 4) IF fuel <> 0 THEN fuel = fuel - 1 IF level = 3 THEN IF fuel = 500 THEN SOUND 200, 1 IF level = 3 THEN IF fuel = 450 THEN SOUND 100, 1 ' IF fuel = 0 THEN CLS : SCREEN 9: SCREEN 0, 0, 0, 0: PRINT "Game over, man.": LSound: GOTO pagain LET xpoint = p1x - x: LET xpoint = ABS(xpoint) LET ypoint = p1y - y: LET ypoint = ABS(ypoint) IF xpoint < 10 AND xpoint > 2 THEN IF ypoint < 13 THEN Expl LOCATE 1, 1 PRINT "Planet hit!" 9 IF INKEY$ = "" THEN GOTO 9 SCREEN 9 SCREEN 0, 0, 0, 0 LSound GOTO Pagain END IF END IF LET xpoint = p2x - x: LET xpoint = ABS(xpoint) LET ypoint = p2y - y: LET ypoint = ABS(ypoint) IF xpoint < 10 AND xpoint > 2 THEN IF ypoint < 13 THEN Expl LOCATE 1, 1 PRINT "Planet hit! " PCOPY 1, 0 10 IF INKEY$ = "" THEN GOTO 10 SCREEN 9 SCREEN 0, 0, 0, 0 LSound GOTO Pagain END IF END IF LET xpoint = p3x - x: LET xpoint = ABS(xpoint) LET ypoint = p3y - y: LET ypoint = ABS(ypoint) IF xpoint < 10 AND xpoint > 2 THEN IF ypoint < 13 THEN Expl LOCATE 1, 1 PRINT "Planet hit!" 11 IF INKEY$ = "" THEN GOTO 11 SCREEN 9 SCREEN 0, 0, 0, 0 LSound GOTO Pagain END IF END IF soop = INT(RND * 75) + 1 IF soop = 27 OR soop = 44 THEN IF stt = 0 OR st = 11 THEN st = INT(RND * 50): stt = 1 END IF IF stt > 0 AND stt < 11 THEN SELECT CASE stt CASE 1 PSET (star(st, 1), star(st, 1)), 15 stt = 2 CASE 2 PSET (star(st, 1) - 1, star(st, 2)), 15 stt = 3 CASE 3 PSET (star(st, 1), star(st, 2) + 1), 15 stt = 4 CASE 4 PSET (star(st, 1), star(st, 2) - 1), 15 stt = 5 CASE 5 PSET (star(st, 1) + 1, star(st, 2)), 15 stt = 6 CASE 6 PSET (star(st, 1), star(st, 2)), star(st, 3) stt = 7 CASE 7 PRESET (star(st, 1) - 1, star(st, 2)) stt = 8 CASE 8 PRESET (star(st, 1) + 1, star(st, 2)) stt = 9 CASE 9 PRESET (star(st, 1), star(st, 2) + 1) stt = 10 CASE 10 PRESET (star(st, 1), star(st, 2) - 1) stt = 0 END SELECT END IF IF soop = 33 THEN IF ct = 0 THEN ct = -1: cx = INT(RND * 200) + 1: cy = INT(RND * 100) + 1 IF ct = -1 THEN PUT (cx, cy), comet, OR cx = cx + 3 cy = cy + 3 IF cx >= 300 THEN ct = 0 IF cy >= 160 THEN IF cy + 15 >= mtns(cx + 10) THEN PCOPY 2, 1: FOR i = 1 TO 10: PSET (cx + i - 1, mtns(cx + i)), 8: NEXT: PCOPY 1, 2: ct = 0 LET xpoint = cx - x: LET xpoint = ABS(xpoint) LET ypoint = cy - y: LET ypoint = ABS(ypoint) IF xpoint < 10 AND xpoint > 2 THEN IF ypoint < 13 THEN Expl LOCATE 1, 1 PRINT "Comet hit! " PCOPY 1, 0 4 IF INKEY$ = "" THEN GOTO 4 SCREEN 9 SCREEN 0, 0, 0, 0 LSound GOTO Pagain END IF END IF END IF soop = 0 PCOPY 1, 0 PCOPY 2, 1 IF dela <> 0 THEN Delay LOOP IF fuel <> 0 THEN SELECT CASE s$ CASE "4" SELECT CASE xdir CASE 0 xmomentum = xmomentum - .4: xdir = 2 CASE 1 xmomentum = xmomentum - .4: IF xmomentum <= 0 THEN xdir = 2 CASE 2 xmomentum = xmomentum - .4 END SELECT CASE "6" SELECT CASE xdir CASE 0 xmomentum = xmomentum + .4: xdir = 1 CASE 1 xmomentum = xmomentum + .4 CASE 2 xmomentum = xmomentum + .4: IF xmomentum >= 0 THEN xdir = 1 END SELECT CASE "8" SELECT CASE ydir CASE 1 ymomentum = ymomentum - .5: IF ymomentum <= 0 THEN ydir = 2 CASE 2 ymomentum = ymomentum - .5 END SELECT CASE "2" SELECT CASE ydir CASE 1 ymomntum = ymomentum + .5 CASE 2 ymomentum = ymomentum + .5: IF ymomentum >= 0 THEN ydir = 1 END SELECT CASE "d" FOR i = 5 TO 50 STEP 2 c = 4 IF i < 35 THEN c = 12 IF i < 15 THEN c = 14 PCOPY 2, 1 LINE (x + 4, y + 7)-(x + i, y - (INT(RND * 5) + i)), c LINE (x + 4, y + 7)-(x - i, y + (INT(RND * 5) + i)), c PCOPY 1, 2 PCOPY 1, 0 NEXT LOCATE 1, 1 PRINT "Boom shaka laka." PCOPY 1, 0 DO WHILE INKEY$ = "": LOOP SCREEN 9 SCREEN 0, 0, 0, 0 LSound GOTO Pagain END SELECT END IF s$ = "" GOTO putship Pagain: ct = 0 PRINT "Your total score was:"; points CLOSE OPEN "landers.dat" FOR INPUT AS 1 DIM names$(5), levels(5), scores(5) FOR i = 1 TO 5 INPUT #1, names$(i), levels(i), scores(i) NEXT CLOSE IF points > scores(skill) THEN PRINT "Your score was the best score for your level! " renm: INPUT "What's your name"; name$ IF LEN(name$) > 12 THEN PRINT "Too large.": GOTO renm scores(skill) = points levels(skill) = level names$(skill) = name$ PRINT PRINT "Press a key" DO WHILE INKEY$ = "": LOOP OPEN "landers.dat" FOR OUTPUT AS 1 FOR i = 1 TO 5 WRITE #1, names$(i), levels(i), scores(i) NEXT CLOSE ELSE PRINT "Press A Key" DO WHILE INKEY$ = "": LOOP END IF ERASE names$, levels, scores HiScore PRINT PRINT "Your final score was"; points; "in case you missed it." INPUT "Play again? (y/n)"; yn$ IF yn$ = "y" THEN SCREEN 7, 0, 1, 0: level = 0: points = 0: flag = 0: GOTO okp PRINT "Okay." PRINT "This production 1995 by David Zohrob." PRINT "Please support the software - send" PRINT "a small donation or some encouragement" PRINT "(please?) to the author." PRINT COLOR 14 PRINT "Have a nice day. "; CHR$(1) COLOR 7 END er: LOCATE 1, 1 PRINT "You fool!" PCOPY 1, 0 3 IF INKEY$ = "" THEN GOTO 3 SCREEN 9 SCREEN 0, 0, 0, 0 PRINT "Error! Error! Code: "; ERR PRINT "Please send this error code to the author!" PRINT "Sorry. :-)" LSound GOTO Pagain 'Out of spacecraft onground: LET flagx = INT(RND * 280) + 1 PCOPY 2, 1 FOR i = 1 TO 5 PSET (flagx + i - 1, mtns(flagx + i)), 2 PSET (flagx + i - 1, mtns(flagx + i) + 1), 2 PSET (flagx + i - 1, mtns(flagx + i) + 2), 2 NEXT PCOPY 1, 2 guyy = y + 5 guyx = x + 5 FOR i = 1 TO 10 guyy = guyy - 1 IF flagx < x THEN guyx = guyx - 1: ELSE guyx = guyx + 1 PSET (guyx, guyy - 1), 8 PSET (guyx - 2, guyy - 1), 8 PSET (guyx - 1, guyy - 2), 8 PSET (guyx - 1, guyy - 3), 8 PSET (guyx - 2, guyy - 4), 8 PSET (guyx - 1, guyy - 4), 8 PSET (guyx, guyy - 4), 8 PSET (guyx - 1, guyy - 5), 7 PUT (x, y), ship1 PCOPY 1, 0 PCOPY 2, 1 NEXT guyfall: guyy = guyy + 1 IF guyy >= mtns(guyx) THEN GOTO okguyfall IF flagx < x THEN guyx = guyx - 1: ELSE guyx = guyx + 1 PSET (guyx, guyy - 1), 8 PSET (guyx - 2, guyy - 1), 8 PSET (guyx - 1, guyy - 2), 8 PSET (guyx - 1, guyy - 3), 8 PSET (guyx - 2, guyy - 4), 8 PSET (guyx - 1, guyy - 4), 8 PSET (guyx, guyy - 4), 8 PSET (guyx - 1, guyy - 5), 7 PUT (x, y), ship1 PCOPY 1, 0 PCOPY 2, 1 GOTO guyfall okguyfall: guyy = mtns(guyx) okog: DO WHILE s$ = "" s$ = INKEY$ soop = INT(RND * 75) + 1 IF soop = 27 OR soop = 44 THEN IF stt = 0 OR st = 11 THEN st = INT(RND * 50): stt = 1 END IF IF stt > 0 AND stt < 11 THEN SELECT CASE stt CASE 1 PSET (star(st, 1), star(st, 1)), 15 stt = 2 CASE 2 PSET (star(st, 1) - 1, star(st, 2)), 15 stt = 3 CASE 3 PSET (star(st, 1), star(st, 2) + 1), 15 stt = 4 CASE 4 PSET (star(st, 1), star(st, 2) - 1), 15 stt = 5 CASE 5 PSET (star(st, 1) + 1, star(st, 2)), 15 stt = 6 CASE 6 PSET (star(st, 1), star(st, 2)), star(st, 3) stt = 7 CASE 7 PRESET (star(st, 1) - 1, star(st, 2)) stt = 8 CASE 8 PRESET (star(st, 1) + 1, star(st, 2)) stt = 9 CASE 9 PRESET (star(st, 1), star(st, 2) + 1) stt = 10 CASE 10 PRESET (star(st, 1), star(st, 2) - 1) stt = 0 END SELECT END IF IF soop = 33 THEN IF ct = 0 THEN ct = -1: cx = INT(RND * 200) + 1: cy = INT(RND * 100) + 1 IF ct = -1 THEN PUT (cx, cy), comet, OR cx = cx + 3 cy = cy + 3 IF cx >= 300 THEN ct = 0 IF cy >= 160 THEN IF cy + 15 >= mtns(cx + 10) THEN PCOPY 2, 1: FOR i = 1 TO 10: PSET (cx + i - 1, mtns(cx + i)), 8: NEXT: PCOPY 1, 2: ct = 0 LET xpoint = cx - guyx: LET xpoint = ABS(xpoint) LET ypoint = cy - guyy: LET ypoint = ABS(ypoint) IF xpoint < 16 AND xpoint > 0 THEN IF ypoint < 20 THEN CALL Fried(guyx, mtns(guyx) - 10) LOCATE 1, 1 PRINT "Comet hit!" PCOPY 1, 0 5 IF INKEY$ = "" THEN GOTO 5 SCREEN 9 SCREEN 0, 0, 0, 0 LSound ct = 0 GOTO Pagain END IF END IF LET xpoint = cx - x: LET xpoint = ABS(xpoint) LET ypoint = cy - y: LET ypoint = ABS(ypoint) IF xpoint < 10 AND xpoint > 2 THEN IF ypoint < 13 THEN Expl LOCATE 1, 1 PRINT "Comet hit! " PCOPY 1, 0 oop: IF INKEY$ = "" THEN GOTO oop SCREEN 9 SCREEN 0, 0, 0, 0 LSound GOTO Pagain END IF END IF END IF IF guys = 0 THEN PSET (guyx, guyy - 1), 8 PSET (guyx - 2, guyy - 1), 8 PSET (guyx - 1, guyy - 2), 8 PSET (guyx - 1, guyy - 3), 8 PSET (guyx - 2, guyy - 4), 8 PSET (guyx - 1, guyy - 4), 8 PSET (guyx, guyy - 4), 8 PSET (guyx - 1, guyy - 5), 7 END IF IF guys = 1 THEN PSET (guyx, guyy - 1), 8 PSET (guyx - 1, guyy - 1), 8 PSET (guyx - 1, guyy - 2), 8 PSET (guyx - 1, guyy - 3), 8 PSET (guyx - 2, guyy - 4), 8 PSET (guyx - 1, guyy - 4), 8 PSET (guyx, guyy - 4), 8 PSET (guyx - 1, guyy - 5), 7 END IF putships: PUT (x, y), ship1 IF INT(guyx) = INT(x + 5) THEN IF flag = 1 THEN CALL BlastOff(x, y) LOCATE 1, 1: PRINT "You beat this level. Press a key.": PCOPY 1, 0: flag = 0 points = points + (fuel * skill) 6 IF INKEY$ = "" THEN GOTO 6 GOTO okp END IF END IF soop = 0 PCOPY 1, 0 PCOPY 2, 1 LOOP SELECT CASE s$ CASE "+" IF INT(guyx) >= 316 THEN IF boon2 <> 1 THEN LOCATE 12, 15: PRINT "BONUS LEVEL!!": PCOPY 1, 0: DO WHILE INKEY$ = "": LOOP: CLS : Roids: s$ = "": GOTO okog CASE "6" IF guyx < 318 THEN guyx = guyx + 1 guyy = mtns(guyx) SELECT CASE guys CASE 1 guys = 0 CASE 0 guys = 1 END SELECT CASE "5" IF flag <> 1 THEN IF ABS(flagx - guyx) < 5 THEN PCOPY 2, 1 LINE (guyx, mtns(guyx))-(guyx, mtns(guyx) - 5), 15 LINE (guyx, mtns(guyx) - 5)-(guyx + 4, mtns(guyx) - 2.5), 15, BF flag = 1 PCOPY 1, 2 END IF END IF CASE "4" IF guyx > 3 THEN guyx = guyx - 1 guyy = mtns(guyx) SELECT CASE guys CASE 1 guys = 0 CASE 0 guys = 1 END SELECT END SELECT s$ = "" GOTO okog 'Graphics 'Title screen graphics DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,1,1,1,1,1,1,1,1,1,1,00 DATA 00,1,1,1,1,1,1,1,1,1,1,1,1,00 DATA 00,1,1,1,1,1,1,1,1,1,1,1,1,00 DATA 00,1,1,1,1,1,1,1,1,1,1,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,1,1,1,00,00,00,00,00,00,00,00 DATA 00,1,1,1,1,1,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,00,00 DATA 00,1,1,1,1,1,1,1,1,1,1,1,1,00 DATA 00,1,1,1,1,1,1,1,1,1,1,1,1,00 ' DATA 00,00,00,00,00,00,1,1,00,00,00,00,00,00 DATA 00,00,00,00,00,1,1,1,1,00,00,00,00,00 DATA 00,00,00,00,00,1,1,1,1,00,00,00,00,00 DATA 00,00,00,00,00,1,1,1,1,00,00,00,00,00 DATA 00,00,00,00,1,1,00,00,1,1,00,00,00,00 DATA 00,00,00,00,1,1,00,00,1,1,00,00,00,00 DATA 00,00,00,00,1,1,00,00,1,1,00,00,00,00 DATA 00,00,00,00,1,1,00,00,1,1,00,00,00,00 DATA 00,00,00,1,1,00,00,00,00,1,1,00,00,00 DATA 00,00,00,1,1,00,00,00,00,1,1,00,00,00 DATA 00,00,00,1,1,00,00,00,00,1,1,00,00,00 DATA 00,00,00,1,1,00,00,00,00,1,1,00,00,00 DATA 00,00,00,1,1,1,1,1,1,1,1,00,00,00 DATA 00,00,1,1,00,00,00,00,00,00,1,1,00,00 DATA 00,00,1,1,00,00,00,00,00,00,1,1,00,00 DATA 00,00,1,1,00,00,00,00,00,00,1,1,00,00 DATA 00,00,1,1,00,00,00,00,00,00,1,1,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 ' ' ' ' ' DATA 00,1,1,1,1,1,1,1,1,1,1,00,00,00 DATA 00,1,1,1,1,1,1,1,1,1,1,1,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,1,1,00,00 DATA 00,1,1,1,1,1,1,1,1,1,1,00,00,00 DATA 00,1,1,1,1,1,1,1,1,1,00,00,00,00 ' ' DATA 00,1,1,1,1,1,1,1,1,1,1,1,00,00 DATA 00,1,1,1,1,1,1,1,1,1,1,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,1,1,1,1,1,1,1,1,1,1,00 DATA 00,1,1,1,1,1,1,1,1,1,1,1,00,00 DATA 00,1,1,00,00,00,00,00,1,1,00,00,00,00 DATA 00,1,1,00,00,00,00,00,00,1,1,00,00,00 DATA 00,1,1,00,00,00,00,00,00,1,1,00,00,00 DATA 00,1,1,00,00,00,00,00,00,00,1,1,00,00 DATA 00,1,1,00,00,00,00,00,00,00,1,1,00,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,1,1,00 DATA 00,1,1,00,00,00,00,00,00,00,00,00,1,1 DATA 00,1,1,00,00,00,00,00,00,00,00,00,1,1 ' ' DATA 1,1,1,00,00,00,00,00,00,00,00,00,1,1 DATA 1,1,1,00,00,00,00,00,00,00,00,00,1,1 DATA 1,1,1,1,00,00,00,00,00,00,00,00,1,1 DATA 1,1,00,1,00,00,00,00,00,00,00,00,1,1 DATA 1,1,00,1,1,00,00,00,00,00,00,00,1,1 DATA 1,1,00,00,1,00,00,00,00,00,00,00,1,1 DATA 1,1,00,00,1,1,00,00,00,00,00,00,1,1 DATA 1,1,00,00,00,1,00,00,00,00,00,00,1,1 DATA 1,1,00,00,00,1,1,00,00,00,00,00,1,1 DATA 1,1,00,00,00,00,1,00,00,00,00,00,1,1 DATA 1,1,00,00,00,00,1,1,00,00,00,00,1,1 DATA 1,1,00,00,00,00,00,1,00,00,00,00,1,1 DATA 1,1,00,00,00,00,00,1,1,00,00,00,1,1 DATA 1,1,00,00,00,00,00,00,1,00,00,00,1,1 DATA 1,1,00,00,00,00,00,00,1,1,00,00,1,1 DATA 1,1,00,00,00,00,00,00,00,1,00,00,1,1 DATA 1,1,00,00,00,00,00,00,00,1,1,00,1,1 DATA 1,1,00,00,00,00,00,00,00,00,1,00,1,1 DATA 1,1,00,00,00,00,00,00,00,00,1,1,1,1 DATA 1,1,00,00,00,00,00,00,00,00,00,1,1,1 ' ' 'Ship DATA 00,00,00,00,07,07,00,00,00,00 DATA 00,00,00,00,07,07,00,00,00,00 DATA 00,00,00,07,07,07,07,00,00,00 DATA 00,00,07,03,03,03,03,07,00,00 DATA 00,00,07,03,11,11,03,07,00,00 DATA 00,00,07,07,11,11,07,07,00,00 DATA 00,00,07,03,11,11,03,07,00,00 DATA 00,00,07,03,03,03,03,07,00,00 DATA 00,07,07,07,07,07,07,07,07,00 DATA 07,07,07,07,07,07,07,07,07,07 DATA 07,04,04,08,08,08,08,04,04,07 DATA 07,04,08,00,00,00,00,08,04,07 DATA 08,08,00,00,00,00,00,00,08,08 'Planet1 (Red) DATA 00,00,00,00,00,00,12,12,14,14,14,00,00,00,00,00,00 DATA 00,00,00,00,12,12,12,12,12,14,14,14,14,00,00,00,00 DATA 00,00,00,12,12,12,12,14,12,12,12,14,14,14,00,00,00 DATA 00,00,12,12,12,12,12,12,14,12,14,12,12,14,14,00,00 DATA 00,12,12,12,12,12,12,12,12,12,12,14,14,12,14,14,00 DATA 00,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,00 DATA 12,12,12,12,12,12,12,12,12,12,12,12,12,14,12,14,14 DATA 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14 DATA 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14 DATA 12,12,12,12,12,04,12,12,12,12,12,12,12,12,12,14,12 DATA 04,04,12,04,12,12,12,12,04,12,12,12,12,12,12,12,12 DATA 00,04,04,12,12,04,12,12,12,12,04,12,12,12,12,12,00 DATA 00,04,04,12,04,12,12,04,12,12,12,12,12,12,12,12,00 DATA 00,00,04,04,12,04,12,04,12,04,12,12,12,12,12,00,00 DATA 00,00,00,04,04,04,12,12,12,12,04,12,12,12,00,00,00 DATA 00,00,00,00,04,04,04,04,04,04,12,12,12,00,00,00,00 DATA 00,00,00,00,00,00,04,04,04,04,04,00,00,00,00,00,00 'Planet2(Blue) DATA 00,00,00,00,00,00,09,09,11,11,11,00,00,00,00,00,00 DATA 00,00,00,00,09,09,09,09,09,11,11,11,11,00,00,00,00 DATA 00,00,00,09,09,09,09,11,09,09,09,11,11,11,00,00,00 DATA 00,00,09,09,09,09,09,09,11,09,11,09,09,11,11,00,00 DATA 00,09,09,09,09,09,09,09,09,09,09,11,11,09,11,11,00 DATA 00,09,09,09,09,09,09,09,09,09,09,09,09,09,09,11,00 DATA 09,09,09,09,09,09,09,09,09,09,09,09,09,11,09,11,11 DATA 09,09,09,09,09,09,09,09,09,09,09,09,09,09,09,09,11 DATA 09,09,09,09,09,09,09,09,09,09,09,09,09,09,09,09,11 DATA 09,09,09,09,09,01,09,09,09,09,09,09,09,09,09,11,09 DATA 01,01,09,01,09,09,09,09,01,09,09,09,09,09,09,09,09 DATA 00,01,01,09,09,01,09,09,09,09,01,09,09,09,09,09,00 DATA 00,01,01,09,01,09,09,01,09,09,09,09,09,09,09,09,00 DATA 00,00,01,01,09,01,09,01,09,01,09,09,09,09,09,00,00 DATA 00,00,00,01,01,01,09,09,09,09,01,09,09,09,00,00,00 DATA 00,00,00,00,01,01,01,01,01,01,09,09,09,00,00,00,00 DATA 00,00,00,00,00,00,01,01,01,01,01,00,00,00,00,00,00 'Planet3(Purple) DATA 00,00,00,00,00,00,13,13,15,15,15,00,00,00,00,00,00 DATA 00,00,00,00,13,13,13,13,13,15,15,15,15,00,00,00,00 DATA 00,00,00,13,13,13,13,15,13,13,13,15,15,15,00,00,00 DATA 00,00,13,13,13,13,13,13,15,13,15,13,13,15,15,00,00 DATA 00,13,13,13,13,13,13,13,13,13,13,15,15,13,15,15,00 DATA 00,13,13,13,13,13,13,13,13,13,13,13,13,13,13,15,00 DATA 13,13,13,13,13,13,13,13,13,13,13,13,13,15,13,15,15 DATA 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,15 DATA 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,15 DATA 13,13,13,13,13,05,13,13,13,13,13,13,13,13,13,15,13 DATA 05,05,13,05,13,13,13,13,05,13,13,13,13,13,13,13,13 DATA 00,05,05,13,13,05,13,13,13,13,05,13,13,13,13,13,00 DATA 00,05,05,13,05,13,13,05,13,13,13,13,13,13,13,13,00 DATA 00,00,05,05,13,05,13,05,13,05,13,13,13,13,13,00,00 DATA 00,00,00,05,05,05,13,13,13,13,05,13,13,13,00,00,00 DATA 00,00,00,00,05,05,05,05,05,05,13,13,13,00,00,00,00 DATA 00,00,00,00,00,00,05,05,05,05,05,00,00,00,00,00,00 'Comet DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,04,00,04,00,04,00,00,00,00,00,00,00,00,00 DATA 00,00,04,04,00,04,00,00,00,00,00,00,00,00,00 DATA 00,04,04,04,04,04,04,00,00,00,00,00,00,00,00 DATA 00,00,04,04,04,04,04,04,00,00,00,00,00,00,00 DATA 00,00,00,04,04,04,04,12,04,00,00,00,00,00,00 DATA 00,00,00,00,04,12,04,12,04,04,00,00,00,00,00 DATA 00,00,00,00,04,04,12,12,12,04,00,00,00,00,00 DATA 00,00,00,00,00,04,12,12,12,12,14,00,00,00,00 DATA 00,00,00,00,00,00,04,12,14,12,14,04,00,00,00 DATA 00,00,00,00,00,00,04,12,12,14,14,04,00,00,00 DATA 00,00,00,00,00,00,00,04,12,14,14,14,04,00,00 DATA 00,00,00,00,00,00,00,00,04,12,14,14,14,04,00 DATA 00,00,00,00,00,00,00,00,04,14,14,14,14,04,00 DATA 00,00,00,00,00,00,00,00,00,04,14,14,04,00,00 'Explosion DATA 00,00,00,00,00,00,04,00,00,00 DATA 00,00,00,00,00,04,04,00,00,00 DATA 00,04,04,00,04,04,04,00,00,00 DATA 04,04,04,04,12,12,04,00,04,04 DATA 00,04,12,12,14,12,04,04,04,04 DATA 00,04,12,14,14,14,12,12,04,00 DATA 04,04,12,14,14,14,12,12,00,00 DATA 00,04,04,12,14,12,12,00,00,00 DATA 00,00,04,12,12,12,04,00,00,00 DATA 00,04,04,04,04,04,04,04,00,00 DATA 00,04,04,04,04,00,04,04,04,00 DATA 04,00,00,04,00,00,00,04,00,00 DATA 00,00,00,00,00,00,00,00,00,00 'Fried guy DATA 00,00,00,04,00,00,04,00,00,00 DATA 00,00,04,04,00,04,04,04,00,00 DATA 00,00,04,04,04,04,04,04,00,00 DATA 00,04,04,12,12,04,04,04,00,00 DATA 00,04,04,12,12,04,04,00,00,00 DATA 00,04,04,12,12,04,04,00,00,00 DATA 00,04,12,12,12,04,04,04,00,00 DATA 00,04,12,14,14,12,04,04,00,00 DATA 04,04,12,14,14,14,12,04,00,00 DATA 04,04,12,14,14,14,12,04,00,00 'Asteroid DATA 00,00,00,00,15,15,15,15,00,00 DATA 00,00,00,15,15,15,15,07,15,00 DATA 00,00,15,15,07,07,07,15,07,07 DATA 00,15,15,07,15,07,15,07,07,07 DATA 07,07,07,07,07,07,07,07,07,07 DATA 07,07,07,07,07,07,07,07,07,07 DATA 07,07,07,07,07,07,07,07,07,07 DATA 07,07,07,07,07,07,07,07,07,07 DATA 07,07,07,07,07,07,07,07,07,07 DATA 00,07,07,07,07,07,07,07,07,00 DATA 00,00,07,07,07,07,07,07,07,00 DATA 00,00,00,00,07,07,07,07,07,00 DATA 00,00,00,00,00,00,07,07,00,00 'get the graphics for the game itself. Getgraphics: FOR i = 1 TO 13 FOR j = 1 TO 10 READ z PSET (j, i), z NEXT NEXT GET (0, 0)-(10, 13), ship1 FOR i = 1 TO 17 FOR j = 1 TO 17 READ z PSET (j, i), z NEXT NEXT GET (0, 0)-(17, 17), planet1 FOR i = 1 TO 17 FOR j = 1 TO 17 READ z PSET (j, i), z NEXT NEXT GET (0, 0)-(17, 17), planet2 FOR i = 1 TO 17 FOR j = 1 TO 17 READ z PSET (j, i), z NEXT NEXT GET (0, 0)-(17, 17), planet3 CLS FOR i = 1 TO 15 FOR j = 1 TO 15 READ z PSET (j, i), z NEXT NEXT GET (0, 0)-(15, 15), comet FOR i = 1 TO 13 FOR j = 1 TO 10 READ z PSET (j, i), z NEXT NEXT GET (0, 0)-(10, 13), Explo FOR i = 1 TO 10 FOR j = 1 TO 10 READ z PSET (j, i), z NEXT NEXT GET (0, 0)-(10, 10), Fry FOR i = 1 TO 13 FOR j = 1 TO 10 READ z PSET (j, i), z NEXT NEXT GET (0, 0)-(10, 13), aste RETURN SUB BlastOff (x, y) FOR i = 1 TO 300 NEXT PCOPY 2, 1 DO WHILE y > 15 y = y - amt amt = amt + .25 PUT (x, y), ship1, PSET PCOPY 1, 0 PCOPY 2, 1 LOOP END SUB SUB bonus IF boon = 1 THEN EXIT SUB RANDOMIZE TIMER DIM mtns(320) time = 6 CLS y = 185 FOR i = 0 TO 320 mtns(i) = y SELECT CASE INT(RND * 4) + 1 CASE 1 IF y < 198 THEN y = y + 1 CASE 2 IF y > 160 THEN y = y - 1 END SELECT PSET (i, y), 10 NEXT PAINT (0, 199), 2, 10 DIM landing1(20) DIM landing2(20) DIM landing3(20) landingst = INT(RND * 100) + 1 s = 1 FOR i = landingst TO landingst + 19 landing1(s) = i s = s + 1 PSET (i - 1, mtns(i)), 1 NEXT landingst = INT(RND * 100) + 101 s = 1 FOR i = landingst TO landingst + 19 landing2(s) = i s = s + 1 PSET (i - 1, mtns(i)), 3 NEXT landingst = INT(RND * 190) + 101 s = 1 FOR i = landingst TO landingst + 19 landing3(s) = i s = s + 1 PSET (i - 1, mtns(i)), 4 NEXT PCOPY 1, 2 LOCATE 12, 15 PRINT "Bonus Level" LOCATE 13, 1 PRINT "Blue=100 pts. Cyan=200 pts. Red=300 pts." PCOPY 1, 0 12 IF INKEY$ = "" THEN GOTO 12 PCOPY 2, 1 wind = INT(RND * 5) + 1 Bx = 160 by = 0 godrop: PCOPY 2, 1 LOCATE 1, 1 PRINT "Drops:"; time; " Wind:"; wind CIRCLE (Bx, by), 5, 12 PCOPY 1, 0 bs: s$ = "" DO WHILE s$ = "" s$ = INKEY$ LOOP SELECT CASE s$ CASE "6" Bx = Bx + 2 CASE "4" Bx = Bx - 2 CASE "5" drop: by = by + 2 Bx = Bx + (.2 * wind) CIRCLE (Bx, by), 5, 12 PAINT (Bx, by), 12 IF by >= mtns(INT(Bx)) THEN GOTO dropok PCOPY 1, 0 PCOPY 2, 1 GOTO drop dropok: FOR i = 1 TO 19 IF INT(Bx) = landing1(i) THEN good = 1 IF INT(Bx) = landing2(i) THEN good = 2 IF INT(Bx) = landing3(i) THEN good = 3 NEXT SELECT CASE good CASE 0 PRINT "Miss. Press A Key!" PCOPY 1, 0 DO WHILE INKEY$ = "": LOOP CASE 1 LOCATE 1, 1 bpts = bpts + 100 PRINT "100 points. Press a key" PCOPY 1, 0 DO WHILE INKEY$ = "": LOOP CASE 2 LOCATE 1, 1 bpts = bpts + 200 PRINT "200 points. Press a key" PCOPY 1, 0 DO WHILE INKEY$ = "": LOOP CASE 3 LOCATE 1, 1 bpts = bpts + 300 PRINT "300 points. Press a key" PCOPY 1, 0 DO WHILE INKEY$ = "": LOOP END SELECT time = time - 1 IF time = 0 THEN LOCATE 1, 1: PRINT "You got:"; bpts; "points.": PCOPY 1, 0: DO WHILE INKEY$ = "": LOOP: points = points + bpts: EXIT SUB Bx = 160 by = 0 good = 0 wind = INT(RND * 11) + 1 IF wind = 6 THEN wind = -1 IF wind = 7 THEN wind = -2 IF wind = 8 THEN wind = -3 IF wind = 9 THEN wind = -4 IF wind = 10 THEN wind = -5 IF wind = 11 THEN wind = 0 CASE ELSE GOTO bs END SELECT GOTO godrop END SUB SUB Delay FOR j = 1 TO dela NEXT END SUB SUB Expl PCOPY 2, 1 PUT (x, y), Explo, PSET PCOPY 1, 0 END SUB SUB Fried (guyx, guyy) PCOPY 2, 1 PUT (guyx, guyy), Fry, PSET PCOPY 1, 0 END SUB SUB HiScore SCREEN 9 DIM star(50, 3) FOR i = 1 TO 50 LET c = INT(RND * 3) + 1 IF c = 1 THEN c = 8 IF c = 2 THEN c = 7 IF c = 3 THEN c = 15 star(i, 1) = INT(RND * 640) star(i, 2) = INT(RND * 300) star(i, 3) = c NEXT FOR i = 1 TO 50 PSET (star(i, 1), star(i, 2)), star(i, 3) NEXT DIM mtns(640) time = 6 y = 300 FOR i = 0 TO 640 mtns(i) = y SELECT CASE INT(RND * 4) + 1 CASE 1 IF y < 348 THEN y = y + 1 CASE 2 IF y > 260 THEN y = y - 1 END SELECT PSET (i, y), 9 NEXT PAINT (0, 349), 1, 9 PUT (20, 10), l PUT (40, 10), a PUT (60, 10), n PUT (80, 10), d PUT (100, 10), e PUT (120, 10), r 'PUT (160, 20), l 'zPUT (180, 20), A 'PUT (200, 20), n 'PUT (220, 20), d 'PUT (240, 20), e 'PUT (260, 20), r LOCATE 4, 25 COLOR 9 PRINT "High Scores" CLOSE OPEN "landers.dat" FOR INPUT AS 1 DIM names$(5), levels(5), scores(5) FOR i = 1 TO 5 INPUT #1, names$(i), levels(i), scores(i) NEXT CLOSE LOCATE 6, 1 COLOR 14 PRINT "Name / Level / Score / Skill" DIM order(5) FOR i = 1 TO 5 COLOR i + 10 PRINT names$(i), "-"; levels(i), "-"; scores(i), "-"; i NEXT CLOSE COLOR 15 PRINT "Press A Key." DO WHILE INKEY$ = "": LOOP PCOPY 1, 0 SCREEN 0, 0, 0, 0 END SUB SUB LoseSong 'PLAY "o2 c4 c4 c8 c4 d+4 d8 d4 c8 c4 o1 b8 o2 c4" END SUB SUB LSound LoseSong PRINT PRINT "Try again sometime.." PRINT "" PRINT "This has been a production of Monkey Business." PRINT "If you'd like more information or more files," PRINT "write:" PRINT "" PRINT " David Zohrob" PRINT " 37676 Baywood" PRINT " Farmington Hills, MI, 48335-3606" PRINT PRINT "Internet: mallard@gcomm.com" PRINT PRINT "Or call Near Wild Heaven with your modem at:" PRINT PRINT " (810)477-5568 and write e-mail to Sysop." END SUB SUB Menu redom: but = 1 BLOAD "lander.bsv" display: COLOR 14 LOCATE 12, 30 PRINT "Play Lander" LOCATE 13, 30 PRINT "Instructions" LOCATE 14, 30 PRINT "About Lander" LOCATE 15, 30 PRINT "Quit" COLOR 14, 1 SELECT CASE but CASE 1 LOCATE 12, 30 PRINT "Play Lander" CASE 2 LOCATE 13, 30 PRINT "Instructions" CASE 3 LOCATE 14, 30 PRINT "About Lander" CASE 4 LOCATE 15, 30 PRINT "Quit" END SELECT COLOR 9, 0 m: m$ = "" DO WHILE m$ = "" m$ = INKEY$ LOOP SELECT CASE m$ CASE "8" but = but - 1: IF but = 0 THEN but = 4 CASE "2" but = but + 1: IF but = 5 THEN but = 1 CASE CHR$(13) SELECT CASE but CASE 1 EXIT SUB CASE 2 CLS COLOR 1 PRINT "Lander v1.00 by Mallard - Monkey Business" PRINT COLOR 9 PRINT " Number Pad " PRINT " +----+ +----+ +----+ To control your lander, use the number pad" PRINT " | | | Up | | | at the side of your keyboard. Land on the blue" PRINT " +----+ +----+ +----+ area going -slowly-. Next, your astronaut will" PRINT " +----+ +----+ +----+ jump out. Walk over to the green area, and press" PRINT " |Left| |Flag| |Rght| the 5 key to plant the flag in the area. Then" PRINT " +----+ +----+ +----+ walk back to your ship. You will blast off to" PRINT " +----+ +----+ +----+ the next level." PRINT " | | |Down| | | Run the MANUAL program for more information" PRINT " +----+ +----+ +----+ on scoring." DO WHILE INKEY$ = "": LOOP GOTO redom CASE 3 PrintThing DO WHILE INKEY$ = "": LOOP GOTO redom CASE 4 CLS PrintThing END END SELECT CASE ELSE GOTO m END SELECT GOTO display END SUB SUB PrintThing CLS COLOR 9 PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" COLOR 14 PRINT "Lander Lander Lander Lander Lander Lander" COLOR 9 PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" PRINT PRINT "Lander was created by David Zohrob. 1995" COLOR 11 PRINT PRINT "This program is Shareware. You do not have to pay to have the full version of" PRINT "this program, although donations are accepted, and you will get neat programs" PRINT "from the author, and other programmers. If you don't register, at least send" PRINT "me a postcard from your town so I can tell where Lander has gone from here." PRINT "" PRINT "Anyway, greets go to:" PRINT "" PRINT "Trevor Merkl - who annoyed me during the programming of this game" PRINT "He also gave me ideas, but mostly the annoying part. 8-)" PRINT "Bill McCarville, Rob Turnquist, and all the others who playtested this game" PRINT "for me. Thanks!" PRINT PRINT "Send anything to:" PRINT " David Zohrob Internet: mallard@gcomm.com" PRINT " 37676 Baywood call my BBS: Near Wild Heaven" PRINT " Farmington Hills, MI, 48335-3606 (810)477-5568 / (810)477-4749" PRINT END SUB SUB Roids PRINT "The Roids Bonus Stage" PRINT PRINT "Dodge all of the asteroids for" PRINT "as long as you can. You will receive" PRINT "a point for every second you can" PRINT "dodge them." PRINT PRINT "Press a key to start." PCOPY 1, 0 DO WHILE INKEY$ = "": LOOP CLS lives = 1 starttime = TIMER star = 1 set = 2 asts = 15 sx = 160 sy = 100 momentum = 0 hmomentum = 0 vdir = 1 hdir = 1 DIM ast(20, 4) DIM starx(20) DIM stary(20) DIM start(20) resets: IF star = 1 THEN FOR i = 1 TO 20 starx(i) = INT(RND * 320) + 1 stary(i) = INT(RND * 60) + 1 start(i) = INT(RND * 3) + 1 NEXT i END IF IF lives = 0 THEN LET endtime = TIMER PRINT "Your score was:"; INT(endtime - starttime) PRINT points = points + INT(endtime - starttime) PRINT "Your point total is now"; points; "." PRINT PRINT "Press a key to go back to the game." boon2 = 1 PCOPY 1, 0 DO WHILE INKEY$ = "": LOOP CLS EXIT SUB END IF FOR i = 1 TO asts ast(i, 1) = INT(RND * 300) + 1 ast(i, 2) = INT(RND * 150) + 1 ast(i, 3) = INT(RND * 2) + 1 NEXT CLS putship2: s: s$ = "" DO WHILE s$ = "" s$ = INKEY$ IF momentum <> 0 THEN SELECT CASE vdir CASE 1 sy = sy - momentum CASE 2 sy = sy + momentum END SELECT END IF IF hmomentum <> 0 THEN SELECT CASE hdir CASE 1 sx = sx + hmomentum CASE 2 sx = sx - hmomentum END SELECT END IF CLS IF sy < 15 THEN sy = 185 IF sy > 185 THEN sy = 15 IF sx < 10 THEN sx = 300 IF sx > 300 THEN sx = 10 PUT (sx, sy), ship1 IF star = 1 THEN FOR i = 1 TO 10 IF start(i) = 1 THEN c = 15 IF start(i) = 2 THEN c = 7 IF start(i) = 3 THEN c = 8 PSET (starx(i), stary(i)), c stary(i) = stary(i) + INT(RND * (10 - start(i))) IF stary(i) >= 200 THEN LET stary(i) = 1: LET starx(i) = INT(RND * 320) + 1 NEXT i END IF FOR i = 1 TO asts IF ast(i, 4) = 0 THEN PUT (ast(i, 1), ast(i, 2)), aste ast(i, 2) = ast(i, 2) + INT(RND * 3) + 1 IF ast(i, 3) = 1 THEN ast(i, 1) = ast(i, 1) + (INT(RND * 10) + 1 \ 5): IF ast(i, 1) >= 300 THEN LET ast(i, 1) = 0 IF ast(i, 3) = 2 THEN ast(i, 1) = ast(i, 1) - (INT(RND * 10) + 1 \ 5): IF ast(i, 1) <= 10 THEN ast(i, 1) = 300 IF ast(i, 2) >= 185 THEN LET ast(i, 1) = INT(RND * 300) + 1: LET ast(i, 2) = 0 LET xpoint = ast(i, 1) - sx: LET xpoint = ABS(xpoint) LET ypoint = ast(i, 2) - sy: LET ypoint = ABS(ypoint) IF xpoint < 10 AND xpoint > 2 THEN IF ypoint < 13 THEN : lives = lives - 1: LOCATE 1, 1: PRINT "OUCH! - Lives left:"; lives: PCOPY 1, 0: DO WHILE INKEY$ = "": LOOP: GOTO resets NEXT PCOPY 1, 0 LOOP SELECT CASE s$ CASE "8" SELECT CASE vdir CASE 1 momentum = momentum + 1: IF momentum > 10 THEN momentum = 10 CASE 2 momentum = momentum - 1: IF momentum = 0 THEN vdir = 1 END SELECT CASE "2" SELECT CASE vdir CASE 1 momentum = momentum - 1: IF momentum = 0 THEN vdir = 2 CASE 2 momentum = momentum + 1: IF momentum > 10 THEN momentum = 10 END SELECT CASE "6" SELECT CASE hdir CASE 1 hmomentum = hmomentum + 1: IF hmomentum > 10 THEN momentum = 10 CASE 2 hmomentum = hmomentum - 1: IF hmomentum = 0 THEN hdir = 1 END SELECT CASE "4" SELECT CASE hdir CASE 1 hmomentum = hmomentum - 1: IF hmomentum = 0 THEN hdir = 2 CASE 2 hmomentum = hmomentum + 1: IF hmomentum > 10 THEN momentum = 10 END SELECT END SELECT SELECT CASE vdir CASE 1 sy = sy - momentum CASE 2 sy = sy + momentum END SELECT SELECT CASE hdir CASE 1 sx = sx + hmomentum CASE 2 sx = sx - hmomentum END SELECT GOTO putship2 END SUB SUB Title RANDOMIZE TIMER SCREEN 7, 0, 1, 0 FOR i = 1 TO 20 FOR j = 1 TO 14 READ x PSET (j, i), x NEXT j NEXT i GET (0, 0)-(14, 20), l FOR i = 1 TO 20 FOR j = 1 TO 14 READ x PSET (j, i), x NEXT j NEXT i GET (0, 0)-(14, 20), e FOR i = 1 TO 20 FOR j = 1 TO 14 READ x PSET (j, i), x NEXT j NEXT i GET (0, 0)-(14, 20), a FOR i = 1 TO 20 FOR j = 1 TO 14 READ x PSET (j, i), x NEXT j NEXT i GET (0, 0)-(14, 20), d FOR i = 1 TO 20 FOR j = 1 TO 14 READ x PSET (j, i), x NEXT j NEXT i GET (0, 0)-(14, 20), r FOR i = 1 TO 20 FOR j = 1 TO 14 READ x PSET (j, i), x NEXT j NEXT i GET (0, 0)-(14, 20), n CLS 'ThemeSong FOR i = 1 TO 75 x = x + 1 y = y + 1 PUT (x, y), l PUT (x + 15, y + 2), a PUT (x + 30, y + 4), n PUT (x + 45, y + 6), d PUT (x + 60, y + 8), e PUT (x + 75, y + 10), r LOCATE 2, 20 PRINT "By" LOCATE 5, 22 PRINT "David" LOCATE 8, 25 PRINT "Zohrob" PCOPY 1, 0 CLS IF INKEY$ <> "" THEN EXIT SUB NEXT PUT (x, y), l PUT (x + 15, y + 2), a PUT (x + 30, y + 4), n PUT (x + 45, y + 6), d PUT (x + 60, y + 8), e PUT (x + 75, y + 10), r LOCATE 2, 20 PRINT "By" LOCATE 5, 22 PRINT "David" LOCATE 8, 25 PRINT "Zohrob" PCOPY 1, 0 CLS PUT (x, y + 2), l PUT (x + 15, y + 4), a PUT (x + 30, y + 6), n PUT (x + 45, y + 8), d PUT (x + 60, y + 10), e PUT (x + 75, y + 10), r LOCATE 2, 20 PRINT "By" LOCATE 5, 22 PRINT "David" LOCATE 8, 25 PRINT "Zohrob" PCOPY 1, 0 CLS PUT (x, y + 4), l PUT (x + 15, y + 6), a PUT (x + 30, y + 8), n PUT (x + 45, y + 10), d PUT (x + 60, y + 10), e PUT (x + 75, y + 10), r LOCATE 2, 20 PRINT "By" LOCATE 5, 22 PRINT "David" LOCATE 8, 25 PRINT "Zohrob" PCOPY 1, 0 CLS PUT (x, y + 6), l PUT (x + 15, y + 8), a PUT (x + 30, y + 10), n PUT (x + 45, y + 10), d PUT (x + 60, y + 10), e PUT (x + 75, y + 10), r LOCATE 2, 20 PRINT "By" LOCATE 5, 22 PRINT "David" LOCATE 8, 25 PRINT "Zohrob" PCOPY 1, 0 CLS PUT (x, y + 8), l PUT (x + 15, y + 10), a PUT (x + 30, y + 10), n PUT (x + 45, y + 10), d PUT (x + 60, y + 10), e PUT (x + 75, y + 10), r LOCATE 2, 20 PRINT "By" LOCATE 5, 22 PRINT "David" LOCATE 8, 25 PRINT "Zohrob" PCOPY 1, 0 CLS PUT (x, y + 10), l PUT (x + 15, y + 10), a PUT (x + 30, y + 10), n PUT (x + 45, y + 10), d PUT (x + 60, y + 10), e PUT (x + 75, y + 10), r LOCATE 2, 20 PRINT "By" LOCATE 5, 22 PRINT "David" LOCATE 8, 25 PRINT "Zohrob" LOCATE 23, 1 PRINT "Press Any Key" PCOPY 1, 0 CLS DO WHILE INKEY$ = "": LOOP END SUB SUB WSound PRINT PRINT "Good job!" PRINT "Try again sometime.." PRINT "" PRINT "This has been a production of Monkey Business." PRINT "If you'd like more information or more files," PRINT "write:" PRINT "" PRINT " David Zohrob" PRINT " 37676 Baywood" PRINT " Farmington Hills, MI, 48335-3606" PRINT PRINT "Internet: mallard@gcomm.com" PRINT PRINT "Or call Near Wild Heaven with your modem at:" PRINT PRINT " (810)477-5568 and write e-mail to Sysop." END SUB