home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / USCX / GAMES-14.ZIP / MOON.BAS < prev    next >
BASIC Source File  |  1983-04-16  |  4KB  |  64 lines

  1. 10 KEY OFF:SCREEN 0:WIDTH 40:CLS:FOR X=1 TO 10:KEY X,"":NEXT X:PLAY"mb"
  2. 20 LOCATE 1,6,0:PRINT"██     ██ █████ █████ ██   █":PRINT TAB(6)"█ █   █ █ █   █ █   █ █ █  █":PRINT TAB(6)"█  █ █  █ █   █ █   █ █  █ █":PRINT TAB(6)"█   █   █ █   █ █   █ █   ██":PRINT TAB(6)"█       █ █████ █████ █    █"
  3. 30 LOCATE 8,1:PRINT"██     ██ █ █████ █████ █ █████ ██   █":PRINT"█ █   █ █ █ █     █     █ █   █ █ █  █":PRINT"█  █ █  █ █ █████ █████ █ █   █ █  █ █":PRINT"█   █   █ █     █     █ █ █   █ █   ██":PRINT"█       █ █ █████ █████ █ █████ █    █"
  4. 50 LOCATE 21,8:PRINT"BY ALLAN AND ANDREW LEE"
  5. 60 LOCATE 24,6:PRINT"Press <ESC> for instructions.";:LOCATE 25,9:PRINT"Press <ENTER> to begin.";
  6. 70 A$=INKEY$:IF A$="" THEN 70 ELSE IF ASC(A$)=13 THEN 130 ELSE IF ASC(A$)=27 THEN 80 ELSE GOTO 70
  7. 80 CLS:LOCATE 25,9:PRINT"Press <ENTER> to begin.";
  8. 90 LOCATE 6,6:PRINT"You are the commander of the":PRINT TAB(5)"USS COLUMBIA and must land it":PRINT TAB(5)"safely on the moon.":PRINT TAB(6)"You may control your ship"
  9. 100 PRINT TAB(5)"by using the cursor pad to:":LOCATE 12,12:PRINT CHR$(27);" to move left":PRINT TAB(12)CHR$(26);" to move right":PRINT TAB(12)CHR$(24);" to move up":PRINT TAB(12)CHR$(25);" to move down."
  10. 105 LOCATE 17,3:PRINT"A beep indicates that fuel is low"
  11. 110 PRINT TAB(14)"or is gone."
  12. 120 A$=INKEY$:IF A$="" THEN 120 ELSE IF ASC(A$)=27 THEN 80 ELSE GOTO 70
  13. 130 SCREEN 1:DIM CUR%(20),BAC%(20),Q(20),W(20),PR(20),PS(20):Q$="AAA":PSCORE=1000
  14. 140 VX=0:VY=0:TIME=0:CX=0:CY=0:AS=0:AW=0:CLS:DEF SEG=0:POKE 1050,PEEK(1052):GOSUB 440
  15. 150 FUEL=50:GRAVITY=.2:TINC=.3
  16. 160 WHILE AS<3 AND AW<3
  17. 170 TIME=TIME+TINC
  18. 180 PX=CX:PY=CY:CX=CX+VX:CY=CY+VY
  19. 190 VX=VX+AX:VY=VY+AY+GRAVITY*TINC
  20. 200 LOCATE 25,1:PRINT USING "+##.##";VY;
  21. 210 AX=0:AY=0:VX=VX-VX*.05*TINC
  22. 220 IF CX<4 THEN CX=4:VX=-VX ELSE IF CX>315 THEN CX=315:VX=-VX
  23. 230 IF CY<4 THEN CY=4:VY=-VY/2 ELSE IF CY>182 THEN CY=182
  24. 240 PUT(PX-4,PY-4),CUR%:PUT(CX-4,CY-4),CUR%,XOR
  25. 250 GOSUB 340
  26. 260 AS=POINT(CX-4,CY+5):AW=POINT(CX+4,CY+5)
  27. 270 WEND
  28. 280 IF VY<=1 AND CX<=165 AND CX>=155 THEN LOCATE 7,13:SCORE=INT(500000!/TIME):PRINT"SCORE";SCORE:GOTO 580
  29. 290 LOCATE 9,17:IF CX>165 OR CX<155 THEN PRINT"MISSED!!":IF VY<1 THEN FOR X=1 TO 1000:NEXT X:GOTO 140
  30. 300 LOCATE 10,17
  31. 310 IF VY>2 THEN PRINT"KAA";
  32. 320 IF VY>1 THEN PRINT"BOOM!!!":FOR AS=1 TO 2:SOUND 80^1.5*AS,1:NEXT AS:GOTO 550
  33. 340 A$=INKEY$:IF A$=""THEN RETURN
  34. 350 IF LEN(A$)<>2 THEN RETURN ELSE A=ASC(RIGHT$(A$,1))
  35. 360 FUEL=FUEL-1*TINC
  36. 370 IF FUEL<=0 THEN SOUND 150,3:RETURN
  37. 380 IF FUEL<5 THEN SOUND 1100,1:SOUND 1400,2
  38. 390 IF A=72 THEN AY=AY-1*TINC:GOTO 340
  39. 400 IF A=80 THEN AY=AY+1*TINC:GOTO 340
  40. 410 IF A=75 THEN AX=AX-1*TINC:GOTO 340
  41. 420 IF A=77 THEN AX=AX+1*TINC
  42. 430 GOTO 340
  43. 440 GET(0,0)-(8,8),BAC%
  44. 450 FOR X=1 TO 25:WX=INT(RND(1)*319+1):WY=INT(RND(1)*150+1):PSET(WX,WY),1:NEXT X
  45. 460 LINE(3,7)-(0,8):LINE(5,7)-(8,8):CIRCLE(4,4),4:LINE(3,3)-(5,5),,B
  46. 470 GET(0,0)-(8,8),CUR%:CX=4:CY=4
  47. 480 DRAW"bm0,165m+10,+15r10m+10,-7r2f10e2m+10,+5r18m+5,+2e6m+5,-2m+5,-2f6m+5,-2r15m+4,+3r3e1r5r1e3m+4,-3r35e3r6r15m+6,+2r6f3r20m+14,+3f3r14e3m+14,-10r10e10m+10,-5m319,165
  48. 490 LINE(0,190)-(319,190):PAINT(188,188),3
  49. 500 DRAW"c0bm43,183f5bm102,180g15bm292,173m+10,+10r15
  50. 510 LOCATE 25,16:PRINT Q$;" ";PSCORE;
  51. 520 LINE(155,170)-(155,178),1
  52. 530 LINE(165,170)-(165,178),1
  53. 540 RETURN
  54. 550 PUT(CX-4,CY-4),BAC%:RANDOMIZE TIME*VX*VY:FOR Y=1 TO 20:A=RND(1)*3.14:D=RND(1)*4:Q(Y)=SIN(A)*D:W(Y)=COS(A)*D:NEXT Y
  55. 560 FOR X=1 TO 10:FOR Y=1 TO 20:PR(Y)=PR(Y)+W(Y):PS(Y)=PS(Y)+Q(Y):R=Y MOD 2+1:LINE(CX,CY+4)-(CX+PR(Y),CY-PS(Y)),R:NEXT Y,X:ERASE PR,PS:DIM PR(20),PS(20)
  56. 570 FOR X=1 TO 100:NEXT X:GOTO 620
  57. 580 N=0:FOR X=1 TO 1000:NEXT X:POKE 1050,PEEK(1052):IF SCORE>PSCORE THEN LOCATE 1,3:PLAY"mbc16p16c16p16d-16p16d-16e6c8":PRINT"YOU HAVE GAINED THE HIGH SCORE.":LOCATE 2,8:PRINT"INPUT YOUR INITIALS.":LOCATE 4,17:PRINT"_" ELSE 620
  58. 590 QR$=INKEY$:IF QR$="" THEN 590 ELSE IF QR$>="a"AND QR$<="z" THEN QR$=CHR$(ASC(QR$)-32) ELSE IF ASC(QR$)<65 AND ASC(QR$)<>32 OR ASC(QR$)>90 THEN 590
  59. 600 N=N+1:LOCATE 4,16+N:PRINT QR$:MID$(Q$,N,1)=QR$:IF N=3 THEN 610 ELSE LOCATE 4,17+N:PRINT"_":GOTO 590
  60. 610 FOR X=1 TO 1000:NEXT X:PSCORE=SCORE
  61. 620 LOCATE 25,1:PRINT SPC(39);:LOCATE 25,14:PRINT"PLAY AGAIN?";
  62. 630 A$=INKEY$:IF A$="Y"OR A$="y"THEN 140 ELSE IF A$="N"OR A$="n"THEN CLS:SCREEN 0:WIDTH 80:END ELSE 630
  63. :PRINT"PLAY AGAIN?";
  64. 630 A$=INKE