mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-05 20:40:25 -08:00
This reverts commit 52e1bf4998.
The original commit modified the game away from what was in BASIC Computer
Games, replacing it with the value from the original FOCAL version. The
difference was intentional, as the introductory text makes clear, which is also
in the README.md here:
"To make the landing more of a challenge, but more closely approximate the real
Apollo LEM capsule, you should make the available fuel at the start (N) equal to
16,000 lbs, and the weight of the capsule (M) equal to 32,500 lbs."
Here we bring the value back into line with the BASIC Computer Games book & the
README.md text. If we wanted to keep the FOCAL value, we should update the text
in the README.md to explain why.
See issue #867
49 lines
2.0 KiB
QBasic
49 lines
2.0 KiB
QBasic
10 PRINT TAB(33);"LUNAR"
|
|
20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
|
|
25 PRINT:PRINT:PRINT
|
|
30 PRINT "THIS IS A COMPUTER SIMULATION OF AN APOLLO LUNAR"
|
|
40 PRINT "LANDING CAPSULE.": PRINT: PRINT
|
|
50 PRINT "THE ON-BOARD COMPUTER HAS FAILED (IT WAS MADE BY"
|
|
60 PRINT "XEROX) SO YOU HAVE TO LAND THE CAPSULE MANUALLY."
|
|
70 PRINT: PRINT "SET BURN RATE OF RETRO ROCKETS TO ANY VALUE BETWEEN"
|
|
80 PRINT "0 (FREE FALL) AND 200 (MAXIMUM BURN) POUNDS PER SECOND."
|
|
90 PRINT "SET NEW BURN RATE EVERY 10 SECONDS.": PRINT
|
|
100 PRINT "CAPSULE WEIGHT 32,500 LBS; FUEL WEIGHT 16,000 LBS."
|
|
110 PRINT: PRINT: PRINT: PRINT "GOOD LUCK"
|
|
120 L=0
|
|
130 PRINT: PRINT "SEC","MI + FT","MPH","LB FUEL","BURN RATE":PRINT
|
|
140 A=120:V=1:M=33000:N=16500:G=1E-03:Z=1.8
|
|
150 PRINT L,INT(A);INT(5280*(A-INT(A))),3600*V,M-N,:INPUT K:T=10
|
|
160 IF M-N<1E-03 THEN 240
|
|
170 IF T<1E-03 THEN 150
|
|
180 S=T: IF M>=N+S*K THEN 200
|
|
190 S=(M-N)/K
|
|
200 GOSUB 420: IF I<=0 THEN 340
|
|
210 IF V<=0 THEN 230
|
|
220 IF J<0 THEN 370
|
|
230 GOSUB 330: GOTO 160
|
|
240 PRINT "FUEL OUT AT";L;"SECONDS":S=(-V+SQR(V*V+2*A*G))/G
|
|
250 V=V+G*S: L=L+S
|
|
260 W=3600*V: PRINT "ON MOON AT";L;"SECONDS - IMPACT VELOCITY";W;"MPH"
|
|
274 IF W<=1.2 THEN PRINT "PERFECT LANDING!": GOTO 440
|
|
280 IF W<=10 THEN PRINT "GOOD LANDING (COULD BE BETTER)":GOTO 440
|
|
282 IF W>60 THEN 300
|
|
284 PRINT "CRAFT DAMAGE... YOU'RE STRANDED HERE UNTIL A RESCUE"
|
|
286 PRINT "PARTY ARRIVES. HOPE YOU HAVE ENOUGH OXYGEN!"
|
|
288 GOTO 440
|
|
300 PRINT "SORRY THERE WERE NO SURVIVORS. YOU BLEW IT!"
|
|
310 PRINT "IN FACT, YOU BLASTED A NEW LUNAR CRATER";W*.227;"FEET DEEP!"
|
|
320 GOTO 440
|
|
330 L=L+S: T=T-S: M=M-S*K: A=I: V=J: RETURN
|
|
340 IF S<5E-03 THEN 260
|
|
350 D=V+SQR(V*V+2*A*(G-Z*K/M)):S=2*A/D
|
|
360 GOSUB 420: GOSUB 330: GOTO 340
|
|
370 W=(1-M*G/(Z*K))/2: S=M*V/(Z*K*(W+SQR(W*W+V/Z)))+.05:GOSUB 420
|
|
380 IF I<=0 THEN 340
|
|
390 GOSUB 330: IF J>0 THEN 160
|
|
400 IF V>0 THEN 370
|
|
410 GOTO 160
|
|
420 Q=S*K/M: J=V+G*S+Z*(-Q-Q*Q/2-Q^3/3-Q^4/4-Q^5/5)
|
|
430 I=A-G*S*S/2-V*S+Z*S*(Q/2+Q^2/6+Q^3/12+Q^4/20+Q^5/30):RETURN
|
|
440 PRINT:PRINT:PRINT:PRINT "TRY AGAIN??": GOTO 70
|