mirror of
https://github.com/TedThompson/OREGON78.git
synced 2024-11-21 18:30:45 +00:00
084cb6c505
First upload of what I think is a bug free release
741 lines
25 KiB
QBasic
741 lines
25 KiB
QBasic
100 REM PROGRAM NAME - OREGON----------------------------FOR THE MEANING OF THE VARIABLES USED, LIST LINES 7210-7560 ----------------------------
|
|
110 GOTO 140
|
|
120 VTAB 24: PRINT " <HIT ANY KEY TO CONTINUE...>";: WAIT - 16384,128: POKE - 16368,0
|
|
130 RETURN
|
|
140 TEXT : PRINT CHR$ (21): HOME
|
|
150 PRINT "PROGRAM NAME - OREGON VERSION:01/01/78": VTAB 2
|
|
160 PRINT "----------------------------------------": VTAB 3
|
|
170 PRINT " ORIGINALLY WRITTEN FOR"
|
|
180 PRINT " MINN. EDUCATIONAL COMPUTING CONSORTIUM"
|
|
190 PRINT " CDC CYBER 70/73-26 IN BASIC 3.1"
|
|
200 PRINT " AND PUBLISHED IN"
|
|
210 PRINT " CREATIVE COMPUTING MAY/JUNE 1978"
|
|
220 PRINT " VOL 4, NO 3, PAGES 132-139"
|
|
230 PRINT "----------------------------------------": VTAB 10
|
|
240 PRINT "ORIGINAL PROGRAMMING:"
|
|
250 PRINT " BILL HEINEMANN - 1971": VTAB 13
|
|
260 PRINT "SUPPORT RESEARCH AND MATERIALS:"
|
|
270 PRINT " DON RAVITSCH - MECC STAFF": VTAB 16
|
|
280 PRINT "CHIPMUNK BASIC PORT:"
|
|
290 PRINT " CHRISTOPHER PENDERSON - 2018": VTAB 19
|
|
300 PRINT "APPLESOFT BASIC PORT:"
|
|
310 PRINT " THEODORE THOMPSON - 2018"
|
|
320 VTAB 24: PRINT "DO YOU NEED INSTRUCTIONS (Y/N)";
|
|
330 GET C$
|
|
340 REM FOLLOWING LINE ACTS AS A
|
|
350 REM RANDOMIZE STATEMENT
|
|
360 X = RND ( - 1 * ( PEEK (78) + 256 * PEEK (79)))
|
|
370 IF C$ = "N" THEN HOME : GOTO 1060
|
|
380 IF NOT (C$ = "Y") THEN 330
|
|
390 HOME
|
|
400 REM ***INSTRUCTIONS***
|
|
410 PRINT "THIS PROGRAM SIMULATES A TRIP OVER THE"
|
|
420 PRINT "OREGON TRAIL FROM INDEPENDENCE, MISSOURI": VTAB 3
|
|
430 PRINT "TO OREGON CITY, OREGON IN 1847."
|
|
440 PRINT
|
|
450 PRINT "YOUR FAMILY OF FIVE WILL COVER THE 2040"
|
|
460 PRINT "MILE OREGON TRAIL IN 5-6 MONTHS ---"
|
|
470 VTAB 11
|
|
480 PRINT "IF YOU MAKE IT ALIVE."
|
|
490 VTAB 17
|
|
500 PRINT "YOU HAD SAVED $900 TO SPEND FOR THE"
|
|
510 PRINT "TRIP, AND YOU'VE JUST PAID $200 FOR A"
|
|
520 PRINT "WAGON."
|
|
530 GOSUB 120: HOME
|
|
540 PRINT "YOU WILL NEED TO SPEND THE REST OF YOUR"
|
|
550 PRINT "MONEY ON THE FOLLOWING ITEMS:"
|
|
560 PRINT
|
|
570 PRINT " OXEN - YOU CAN SPEND $200-$300 ON"
|
|
580 PRINT " YOUR TEAM. THE MORE YOU"
|
|
590 PRINT " SPEND, THE FASTER YOU'LL GO": VTAB 7
|
|
600 PRINT " BECAUSE YOU'LL HAVE BETTER"
|
|
610 PRINT " ANIMALS."
|
|
620 PRINT
|
|
630 PRINT " FOOD - THE MORE YOU HAVE, THE LESS": VTAB 11
|
|
640 PRINT " CHANCE THERE IS OF GETTING"
|
|
650 PRINT " SICK."
|
|
660 PRINT
|
|
670 PRINT "AMMUNITION - $1 BUYS A BELT OF 50"
|
|
680 PRINT " BULLETS. YOU WILL NEED"
|
|
690 PRINT " BULLETS FOR ATTACKS BY"
|
|
700 PRINT " ANIMALS AND BANDITS, AND"
|
|
710 PRINT " FOR HUNTING FOOD."
|
|
720 GOSUB 120: HOME
|
|
730 PRINT " CLOTHING - THIS IS ESPECIALLY"
|
|
740 PRINT " IMPORTANT FOR THE COLD"
|
|
750 PRINT " WEATHER YOU WILL"
|
|
760 PRINT " ENCOUNTER WHEN CROSSING": VTAB 5
|
|
770 PRINT " THE MOUNTAINS."
|
|
780 PRINT
|
|
790 PRINT "MISC. SUPPLIES - THIS INCLUDES MEDICINE"
|
|
800 PRINT " AND OTHER THINGS YOU"
|
|
810 PRINT " WILL NEED FOR SICKNESS"
|
|
820 PRINT " AND EMERGENCY REPAIRS"
|
|
830 PRINT
|
|
840 PRINT "YOU CAN SPEND ALL YOUR MONEY BEFORE YOU"
|
|
850 PRINT "START YOUR TRIP - OR YOU CAN SAVE SOME"
|
|
860 PRINT "OF YOUR CASH TO SPEND AT FORTS ALONG THE": VTAB 15
|
|
870 PRINT "WAY WHEN YOU RUN LOW. HOWEVER, ITEMS"
|
|
880 PRINT "COST MORE AT THE FORTS. YOU CAN ALSO GO"
|
|
890 PRINT "HUNTING ALONG THE WAY TO GET MORE FOOD."
|
|
900 GOSUB 120: HOME
|
|
910 PRINT "WHENEVER YOU HAVE TO USE YOUR TRUSTY"
|
|
920 PRINT "RIFLE ALONG THE WAY, YOU WILL BE TOLD TO": VTAB 3
|
|
930 PRINT "TYPE IN A WORD (ONE THAT SOUNDS LIKE A"
|
|
940 PRINT "GUN SHOT). THE FASTER YOU TYPE IN THAT"
|
|
950 PRINT "WORD AND HIT THE "; CHR$ (34);"RETURN"; CHR$ (34);" KEY, THE"
|
|
960 PRINT "BETTER LUCK YOU'LL HAVE WITH YOUR GUN."
|
|
970 PRINT
|
|
980 PRINT "AT EACH TURN, ALL ITEMS ARE SHOWN IN "
|
|
990 PRINT "DOLLAR AMOUNTS EXCEPT BULLETS."
|
|
1000 PRINT
|
|
1010 PRINT "WHEN ASKED TO ENTER MONEY AMOUNTS, DON'T": VTAB 12
|
|
1020 PRINT "USE A "; CHR$ (34);"$"; CHR$ (34);"."
|
|
1030 PRINT
|
|
1040 PRINT "GOOD LUCK!!!"
|
|
1050 GOSUB 120: HOME
|
|
1060 REM **DIFFICULTY SETUP**
|
|
1070 PRINT "HOW GOOD A SHOT ARE YOU WITH YOUR RIFLE?": VTAB 3
|
|
1080 PRINT " (1) ACE MARKSMAN (2) GOOD SHOT "
|
|
1090 PRINT " (3) FAIR TO MIDDLIN' "
|
|
1100 PRINT " (4) NEED MORE PRACTICE (5) SHAKY KNEES"
|
|
1110 PRINT
|
|
1120 PRINT "ENTER ONE OF THE ABOVE -- THE BETTER YOU": VTAB 8
|
|
1130 PRINT "CLAIM YOU ARE, THE FASTER YOU'LL HAVE TO": VTAB 9
|
|
1140 PRINT "BE WITH YOUR GUN TO BE SUCCESSFUL."
|
|
1150 PRINT
|
|
1160 INPUT "CHOOSE (1-5)->";D9$
|
|
1170 D9 = VAL (D9$): IF D9 < 1 OR D9 > 5 OR INT (D9) < > D9 THEN PRINT CHR$ (7);: VTAB PEEK (37): CALL - 868: GOTO 1160
|
|
1190 REM ***INITIAL PURCHASES***
|
|
1200 X1 = 0
|
|
1210 D3 = 0:M9 = 0:M = 0:F2 = 0:F1 = 0:S4 = 0:K8 = 0
|
|
1220 DIM S$(4):S$(1) = "BANG":S$(2) = "BLAM":S$(3) = "POW":S$(4) = "WHAM"
|
|
1230 HOME : ONERR GOTO 1600
|
|
1240 QNUM = 1: VTAB 1: PRINT "HOW MUCH DO YOU WANT TO SPEND ON"
|
|
1250 INPUT "YOUR OXEN TEAM? $";A
|
|
1260 IF A > = 200 THEN 1290
|
|
1270 PRINT : INVERSE : PRINT CHR$ (7);" NOT ENOUGH ";: NORMAL : FOR DLY = 1 TO 1000: NEXT : HTAB 1: CALL - 868: HTAB 1: VTAB 2: CALL - 868
|
|
1280 GOTO 1240
|
|
1290 IF A < = 300 THEN 1320
|
|
1300 PRINT : INVERSE : PRINT CHR$ (7);"TOO MUCH";: NORMAL : FOR DLY = 1 TO 1000: NEXT : HTAB 1: CALL - 868: HTAB 1: VTAB 2: CALL - 868
|
|
1310 GOTO 1240
|
|
1320 QNUM = 2: VTAB 15: CALL - 958: VTAB 4: PRINT "HOW MUCH DO YOU WANT TO SPEND ON"
|
|
1330 INPUT "FOOD? $";F
|
|
1340 IF F > = 0 THEN 1360
|
|
1350 GOTO 1600
|
|
1360 QNUM = 3: PRINT : PRINT "HOW MUCH DO YOU WANT TO SPEND ON"
|
|
1370 INPUT "AMMUNITION? $";B
|
|
1380 IF B > = 0 THEN 1400
|
|
1390 GOTO 1600
|
|
1400 QNUM = 4: PRINT : PRINT "HOW MUCH DO YOU WANT TO SPEND ON"
|
|
1410 INPUT "CLOTHING? $";C
|
|
1420 IF C > = 0 THEN 1440
|
|
1430 GOTO 1600
|
|
1440 QNUM = 5: PRINT : PRINT "HOW MUCH DO YOU WANT TO SPEND ON"
|
|
1450 INPUT "MISCELLANEOUS SUPPLIES? $";M1
|
|
1460 IF M1 > = 0 THEN 1480
|
|
1470 GOTO 1600
|
|
1480 T = 700 - A - F - B - C - M1
|
|
1490 IF T > = 0 THEN 1530
|
|
1500 PRINT : PRINT CHR$ (7);"YOU OVERSPENT--YOU ONLY HAD $700 TO"
|
|
1510 PRINT "SPEND. BUY AGAIN": PRINT
|
|
1520 GOTO 1240
|
|
1530 B = 50 * B: POKE 216,0: REM POKE CLEARS ONERR
|
|
1540 PRINT : PRINT "AFTER ALL YOUR PURCHASES,"
|
|
1550 PRINT "YOU NOW HAVE ";T;" DOLLARS LEFT"
|
|
1560 GOSUB 120: HOME
|
|
1570 PRINT "MONDAY MARCH 29 1847"
|
|
1580 PRINT "--------------------"
|
|
1590 GOTO 2120
|
|
1600 PRINT : INVERSE : PRINT CHR$ (7);" IMPOSSIBLE ";: NORMAL : FOR DLY = 1 TO 1000: NEXT : HTAB 1: CALL - 868: HTAB 1: VTAB ( PEEK (37) - 1): CALL - 868
|
|
1610 ON QNUM GOTO 1240,1330,1370,1410,1450
|
|
1620 IF M > = 2040 THEN 6030
|
|
1630 REM ***SETTING DATE***
|
|
1640 D3 = D3 + 1
|
|
1650 GOSUB 120: HOME
|
|
1660 PRINT "MONDAY ";
|
|
1670 ON D3 GOTO 1680,1700,1720,1740,1760,1780,1800,1820,1840,1860,1880,1900,1920,1940,1960,1980,2000,2020,2040,2060
|
|
1680 PRINT "APRIL 12 ";
|
|
1690 GOTO 2090
|
|
1700 PRINT "APRIL 26 ";
|
|
1710 GOTO 2090
|
|
1720 PRINT "MAY 10 ";
|
|
1730 GOTO 2090
|
|
1740 PRINT "MAY 24 ";
|
|
1750 GOTO 2090
|
|
1760 PRINT "JUNE 7 ";
|
|
1770 GOTO 2090
|
|
1780 PRINT "JUNE 21 ";
|
|
1790 GOTO 2090
|
|
1800 PRINT "JULY 5 ";
|
|
1810 GOTO 2090
|
|
1820 PRINT "JULY 19 ";
|
|
1830 GOTO 2090
|
|
1840 PRINT "AUGUST 2 ";
|
|
1850 GOTO 2090
|
|
1860 PRINT "AUGUST 16 ";
|
|
1870 GOTO 2090
|
|
1880 PRINT "AUGUST 31 ";
|
|
1890 GOTO 2090
|
|
1900 PRINT "SEPTEMBER 13 ";
|
|
1910 GOTO 2090
|
|
1920 PRINT "SEPTEMBER 27 ";
|
|
1930 GOTO 2090
|
|
1940 PRINT "OCTOBER 11 ";
|
|
1950 GOTO 2090
|
|
1960 PRINT "OCTOBER 25 ";
|
|
1970 GOTO 2090
|
|
1980 PRINT "NOVEMBER 8 ";
|
|
1990 GOTO 2090
|
|
2000 PRINT "NOVEMBER 22 ";
|
|
2010 GOTO 2090
|
|
2020 PRINT "DECEMBER 6 ";
|
|
2030 GOTO 2090
|
|
2040 PRINT "DECEMBER 20 ";
|
|
2050 GOTO 2090
|
|
2060 PRINT "YOU HAVE BEEN ON THE TRAIL TOO LONG ------"
|
|
2070 PRINT "YOUR FAMILY DIES IN THE FIRST BLIZZARD OF WINTER"
|
|
2080 GOTO 5690
|
|
2090 PRINT "1847";:HP = PEEK (36): PRINT
|
|
2100 FOR I = 1 TO HP - 1: PRINT "-";: NEXT : PRINT "-"
|
|
2110 REM ***BEGINNING EACH TURN***
|
|
2120 IF F > = 0 THEN 2140
|
|
2130 F = 0
|
|
2140 IF B > = 0 THEN 2160
|
|
2150 B = 0
|
|
2160 IF C > = 0 THEN 2180
|
|
2170 C = 0
|
|
2180 IF M1 > = 0 THEN 2200
|
|
2190 M1 = 0
|
|
2200 IF F > = 13 THEN 2220
|
|
2210 PRINT "YOU'D BETTER DO SOME HUNTING": PRINT " OR BUY FOOD AND SOON!!!!": PRINT
|
|
2220 F = INT (F)
|
|
2230 B = INT (B)
|
|
2240 C = INT (C)
|
|
2250 M1 = INT (M1)
|
|
2260 T = INT (T)
|
|
2270 M = INT (M)
|
|
2280 M2 = M
|
|
2290 IF S4 = 1 THEN 2320
|
|
2300 IF K8 = 1 THEN 2320
|
|
2310 GOTO 2360
|
|
2320 T = T - 20
|
|
2330 IF T < 0 THEN 5600
|
|
2340 PRINT "DOCTOR'S BILL IS $20"
|
|
2350 S4 = 0:K8 = 0
|
|
2360 IF M9 = 1 THEN 2390
|
|
2370 PRINT "TOTAL MILEAGE: ";M
|
|
2380 GOTO 2410
|
|
2390 PRINT "TOTAL MILEAGE: 950"
|
|
2400 M9 = 0
|
|
2410 VTAB PEEK (37) + 1: PRINT "FOOD BULLETS CLOTHES MISC.SUPP. CASH";: VTAB PEEK (37) + 1
|
|
2420 VP = PEEK (37) + 3: HTAB 2: PRINT F;: HTAB 8: PRINT B;: HTAB 17: PRINT C;: HTAB 26: PRINT M1;: HTAB 38: PRINT T;: VTAB VP: HTAB 1
|
|
2430 IF X1 = 0 THEN 2490
|
|
2440 X1 = NOT X1
|
|
2450 PRINT "DO YOU (1)STOP AT THE NEXT FORT,"
|
|
2460 INPUT "(2)HUNT, OR (3)CONTINUE? ";X$
|
|
2470 IF VAL (X$) < > 1 AND VAL (X$) < > 2 AND VAL (X$) < > 3 THEN PRINT CHR$ (7): VTAB PEEK (37) - 1: CALL - 868: GOTO 2460
|
|
2480 X = VAL (X$): GOTO 2590
|
|
2490 INPUT "DO YOU (1)HUNT OR (2)CONTINUE? ";X$
|
|
2500 IF VAL (X$) < > 1 AND VAL (X$) < > 2 THEN PRINT CHR$ (7): VTAB PEEK (37) - 1: CALL - 868: GOTO 2490
|
|
2510 X = VAL (X$): IF X = 1 THEN 2520
|
|
2520 LET X = X + 1
|
|
2530 IF X = 3 THEN 2580
|
|
2540 IF B > 39 THEN 2580
|
|
2550 PRINT "TOUGH---"
|
|
2560 PRINT "YOU NEED MORE BULLETS TO GO HUNTING"
|
|
2570 GOTO 2040
|
|
2580 X1 = NOT X1
|
|
2590 ON X GOTO 2610,2860,3040
|
|
2600 REM ***STOPPING AT FORT***
|
|
2610 VTAB VP: CALL - 958: PRINT "ENTER WHAT YOU WISH TO SPEND": PRINT "ON THE FOLLOWING": PRINT
|
|
2620 PRINT "FOOD";
|
|
2630 GOSUB 2650
|
|
2640 GOTO 2730
|
|
2650 INPUT P
|
|
2660 IF P < 0 THEN 2720
|
|
2670 T = T - P
|
|
2680 IF T > = 0 THEN 2720
|
|
2690 PRINT "YOU DON'T HAVE THAT MUCH--KEEP YOUR SPENDING DOWN"
|
|
2700 T = T + P
|
|
2710 P = 0
|
|
2720 RETURN
|
|
2730 F = F + 2 / 3 * P
|
|
2740 PRINT "AMMUNITION";
|
|
2750 GOSUB 2650
|
|
2760 LET B = INT (B + 2 / 3 * P * 50)
|
|
2770 PRINT "CLOTHING";
|
|
2780 GOSUB 2650
|
|
2790 C = C + 2 / 3 * P
|
|
2800 PRINT "MISCELLANEOUS SUPPLIES";
|
|
2810 GOSUB 2650
|
|
2820 M1 = M1 + 2 / 3 * P
|
|
2830 M = M - 45
|
|
2840 GOSUB 120: GOTO 3040
|
|
2850 REM ***HUNTING***
|
|
2860 IF B > 39 THEN 2890
|
|
2870 PRINT "TOUGH---YOU NEED MORE BULLETS TO GO HUNTING"
|
|
2880 GOTO 2450
|
|
2890 M = M - 45
|
|
2900 GOSUB 6850
|
|
2910 IF B1 < = 1 THEN 2980
|
|
2920 IF 100 * RND (1) < 13 * B1 THEN 3030
|
|
2930 F = F + 48 - 2 * B1
|
|
2940 PRINT "NICE SHOT--RIGHT ON TARGET--GOOD EATIN' TONIGHT!!"
|
|
2950 B = B - 10 - 3 * B1
|
|
2960 GOSUB 120: GOTO 3040
|
|
2970 REM **BELLS IN LINE 2660**
|
|
2980 PRINT CHR$ (7); CHR$ (7);"RIGHT BETWEEN THE EYES": PRINT " ---YOU GOT A BIG ONE!!!!"
|
|
2990 PRINT "FULL BELLIES TONIGHT!"
|
|
3000 F = F + 52 + RND (1) * 6
|
|
3010 B = B - 10 - RND (1) * 4
|
|
3020 GOSUB 120: GOTO 3040
|
|
3030 PRINT "YOU MISSED---AND YOUR DINNER GOT AWAY...": GOSUB 120
|
|
3040 IF F > = 13 THEN 3070
|
|
3050 HOME : GOTO 5580
|
|
3060 REM ***EATING***
|
|
3070 VTAB VP: HTAB 1: CALL - 958: PRINT "DO YOU EAT (1)POORLY, (2)MODERATELY, OR"
|
|
3080 INPUT "(3)WELL? ";E
|
|
3090 IF E > 3 THEN 3070
|
|
3100 IF E < 1 THEN 3070
|
|
3110 LET E = INT (E)
|
|
3120 LET F = F - 8 - 5 * E
|
|
3130 IF F > = 0 THEN 3170
|
|
3140 F = F + 8 + 5 * E
|
|
3150 PRINT "YOU CAN'T EAT THAT WELL"
|
|
3160 GOTO 3070
|
|
3170 LET M = M + 200 + (A - 220) / 5 + 10 * RND (1)
|
|
3190 C1 = 0
|
|
3200 L1 = C1
|
|
3210 REM ***RIDERS ATTACK***
|
|
3230 IF RND (1) * 10 > ((M / 100 - 4) ^ 2 + 72) / ((M / 100 - 4) ^ 2 + 12) - 1 THEN 3900
|
|
3240 PRINT : PRINT "RIDERS AHEAD. THEY ";
|
|
3250 S5 = 0
|
|
3270 IF RND (1) < .8 THEN 3300
|
|
3280 PRINT "DON'T ";
|
|
3290 S5 = 1
|
|
3300 PRINT "LOOK HOSTILE..."
|
|
3310 PRINT : PRINT "TACTICS:"
|
|
3320 PRINT " (1) RUN (2) ATTACK (3) CONTINUE"
|
|
3330 PRINT " (4) CIRCLE WAGONS": PRINT
|
|
3340 IF RND (1) > .2 THEN 3360
|
|
3350 S5 = 1 - S5
|
|
3360 INPUT "CHOOSE (1-4)->";T1$
|
|
3370 T1 = VAL (T1$): IF T1 < 1 OR T1 > 4 OR INT (T1) < > T1 THEN PRINT CHR$ (7);: VTAB PEEK (37): CALL - 868: GOTO 3360
|
|
3380 VTAB 10: CALL - 958
|
|
3390 IF S5 = 1 THEN 3680
|
|
3400 IF T1 > 1 THEN 3460
|
|
3410 M = M + 20
|
|
3420 M1 = M1 - 15
|
|
3430 B = B - 150
|
|
3440 A = A - 40
|
|
3450 GOTO 3820
|
|
3460 IF T1 > 2 THEN 3590
|
|
3470 GOSUB 6850
|
|
3480 B = B - B1 * 40 - 80
|
|
3490 IF B1 > 1 THEN 3520
|
|
3500 PRINT "NICE SHOOTING---YOU DROVE THEM OFF"
|
|
3510 GOTO 3820
|
|
3520 IF B1 < = 4 THEN 3570
|
|
3530 PRINT "LOUSY SHOT---YOU GOT KNIFED"
|
|
3540 K8 = 1
|
|
3550 PRINT "YOU HAVE TO SEE OL' DOC BLANCHARD"
|
|
3560 GOTO 3820
|
|
3570 PRINT "KINDA SLOW WITH YOUR COLT .45"
|
|
3580 GOTO 3820
|
|
3590 IF T1 > 3 THEN 3640
|
|
3600 IF RND (1) > .8 THEN 3800
|
|
3610 LET B = B - 150
|
|
3620 M1 = M1 - 15
|
|
3630 GOTO 3820
|
|
3640 GOSUB 6850
|
|
3650 B = B - B1 * 30 - 80
|
|
3660 M = M - 25
|
|
3670 GOTO 3490
|
|
3680 IF T1 > 1 THEN 3720
|
|
3690 M = M + 15
|
|
3700 A = A - 10
|
|
3710 GOTO 3820
|
|
3720 IF T1 > 2 THEN 3760
|
|
3730 M = M - 5
|
|
3740 B = B - 100
|
|
3750 GOTO 3820
|
|
3760 IF T1 > 3 THEN 3780
|
|
3770 GOTO 3820
|
|
3780 M = M - 20
|
|
3790 GOTO 3820
|
|
3800 PRINT "THEY DID NOT ATTACK"
|
|
3810 GOTO 3900
|
|
3820 IF S5 = 0 THEN 3850
|
|
3830 PRINT "RIDERS WERE FRIENDLY, BUT CHECK FOR": PRINT "POSSIBLE LOSSES"
|
|
3840 GOTO 3900
|
|
3850 PRINT "RIDERS WERE HOSTILE--CHECK FOR LOSES"
|
|
3860 IF B > = 0 THEN 3900
|
|
3870 PRINT "YOU RAN OUT OF BULLETS AND GOT MASSACRED BY THE RIDERS"
|
|
3880 GOTO 5690
|
|
3890 REM ***SELECTION OF EVENTS***
|
|
3900 D1 = 0: PRINT
|
|
3910 RESTORE
|
|
3920 R1 = 100 * RND (1)
|
|
3930 LET D1 = D1 + 1
|
|
3940 IF D1 = 16 THEN 5140
|
|
3950 READ D
|
|
3960 IF R1 > D THEN 3930
|
|
3970 DATA 6,11,13,15,17,22,32,35,37,42,44,54,64,69,95
|
|
3980 ON D1 GOTO 3990,4040,4090,4150,4190,4230,4270,4340,4530,4600,4640,4730,4790,5030,5080,5140
|
|
3990 PRINT "WAGON BREAKS DOWN"
|
|
4000 PRINT " --LOSE TIME AND SUPPLIES FIXING IT"
|
|
4010 LET M = M - 15 - 5 * RND (1)
|
|
4020 LET M1 = M1 - 8
|
|
4030 GOTO 5190
|
|
4040 PRINT "OX INJURES LEG"
|
|
4050 PRINT " ---SLOWS YOU DOWN REST OF TRIP"
|
|
4060 LET M = M - 25
|
|
4070 LET A = A - 20
|
|
4080 GOTO 5190
|
|
4090 PRINT "BACK LUCK---YOUR DAUGHTER BROKE HER ARM"
|
|
4100 PRINT "YOU HAD TO STOP AND USE SUPPLIES TO"
|
|
4110 PRINT "MAKE A SLING"
|
|
4120 M = M - 5 - 4 * RND (1)
|
|
4130 M1 = M1 - 2 - 3 * RND (1)
|
|
4140 GOTO 5190
|
|
4150 PRINT "OX WANDERS OFF"
|
|
4160 PRINT " ---SPEND TIME LOOKING FOR IT"
|
|
4170 M = M - 17
|
|
4180 GOTO 5190
|
|
4190 PRINT "YOUR SON GETS LOST"
|
|
4200 PRINT " ---SPEND HALF THE DAY LOOKING FOR HIM"
|
|
4210 M = M - 10
|
|
4220 GOTO 5190
|
|
4230 PRINT "UNSAFE WATER"
|
|
4240 PRINT " --LOSE TIME LOOKING FOR CLEAN SPRING"
|
|
4250 LET M = M - 10 * RND (1) - 2
|
|
4260 GOTO 5190
|
|
4270 IF M > 950 THEN 4960
|
|
4280 PRINT "HEAVY RAINS---TIME AND SUPPLIES LOST"
|
|
4290 F = F - 10
|
|
4300 B = B - 500
|
|
4310 M1 = M1 - 15
|
|
4320 M = M - 10 * RND (1) - 5
|
|
4330 GOTO 5190
|
|
4340 PRINT "BANDITS ATTACK"
|
|
4350 GOSUB 6850
|
|
4360 B = B - 20 * B1
|
|
4370 IF B > = 0 THEN 4420
|
|
4380 PRINT "YOU RAN OUT OF BULLETS"
|
|
4390 PRINT " ---THEY GET LOTS OF CASH"
|
|
4400 T = T / 3
|
|
4410 GOTO 4430
|
|
4420 IF B1 < = 1 THEN 4500
|
|
4430 PRINT "YOU GOT SHOT IN THE LEG AND"
|
|
4440 PRINT " THEY TOOK ONE OF YOUR OXEN"
|
|
4450 K8 = 1
|
|
4460 PRINT "BETTER HAVE A DOC LOOK AT YOUR WOUND"
|
|
4470 M1 = M1 - 5
|
|
4480 A = A - 20
|
|
4490 GOTO 5190
|
|
4500 PRINT "QUICKEST DRAW OUTSIDE OF DODGE CITY!!!"
|
|
4510 PRINT "YOU GOT 'EM!"
|
|
4520 GOTO 5190
|
|
4530 PRINT "THERE WAS A FIRE IN YOUR WAGON"
|
|
4540 PRINT " --FOOD AND SUPPLIES DAMAGE!"
|
|
4550 F = F - 40
|
|
4560 B = B - 400
|
|
4570 LET M1 = M1 - RND (1) * 8 - 3
|
|
4580 M = M - 15
|
|
4590 GOTO 5190
|
|
4600 PRINT "LOSE YOUR WAY IN HEAVY FOG"
|
|
4610 PRINT " ---TIME IS LOST"
|
|
4620 M = M - 10 - 5 * RND (1)
|
|
4630 GOTO 5190
|
|
4640 PRINT "YOU KILLED A POISONOUS SNAKE"
|
|
4650 PRINT " ---AFTER IT BIT YOU"
|
|
4660 B = B - 10
|
|
4670 M1 = M1 - 5
|
|
4680 IF M1 > = 0 THEN 4720
|
|
4690 PRINT "YOU DIE OF SNAKEBITE"
|
|
4700 PRINT " SINCE YOU HAVE NO MEDICINE"
|
|
4710 GOTO 5690
|
|
4720 GOTO 5190
|
|
4730 PRINT "WAGON GETS SWAMPED FORDING RIVER"
|
|
4740 PRINT " --LOSE FOOD AND CLOTHES"
|
|
4750 F = F - 30
|
|
4760 C = C - 20
|
|
4770 M = M - 20 - 20 * RND (1)
|
|
4780 GOTO 5190
|
|
4790 PRINT "WILD ANIMALS ATTACK!"
|
|
4800 GOSUB 6850
|
|
4810 IF B > 39 THEN 4860
|
|
4820 PRINT "YOU WERE TOO LOW ON BULLETS--"
|
|
4830 PRINT "THE WOLVES OVERPOWERED YOU"
|
|
4840 K8 = 1
|
|
4850 GOTO 5640
|
|
4860 IF B1 > 2 THEN 4900
|
|
4870 PRINT "NICE SHOOTIN' PARTNER"
|
|
4880 PRINT " ---THEY DIDN'T GET MUCH"
|
|
4890 GOTO 4920
|
|
4900 PRINT "SLOW ON THE DRAW"
|
|
4910 PRINT " ---THEY GOT AT YOUR FOOD AND CLOTHES"
|
|
4920 B = B - 20 * B1
|
|
4930 C = C - B1 * 4
|
|
4940 F = F - B1 * 8
|
|
4950 GOTO 5190
|
|
4960 PRINT "COLD WEATHER---BRRRRRR!---YOU ";
|
|
4970 IF C > 22 + 4 * RND (1) THEN 5000
|
|
4980 PRINT "DONT'T ";
|
|
4990 C1 = 1
|
|
5000 PRINT "HAVE": PRINT "ENOUGH CLOTHING TO KEEP YOU WARM"
|
|
5010 IF C1 = 0 THEN 5190
|
|
5020 GOTO 7030
|
|
5030 PRINT "HAIL STORM---SUPPLIES DAMAGED"
|
|
5040 M = M - 5 - RND (1) * 10
|
|
5050 B = B - 200
|
|
5060 M1 = M1 - 4 - RND (1) * 3
|
|
5070 GOTO 5190
|
|
5080 IF E = 1 THEN 7030
|
|
5090 IF E = 3 THEN 5120
|
|
5100 IF RND (1) > .25 THEN 7030
|
|
5110 GOTO 5190
|
|
5120 IF RND (1) < .5 THEN 7030
|
|
5130 GOTO 5190
|
|
5140 PRINT "HELPFUL INDIANS SHOW YOU WHERE"
|
|
5150 PRINT " TO FIND MORE FOOD"
|
|
5160 F = F + 14
|
|
5170 GOTO 5190
|
|
5180 REM ***MOUNTAINS***
|
|
5190 IF M < = 950 THEN 1620
|
|
5210 IF RND (1) * 10 > 9 - ((M / 100 - 15) ^ 2 + 72) / ((M / 100 - 15) ^ 2 + 12) THEN 5360
|
|
5220 PRINT : PRINT "RUGGED MOUNTAINS"
|
|
5230 IF RND (1) > .1 THEN 5280
|
|
5240 PRINT : PRINT "YOU GOT LOST---LOSE VALUABLE"
|
|
5250 PRINT " TIME TRYING TO FIND TRAIL!"
|
|
5260 M = M - 60
|
|
5270 GOTO 5360
|
|
5280 IF RND (1) > .11 THEN 5340
|
|
5290 PRINT : PRINT "WAGON DAMAGED!": PRINT " ---LOSE TIME AND SUPPLIES"
|
|
5300 M1 = M1 - 5
|
|
5310 B = B - 200
|
|
5320 M = M - 20 - 30 * RND (1)
|
|
5330 GOTO 5360
|
|
5340 PRINT " ---THE GOING GETS SLOW"
|
|
5350 M = M - 45 - RND (1) / .02
|
|
5360 IF F1 = 1 THEN 5410
|
|
5370 F1 = 1
|
|
5380 IF RND (1) < .8 THEN 5480
|
|
5390 PRINT : PRINT "YOU MADE IT SAFELY THROUGH SOUTH PASS"
|
|
5400 PRINT " --NO SNOW"
|
|
5410 IF M < 1700 THEN 5450
|
|
5420 IF F2 = 1 THEN 5450
|
|
5430 F2 = 1
|
|
5440 IF RND (1) < .7 THEN 5480
|
|
5450 IF M > 950 THEN 1620
|
|
5460 M9 = 1
|
|
5470 GOTO 1620
|
|
5480 PRINT : PRINT "BLIZZARD IN MOUNTAIN PASS"
|
|
5490 PRINT " --TIME AND SUPPLIES LOST"
|
|
5500 L1 = 1
|
|
5510 F = F - 25
|
|
5520 M1 = M1 - 10
|
|
5530 B = B - 300
|
|
5540 M = M - 30 - 40 * RND (1)
|
|
5550 IF C < 18 + 2 * RND (1) THEN 7030
|
|
5560 GOTO 5450
|
|
5570 REM ***DYING***
|
|
5580 PRINT "YOU RAN OUT OF FOOD AND STARVED TO DEATH";
|
|
5590 GOTO 5690
|
|
5600 LET T = 0
|
|
5610 PRINT "YOU CAN'T AFFORD A DOCTOR"
|
|
5620 GOTO 5640
|
|
5630 PRINT : PRINT "YOU RAN OUT OF MEDICAL SUPPLIES"
|
|
5640 PRINT "YOU DIED OF ";
|
|
5650 IF K8 = 1 THEN 5680
|
|
5660 PRINT "PNEUMONIA"
|
|
5670 GOTO 5690
|
|
5680 PRINT "INJURIES"
|
|
5690 GOSUB 120: HOME
|
|
5700 PRINT "DUE TO YOUR UNFORTUNATE SITUATION, THERE";
|
|
5710 PRINT "ARE A FEW FORMALITIES WE MUST GO THROUGH"
|
|
5720 PRINT
|
|
5730 PRINT
|
|
5740 INPUT "WOULD YOU LIKE A MINISTER?";C$
|
|
5750 PRINT
|
|
5760 INPUT "WOULD YOU LIKE A FANCY FUNERAL?";C$
|
|
5770 PRINT
|
|
5780 PRINT "WOULD YOU LIKE US TO INFORM YOUR"
|
|
5790 INPUT "NEXT OF KIN?";C$
|
|
5800 PRINT
|
|
5810 IF C$ = "YES" OR C$ = "Y" THEN 5850
|
|
5820 PRINT "BUT YOUR AUNT SADIE IN ST. LOUIS IS"
|
|
5830 PRINT "REALLY WORRIED ABOUT YOU."
|
|
5840 GOTO 5860
|
|
5850 PRINT "THAT WILL BE $4.50 FOR THE TELEGRAPH": PRINT "CHARGE."
|
|
5860 GOSUB 120: HOME
|
|
5870 INVERSE : PRINT SPC( 40);
|
|
5880 PRINT " WE THANK YOU FOR THIS INFORMATION AND ";
|
|
5890 PRINT " WE ARE SORRY YOU DIDN'T MAKE IT TO THE ";
|
|
5900 PRINT " GREAT TERRITORY OF OREGON. ";
|
|
5910 PRINT " ";
|
|
5920 PRINT " BETTER LUCK NEXT TIME. ";
|
|
5930 PRINT " ";
|
|
5940 PRINT " ";
|
|
5950 PRINT " SINCERELY, ";
|
|
5960 PRINT " ";
|
|
5970 PRINT " THE OREGON CITY ";
|
|
5980 PRINT " CHAMBER OF COMMERCE ";
|
|
5990 PRINT SPC( 40): NORMAL : PRINT
|
|
6010 PRINT "RUN COMPLETE.": END
|
|
6020 REM ***FINAL TURN***
|
|
6030 F9 = (2040 - M2) / (M - M2)
|
|
6040 F = F + (1 - F9) * (8 + 5 * E)
|
|
6050 PRINT
|
|
6060 REM **BELLS IN LINES 5470,5480**
|
|
6070 PRINT CHR$ (7);"YOU FINALLY ARRIVED AT OREGON CITY"
|
|
6080 PRINT CHR$ (7);"AFTER 2040 LONG MILES---HOORAY!!!!!"
|
|
6090 PRINT "A REAL PIONEER!"
|
|
6100 GOSUB 120: HOME
|
|
6110 F9 = INT (F9 * 14)
|
|
6120 D3 = D3 * 14 + F9
|
|
6130 F9 = F9 + 1
|
|
6140 IF F9 < 8 THEN 6160
|
|
6150 F9 = F9 - 7
|
|
6160 ON F9 GOTO 6170,6190,6210,6230,6250,6270,6290
|
|
6170 PRINT "MONDAY ";
|
|
6180 GOTO 6300
|
|
6190 PRINT "TUESDAY ";
|
|
6200 GOTO 6300
|
|
6210 PRINT "WEDNESDAY ";
|
|
6220 GOTO 6300
|
|
6230 PRINT "THURSDAY ";
|
|
6240 GOTO 6300
|
|
6250 PRINT "FRIDAY ";
|
|
6260 GOTO 6300
|
|
6270 PRINT "SATURDAY ";
|
|
6280 GOTO 6300
|
|
6290 PRINT "SUNDAY ";
|
|
6300 IF D3 > 124 THEN 6340
|
|
6310 D3 = D3 - 93
|
|
6320 PRINT "JULY ";D3;" 1847"
|
|
6330 GOTO 6520
|
|
6340 IF D3 > 155 THEN 6380
|
|
6350 D3 = D3 - 124
|
|
6360 PRINT "AUGUST ";D3;" 1847"
|
|
6370 GOTO 6520
|
|
6380 IF D3 > 185 THEN 6420
|
|
6390 D3 = D3 - 155
|
|
6400 PRINT "SEPTEMBER ";D3;" 1847"
|
|
6410 GOTO 6520
|
|
6420 IF D3 > 216 THEN 6460
|
|
6430 D3 = D3 - 185
|
|
6440 PRINT "OCTOBER ";D3;" 1847"
|
|
6450 GOTO 6520
|
|
6460 IF D3 > 246 THEN 6500
|
|
6470 D3 = D3 - 216
|
|
6480 PRINT "NOVEMBER ";D3;" 1847"
|
|
6490 GOTO 6520
|
|
6500 D3 = D3 - 246
|
|
6510 PRINT "DECEMBER ";D3;" 1847"
|
|
6520 PRINT
|
|
6540 IF B > 0 THEN 6560
|
|
6550 LET B = 0
|
|
6560 IF C > 0 THEN 6580
|
|
6570 LET C = 0
|
|
6580 IF M1 > 0 THEN 6600
|
|
6590 LET M1 = 0
|
|
6600 IF T > 0 THEN 6620
|
|
6610 LET T = 0
|
|
6620 IF F > 0 THEN 6640
|
|
6630 LET F = 0
|
|
6640 VTAB PEEK (37) + 1: PRINT "FOOD BULLETS CLOTHES MISC.SUPP. CASH";: VTAB PEEK (37) + 1
|
|
6650 VP = PEEK (37) + 3: HTAB 2: PRINT F;: HTAB 8: PRINT B;: HTAB 17: PRINT C;: HTAB 26: PRINT M1;: HTAB 38: PRINT T;: VTAB VP: HTAB 1
|
|
6660 PRINT
|
|
6670 INVERSE : PRINT SPC( 40);
|
|
6680 PRINT " PRESIDENT JAMES K. POLK SENDS YOU HIS ";
|
|
6690 PRINT " HEARTIEST CONGRATULATIONS ";
|
|
6700 PRINT " ";
|
|
6710 PRINT " AND WISHES YOU A PROSPEROUS LIFE AHEAD ";
|
|
6720 PRINT " ";
|
|
6730 PRINT " AT YOUR NEW HOME ";
|
|
6740 PRINT SPC( 40): NORMAL
|
|
6750 REM 'STOP' COMMAND BELOW CHANGED TO 'END' BY C.D.P.
|
|
6760 PRINT "RUN COMPLETE.": END
|
|
6770 REM ***SHOOTING SUB-ROUTINE***
|
|
6780 REM THE METHOD OF TIMING THE SHOOTING (LINES 6210-6240)
|
|
6790 REM WILL VARY FROM SYSTEM TO SYSTEM. FOR EXAMPLE, H-P
|
|
6800 REM USERS WILL PROBABLY PREFER TO USE THE 'ENTER' STATEMENT.
|
|
6810 REM IF TIMING ON THE USER'S SYSTEM IS HIGHLY SUSCEPTIBLE
|
|
6820 REM TO SYSTEM RESPONSE TIME, THE FORMULA IN LINE 6240 CAN
|
|
6830 REM BE TAILORED TO ACCOMMODATE THIS BY EITHER INCREASING
|
|
6840 REM OR DECREASING THE 'SHOOTING' TIME RECORDED BY THE SYSTEM
|
|
6850 S6 = INT ( RND (1) * 4 + 1)
|
|
6860 PRINT "TYPE ";S$(S6);"->";
|
|
6870 H = 14:CN = H:C$ = "":B3 = 0: HTAB CN: PRINT "_";
|
|
6880 KEY = PEEK (49152):B3 = B3 + 1: IF KEY < 128 THEN 6880
|
|
6890 POKE 49168,0
|
|
6900 IF KEY = 141 THEN 6956: REM RETURN
|
|
6910 IF KEY = 136 THEN CN = CN - 1: GOTO 6940: REM BACKSPACE
|
|
6920 IF KEY < 161 OR KEY > 254 THEN 6880: REM NOT ALPHA-NUMBERIC
|
|
6930 C$ = C$ + CHR$ (KEY - 128): HTAB CN: PRINT CHR$ (KEY - 128)"_";:CN = CN + 1: GOTO 6880
|
|
6940 IF LEN (C$) < 2 THEN CN = H:C$ = ""
|
|
6950 IF LEN (C$) > 1 THEN C$ = LEFT$ (C$, LEN (C$) - 1)
|
|
6955 HTAB CN: PRINT "_ ";: HTAB CN: GOTO 6880
|
|
6956 B1 = (B3 / 17.5) - (D9 - 1): REM 1ST PARENTHETICAL RESOLVES TO SECONDS
|
|
6960 HTAB CN: PRINT " ";B3 / 17.5: PRINT
|
|
6970 IF B1 > 0 THEN 6990
|
|
6980 B1 = 0
|
|
6990 IF C$ = S$(S6) THEN 7010
|
|
7000 B1 = 9
|
|
7010 RETURN
|
|
7020 REM ***ILLNESS SUB-ROUTINE***
|
|
7030 IF 100 * RND (1) < 10 + 35 * (E - 1) THEN 7110
|
|
7050 IF 100 * RND (1) < 100 - (40 / 4 ^ (E - 1)) THEN 7150
|
|
7060 PRINT "SERIOUS ILLNESS---"
|
|
7070 PRINT "YOU MUST STOP FOR MEDICAL ATTENTION"
|
|
7080 M1 = M1 - 10
|
|
7090 S4 = 1
|
|
7100 GOTO 7180
|
|
7110 PRINT "WILD ILLNESS---MEDICINE USED"
|
|
7120 M = M - 5
|
|
7130 M1 = M1 - 2
|
|
7140 GOTO 7180
|
|
7150 PRINT "BAD ILLNESS---MEDICINE USED"
|
|
7160 M = M - 5
|
|
7170 M1 = M1 - 5
|
|
7180 IF M1 < 0 THEN 5630
|
|
7190 IF L1 = 1 THEN 5450
|
|
7200 GOTO 5190
|
|
7210 REM ***IDENTIFICATION OF VARIABLES IN THE PROGRAM***
|
|
7220 REM A = AMOUNT SPENT ON ANIMALS
|
|
7230 REM B = AMOUNT SPENT ON AMMUNITION
|
|
7240 REM B1 = ACTUAL RESPONSE TIME FOR INPUTTING "BANG"
|
|
7250 REM B3 = CLOCK TIME AT START OF INPUTTING "BANG"
|
|
7260 REM C = AMOUNT SPENT ON CLOTHING
|
|
7270 REM C1 = FLAG FOR INSUFFICIENT CLOTHING IN COLD WEATHER
|
|
7280 REM C$ = YES/N0 RESPONSE TO QUESTIONS
|
|
7290 REM D1 = COUNTER IN GENERATING EVENTS
|
|
7300 REM D3 = TURN NUMBER FOR SETTING DATE
|
|
7310 REM D4 = CURRENT DATE
|
|
7320 REM D9 = CHOICE OF SHOOTING EXPERTISE LEVEL
|
|
7330 REM E = CHOICE OF EATING
|
|
7340 REM F = AMOUNT SPENT ON FOOD
|
|
7350 REM F1 = FLAG FOR CLEARING SOUTH PASS
|
|
7360 REM F2 = FLAG FOR CLEARING BLUE MOUNTAINS
|
|
7370 REM F9 = FRACTION OF 2 WEEKS TRAVELED ON FINAL TURN
|
|
7380 REM K8 = FLAG FOR INJURY
|
|
7390 REM L1 = FLAG FOR BLIZZARD
|
|
7400 REM M = TOTAL MILEAGE WHOLE TRIP
|
|
7410 REM M1 = AMOUNT SPENT ON MISCELLANEOUS SUPPLIES
|
|
7420 REM M2 = TOTAL MILEAGE UP THROUGH PREVIOUS TURN
|
|
7430 REM M9 = FLAG FOR CLEARING SOUTH PASS IN SETTING MILEAGE
|
|
7440 REM P = AMOUNT SPENT ON ITEMS AT FORT
|
|
7450 REM R1 = RANDOM NUMBER IN CHOOSING EVENTS
|
|
7460 REM S4 = FLAG FOR ILLNESS
|
|
7470 REM S5 = ""HOSTILITY OF RIDERS"" FACTOR
|
|
7480 REM S6 = SHOOTING WORD SELECTOR
|
|
7490 REM S$ = VARIATIONS OF SHOOTING WORD
|
|
7500 REM T = CASH LEFT OVER AFTER INITIAL PURCHASES
|
|
7510 REM T1 = CHOICE OF TACTICS WHEN ATTACKED
|
|
7520 REM X = CHOICE OF ACTION FOR EACH TURN
|
|
7530 REM X1 = FLAG FOR FORT OPTION
|
|
7540 REM DLY = DUMMY FOR DELAY LOOPS
|
|
7550 REM QNUM = QUESTION NUMBER FOR TRACKING
|
|
7560 REM VP = VERTICAL POSITION TO TRACK VTABS |