PROGRAM LANDER C************************************************************* C** C** STEVE ILLENCIK * AFTER MAY 1,1977 C** C/O REPUBLIC BUILDINGS CORP * REPUBLIC BUILDINGS CORP C** 4010 DUPONT CIRCLE * 1202 INDUSTRIAL PARK C** SUITE 444 * VAN WERT, OHIO 45891 C** LOUISVILLE,KENTUCKY 40207 * C** * C** 502-897-7141 * 419-238-9533 C** C** LUNER LANDER PROGRAM VERSION 1.0 C*********************************************************** COMMON /ALANDS/VELCTY,GRAVTY,RETROR,TMPACT,ALTUDE,FUELR COMMON /DRAWER/ITIME,IHIGH,ISCALE C********************************************************** OPEN(UNIT=5,NAME='TO:',CARRIAGECONTROL='NONE') 10 ITIME = 1 ISCALE = 1 IHIGH = 45 CALL SCREEN C** GENERATE A RANDOM NUMBER FOR RANDOM SEQUENCE TSTRT = SECNDS(0.0) IRAND = AMOD(TSTRT,1.0)*100.0 IRAND = IRAND*2 -1 GRAVTY = RANDOM(IRAND)*0.009 + 0.003 RETROR = GRAVTY * 4.00 TMPACT = RANDOM(IRAND)*20. + 20. ALTUDE = RANDOM(IRAND)*15.0 + 20.0 VELCTY = (ALTUDE - 0.5*GRAVTY*TMPACT**2) / TMPACT FUELR = ALTUDE * 4.10 / VELCTY GO TO 50 C** SCALING REQUEST 40 IF(ALTUDE .GT. 8.5)GO TO 42 IF(ISCALE .EQ. 2)GO TO 100 ISCALE = 2 IHIGH = 9 GO TO 45 42 IF(ISCALE .EQ. 1)GO TO 100 ISCALE = 1 IHIGH = 45 45 ITIME = 1 CALL SCREEN 50 CALL CURSOR(11,3,22,30,'INPUT SECONDS TO FIRE ROCKETS ') CALL CURSOR(11,33,22,19,'AND FREE FALL TIME ') CALL CURSOR(11,65,4,0,' ') TYPE 1001,GRAVTY 1001 FORMAT(F8.3) 100 CALL REPORT IF(ALTUDE .GT. 45.0)GO TO 900 IF(ALTUDE .LT. 0.1)GO TO 170 IF(FUELR .LE. 0.0)GO TO 220 CALL CURSOR(11,52,22,10,' ') CALL CURSOR(11,52,22,0,' ') ACCEPT *,RTIME,FTIME IF(RTIME .LT. 0.0)GO TO 40 IF(RTIME .EQ. 999.)GO TO 999 FUELR = FUELR - RTIME C** FIND TOTAL GRAVITY TIME C** ADD FREE FALL TIME AND ROCKET TIME GTIME = RTIME + FTIME DISTNC = VELCTY*GTIME + 0.5*GRAVTY*GTIME**2 - 0.5*RETROR*FTIME**2 ALTUDE = ALTUDE - DISTNC VELCTY = VELCTY + GRAVTY*GTIME - RETROR*RTIME CALL TIMER GO TO 100 C** END OF GAME 170 IX = 7 + (ITIME - 2)*2 CALL CURSOR(11,IX,20,1,'\') CALL CURSOR(11,IX+1,20,1,' ') CALL CURSOR(11,IX+2,20,1,'/') CALL CURSOR(11,3,22,0,' ') CALL CURSOR(12,3,22,0,' ') IF(ALTUDE .LT. -0.1)GO TO 200 IF(ABS(VELCTY) .GT. 0.10)GO TO 200 IF(VELCTY .LT. 0.05 .AND. VELCTY .GT. -0.05)GO TO 210 TYPE *,'HARD BUT SAFE LANDING - GOOD JOB' GO TO 990 200 TYPE *,'THE LANDER CRASHED - THERE ARE NO SURVIVORS' GO TO 990 210 TYPE *,'SAFE LANDING - ALL SYSTEMS REPORTED FUNCTIONING' GO TO 990 220 CALL CURSOR(11,3,22,31,'FUEL OUT, LANDER WILL CRASH IN') TYPE 1001,FUELR CALL CURSOR(11,43,22,7,'SECONDS') GO TO 990 900 TYPE *,'YOU BLASTED OFF THE PLANET - NO HOPE' 990 TSTRT = SECNDS(0.0) 995 TIME = SECNDS(TSTRT) IF(TIME .GT. 5.)GO TO 10 GO TO 995 999 CLOSE(UNIT=5) STOP END