!*! 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