!*! Updated on 10-Dec-90 at 12:42 PM by Paul Ciosek; edit time: 0:01:09 SCALE = 4 SIGNIFICANCE 11 PRINT TAB(-1,0);"*** LUNAR LANDING SIMULATION - VER 1.0 ***" PRINT INPUT "DO YOU WANT INSTRUCTIONS (Y/N) ";A$ IF A$="N" GOTO L1500 PRINT PRINT "YOU ARE LANDING ON THE MOON AND HAVE TAKEN OVER MANUAL" PRINT "CONTROL 500 FEET ABOVE A GOOD LANDING SPOT." PRINT PRINT "HERE ARE THE RULES THAT GOVERN YOUR SPACE VEHICLE:" PRINT "(1) AFTER EACH SECOND, THE HEIGHT, VELOCITY, AND REMAINING" PRINT " FUEL WILL BE REPORTED." PRINT "(2) AFTER THE REPORT, A '?' WILL BE DISPLAYED. ENTER THE" PRINT " NUMBER OF UNITS OF FUEL YOU WISH TO BURN DURING THE" PRINT " NEXT SECOND. EACH UNIT OF FUEL WILL SLOW YOUR DESCENT" PRINT " BY 1 FT/SEC. THE MOON'S GARVITY IS 5 FT/SEC." PRINT "(3) THE MAXIMUM THRUST OF YOU ENGINE IS 30 FT/SEC OR" PRINT " 30 UNITS 0F FUEL PER SECOND." PRINT "(4) WHEN YOU CONTACT THE LUNAR SURFACE, YOUR DESCENT ENGINE" PRINT " WILL AUTOMATICALLY CUT OFF AND YOU WILL BE GIVEN A" PRINT " REPORT OF YOUR LANDING SPEED AND REMAINING FUEL." PRINT "(5) IF YOU RUN OUT OF FUEL, THE '?' WILL NO LONGER APPEAR," PRINT " BUT YOUR SECOND BY SECOND REPORT WILL CONTINUE UNTIL" PRINT " YOU CONTACT THE LUNAR SURFACE." : L1500: PRINT INPUT "TYPE 'RETURN' WHEN YOU ARE READY TO BEGIN";A$ PRINT TAB(-1,0); OFS=0 FC=0 HSC=10 FOR I=1 TO 24 PRINT "I" NEXT I REM REM INITIALIZE REM T=0 : H=500 : V=50 : F=150 L380: GOSUB L504 INPUT "NEXT BURN: ";B IF B<0 GOTO L499 IF B>30 THEN B=30 IF B>F THEN B=F L430: V1=V-B+5 F=F-B H=H-.5*(V+V1) IF H<=0 GOTO L550 T=T+1 V=V1 IF F>0 GOTO L380 IF B=0 THEN GOSUB L504 L499: B=0 GOTO L430 REM REM ANNOTATE SCREEN REM L504: IF FC<24 THEN FC=FC+1 PRINT TAB(-1,1); IF FC=1 GOTO L511 FOR I=1 TO FC-1 PRINT CHR$(10); NEXT I L511: J=INT(ABS(H/HSC)) IF J<=0 THEN J=1 IF J>79 THEN J=79 IF H>195 THEN GOTO MOVE IF HSC=2.5 THEN GOTO MOVE IF F=0 THEN GOTO MOVE HSC=2.5 PRINT "--------------- DISPLAY SCALE ENLARGED ----------------"; MOVE: FLAG = 0 IF H>195 GOTO L525 IF HSC=2.5 GOTO L525 IF F=0 GOTO L525 HSC=2.5 PRINT "--------------- DISPLAY SCALE ENLARGED ----------------"; FLAG = -1 RETURN L525: IF F<>0 OR OFS<>0 GOTO L529 IF J>20 THEN PRINT "*** OUT OF FUEL"; IF J<20 THEN PRINT TAB(40);"*** OUT OF FUEL"; OFS=1 L529: PRINT : PRINT "I";TAB(J);"*"; PRINT TAB(-1,1);"#########################################################" PRINT TAB(-1,1);"SEC=";T;" FEET=";H;" SPEED=";V;" FUEL=";F; RETURN L550: PRINT TAB(23,1); IF V<=5 THEN PRINT "--------------------- TOUCHDOWN! -------------------- "; IF V>5 THEN PRINT "########################## SPLAT! ######################### "; END