|
| 1 | +10 REM CODY LANDER 1.0 BY FJ MILENS III |
| 2 | +20 REM RELEASED UNDER GPL V3, DEC 2024 |
| 3 | +30 A=14000 |
| 4 | +40 F=1200 |
| 5 | +50 V=0 |
| 6 | +60 G=-5 |
| 7 | +70 Y=3 |
| 8 | +80 B=0 |
| 9 | +90 E=0 |
| 10 | +100 REM MAIN PROGRAM |
| 11 | +110 POKE 53250,AND(PEEK(53250),240) |
| 12 | +120 GOSUB 7000 |
| 13 | +130 PRINT CHR$(253,224,222) |
| 14 | +140 GOSUB 3000 |
| 15 | +150 GOSUB 2000 |
| 16 | +160 GOSUB 4000 |
| 17 | +170 GOSUB 1000 |
| 18 | +180 F=F-B |
| 19 | +190 V=V+G+B |
| 20 | +200 A=A+V |
| 21 | +210 E=E+1 |
| 22 | +220 T=TI |
| 23 | +230 IF TI-T<60 THEN GOTO 230 |
| 24 | +240 GOSUB 9000 |
| 25 | +250 GOSUB 8300 |
| 26 | +260 GOSUB 8000 |
| 27 | +270 IF A>20 THEN GOTO 180 |
| 28 | +280 A=0 |
| 29 | +290 B=0 |
| 30 | +300 L=30 |
| 31 | +310 IF V<=-30 THEN L=0 |
| 32 | +320 GOSUB 9000 |
| 33 | +330 GOSUB 8300 |
| 34 | +340 GOSUB 6000 |
| 35 | +350 IF V>-30 THEN GOSUB 6100 |
| 36 | +360 IF V<=-30 THEN GOSUB 6200 |
| 37 | +370 PRINT AT(0,24),CHR$(241),"PLAY AGAIN (Y/N)"; |
| 38 | +380 INPUT Z$ |
| 39 | +390 IF Z$="Y" THEN GOTO 10 |
| 40 | +400 IF Z$="N" THEN END |
| 41 | +410 GOTO 370 |
| 42 | +1000 REM DRAW LUNAR LANDER |
| 43 | +1010 PRINT AT(18,Y),CHR$(252,20,20,170,193); |
| 44 | +1020 PRINT AT(18,Y+1),CHR$(255,20,223,172,20,162,223); |
| 45 | +1030 PRINT AT(18,Y+2),CHR$(255,20,223,20,193,20,223); |
| 46 | +1040 PRINT AT(18,Y+3),CHR$(247,223,172,85,83,65,162,223); |
| 47 | +1050 PRINT AT(18,Y+4),CHR$(247,145,252,223,172,165,162,223,247,144); |
| 48 | +1060 RETURN |
| 49 | +2000 REM DRAW DISPLAY BOX |
| 50 | +2010 PRINT CHR$(252); |
| 51 | +2020 PRINT AT(0,1),CHR$(173,223),"SPEED HEIGHT",CHR$(223,168); |
| 52 | +2030 FOR I=0 TO 2 |
| 53 | +2040 PRINT AT(0,2+I),CHR$(173)," ",CHR$(168); |
| 54 | +2050 NEXT |
| 55 | +2060 PRINT AT(0,5),CHR$(173,223)," FUEL TIME ",CHR$(223,168); |
| 56 | +2070 FOR I=0 TO 1 |
| 57 | +2080 PRINT AT(0,6+I),CHR$(173)," ",CHR$(168); |
| 58 | +2090 NEXT |
| 59 | +2100 PRINT AT(0,8),CHR$(173); |
| 60 | +2110 FOR I=0 TO 11 |
| 61 | +2120 PRINT CHR$(167); |
| 62 | +2130 NEXT |
| 63 | +2140 PRINT CHR$(168); |
| 64 | +2150 RETURN |
| 65 | +3000 REM DRAW STARS |
| 66 | +3010 Z=RND(20) |
| 67 | +3020 PRINT CHR$(241); |
| 68 | +3030 FOR I=0 TO 11 |
| 69 | +3040 PRINT AT(MOD(RND(),39), MOD(RND(),20)),"."; |
| 70 | +3050 NEXT |
| 71 | +3060 RETURN |
| 72 | +4000 REM DRAW LUNAR SURFACE |
| 73 | +4010 PRINT CHR$(236),AT(0,21); |
| 74 | +4020 FOR I=0 TO 3 |
| 75 | +4030 PRINT " "; |
| 76 | +4040 NEXT |
| 77 | +4050 PRINT CHR$(224,252),AT(0,20); |
| 78 | +4060 FOR I=0 TO 3 |
| 79 | +4070 PRINT CHR$(167,167,188,188,165,188,188,165,165,188); |
| 80 | +4080 NEXT |
| 81 | +4090 PRINT AT(16,20); |
| 82 | +4100 PRINT CHR$(188,167,20,20,20,20,20,167,188); |
| 83 | +4110 RETURN |
| 84 | +5000 REM DELETE LUNAR LANDER |
| 85 | +5010 FOR I=0 TO 4 |
| 86 | +5020 PRINT AT(18,Y+I)," "; |
| 87 | +5030 NEXT |
| 88 | +5040 RETURN |
| 89 | +6000 REM LANDING ANIMATION |
| 90 | +6010 FOR Y=3 TO 16 |
| 91 | +6020 GOSUB 1000 |
| 92 | +6030 T=TI |
| 93 | +6040 IF TI-T<L THEN GOTO 6040 |
| 94 | +6050 GOSUB 5000 |
| 95 | +6060 NEXT |
| 96 | +6070 GOSUB 1000 |
| 97 | +6080 RETURN |
| 98 | +6100 REM LANDED |
| 99 | +6110 PRINT CHR$(241); |
| 100 | +6120 PRINT AT(0,23),CHR$(34),"HOUSTON...",CHR$(34); |
| 101 | +6130 T=TI |
| 102 | +6140 IF TI-T<120 THEN GOTO 6140 |
| 103 | +6150 PRINT AT(0,23),CHR$(34),"THE POMERANIAN HAS LANDED!",CHR$(34); |
| 104 | +6160 T=TI |
| 105 | +6170 IF TI-T<600 THEN GOTO 6170 |
| 106 | +6180 RETURN |
| 107 | +6200 REM CRASHED |
| 108 | +6210 GOSUB 5000 |
| 109 | +6220 PRINT AT(18,20),CHR$(251,171,169,169,171,171); |
| 110 | +6230 PRINT AT(0,23),CHR$(241),"YOU CRASHED!" |
| 111 | +6240 T=TI |
| 112 | +6250 IF TI-T<600 THEN GOTO 6250 |
| 113 | +6260 RETURN |
| 114 | +7000 REM INSTRUCTIONS |
| 115 | +7010 PRINT CHR$(224,222) |
| 116 | +7020 PRINT CHR$(253),"1973",CHR$(241) |
| 117 | +7030 PRINT |
| 118 | +7040 PRINT "THE LUNAR LANDER",CHR$(247)," POMERANIAN ",CHR$(241),"HAS JUST" |
| 119 | +7050 PRINT "UNDOCKED FROM ITS APOLLO CAPSULE. IT" |
| 120 | +7060 PRINT "IS DESCENDING TO",CHR$(247)," MARE CRISIUM ",CHR$(241),", THE SEA" |
| 121 | +7070 PRINT "OF CRISES",CHR$(241),". ABOARD ARE YOURSELF AS THE" |
| 122 | +7080 PRINT "COMMANDER AND AN ASTRONAUT-SCIENTIST." |
| 123 | +7090 PRINT |
| 124 | +7100 PRINT "GRAVITY IS PULLING YOU DOWNWARD AT A" |
| 125 | +7110 PRINT "RATE OF 5 UNITS PER SECOND. YOU MUST " |
| 126 | +7120 PRINT "FIRE YOUR THRUSTER TO ENSURE A SOFT " |
| 127 | +7130 PRINT "LANDING AT NO MORE THAN 30 UNITS PER " |
| 128 | +7140 PRINT "SECOND. EACH UNIT OF FUEL EQUATES TO " |
| 129 | +7150 PRINT "ONE UNIT OF THRUST. KEYS 1 TO 0 WILL " |
| 130 | +7160 PRINT "FIRE THE THRUSTER AT A LEVEL FROM 1 " |
| 131 | +7170 PRINT "TO 10." |
| 132 | +7180 PRINT |
| 133 | +7190 PRINT "GOOD LUCK. WE'RE ALL COUNTING ON YOU." |
| 134 | +7200 PRINT CHR$(247) |
| 135 | +7210 PRINT AT(0,23),"DO YOU UNDERSTAND (Y/N)"; |
| 136 | +7220 INPUT C$ |
| 137 | +7230 IF C$<>"Y" THEN GOTO 7000 |
| 138 | +7240 RETURN |
| 139 | +8000 REM GET BURN COMMAND |
| 140 | +8010 B=0 |
| 141 | +8020 Z=PEEK(16) |
| 142 | +8030 IF Z=30 THEN B=1 |
| 143 | +8040 IF Z=29 THEN B=3 |
| 144 | +8050 IF Z=27 THEN B=5 |
| 145 | +8060 IF Z=23 THEN B=7 |
| 146 | +8070 IF Z=15 THEN B=9 |
| 147 | +8080 Z=PEEK(21) |
| 148 | +8090 IF Z=30 THEN B=2 |
| 149 | +8100 IF Z=29 THEN B=4 |
| 150 | +8110 IF Z=27 THEN B=6 |
| 151 | +8120 IF Z=23 THEN B=8 |
| 152 | +8130 IF Z=15 THEN B=10 |
| 153 | +8140 RETURN |
| 154 | +8300 REM DRAW BURN |
| 155 | +8310 PRINT CHR$(240); |
| 156 | +8320 FOR I=1 TO 10 |
| 157 | +8330 PRINT AT(19,Y+5+I)," "; |
| 158 | +8340 NEXT |
| 159 | +8350 IF B=0 THEN RETURN |
| 160 | +8360 FOR I=1 TO B |
| 161 | +8370 PRINT CHR$(250); |
| 162 | +8380 IF I>3 THEN PRINT CHR$(248); |
| 163 | +8390 IF I>6 THEN PRINT CHR$(247); |
| 164 | +8400 PRINT AT(19,Y+5+I),CHR$(145,186,144); |
| 165 | +8410 NEXT |
| 166 | +8420 RETURN |
| 167 | +9000 REM DRAW DISPLAY |
| 168 | +9010 PRINT CHR$(253); |
| 169 | +9020 PRINT AT(1,3); |
| 170 | +9030 N=V |
| 171 | +9040 IF N>0 THEN PRINT CHR$(223); |
| 172 | +9050 GOSUB 9200 |
| 173 | +9060 IF N>0 THEN PRINT CHR$(223); |
| 174 | +9070 PRINT AT(7,3); |
| 175 | +9080 N=A |
| 176 | +9090 GOSUB 9200 |
| 177 | +9100 PRINT AT(1,7); |
| 178 | +9110 N=F |
| 179 | +9120 GOSUB 9200 |
| 180 | +9130 PRINT AT(7,7); |
| 181 | +9140 N=E |
| 182 | +9150 GOSUB 9200 |
| 183 | +9160 RETURN |
| 184 | +9200 REM DISPLAY NUMBER |
| 185 | +9210 Z=ABS(N) |
| 186 | +9220 IF Z<10000 THEN PRINT " "; |
| 187 | +9230 IF Z<1000 THEN PRINT " "; |
| 188 | +9240 IF Z<100 THEN PRINT " "; |
| 189 | +9250 IF Z<10 THEN PRINT " "; |
| 190 | +9260 PRINT Z; |
| 191 | +9270 RETURN |
| 192 | + |
0 commit comments