-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathslalom.bas
165 lines (165 loc) · 4.69 KB
/
slalom.bas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
10 PRINT TAB(33);"SLALOM"
20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
30 PRINT:PRINT:PRINT
310 PRINT "HOW MANY GATES DOES THIS COURSE HAVE (1 TO 25)";
320 INPUT V
330 IF V>25 THEN 360
340 IF V<1 THEN 390
350 GOTO 1440
360 PRINT "25 IS THE LIMIT."
370 LET V=25
380 GOTO 1440
390 PRINT "TRY AGAIN,"
400 GOTO 310
410 PRINT "RATE YOURSELF AS A SKIER, (1=WORST, 3=BEST)";
420 INPUT A
430 IF A<1 THEN 460
440 IF A>3 THEN 460
450 GOTO 480
460 PRINT "THE BOUNDS ARE 1-3"
470 GOTO 410
480 PRINT"THE STARTER COUNTS DOWN...5...4...3...2...1...GO!";
490 REM
500 LET T=0
510 LET S=INT(RND(1)*(18-9)+9)
520 PRINT
525 PRINT "YOU'RE OFF!"
530 FOR O=1 TO V
540 READ Q
550 PRINT
555 PRINT "HERE COMES GATE #";STR$(O);":"
560 PRINT S;"M.P.H."
570 LET S1=S
580 PRINT "OPTION";
590 INPUT O1
600 IF O1=0 THEN 970
610 IF O1>8 THEN 1420
620 IF O1<1 THEN 1420
630 GOSUB 990
640 IF S<7 THEN 1390
650 LET T=T+(Q-S+1)
660 IF S>Q THEN 1630
670 NEXT O
680 PRINT:PRINT "YOU TOOK";(T+RND(1));"SECONDS."
690 LET M=T
700 LET M=M/V
710 IF M<1.5-(A*.1) THEN 1650
720 IF M<2.9-(A*.1) THEN 1680
730 IF M<4.4-(A*.01) THEN 1710
740 PRINT:PRINT "DO YOU WANT TO RACE AGAIN";
750 INPUT B$
760 REM
770 IF B$="NO" THEN 1740
780 IF B$="YES" THEN 480
790 PRINT "PLEASE TYPE 'YES' OR 'NO'"
800 GOTO 740
810 STOP
820 PRINT
825 PRINT "*** SLALOM: THIS IS THE 1976 WINTER OLYMPIC GIANT SLALOM. YOU ARE"
830 PRINT " THE AMERICAN TEAM'S ONLY HOPE OF A GOLD MEDAL."
840 PRINT
845 PRINT " 0 -- TYPE THIS IS YOU WANT TO SEE HOW LONG YOU'VE TAKEN."
850 PRINT " 1 -- TYPE THIS IF YOU WANT TO SPEED UP A LOT."
860 PRINT " 2 -- TYPE THIS IF YOU WANT TO SPEED UP A LITTLE."
870 PRINT " 3 -- TYPE THIS IF YOU WANT TO SPEED UP A TEENSY."
880 PRINT " 4 -- TYPE THIS IF YOU WANT TO KEEP GOING THE SAME SPEED."
890 PRINT " 5 -- TYPE THIS IF YOU WANT TO CHECK A TEENSY."
900 PRINT " 6 -- TYPE THIS IF YOU WANT TO CHECK A LITTLE."
910 PRINT " 7 -- TYPE THIS IF YOU WANT TO CHECK A LOT."
920 PRINT " 8 -- TYPE THIS IF YOU WANT TO CHEAT AND TRY TO SKIP A GATE."
930 PRINT
935 PRINT " THE PLACE TO USE THESE OPTIONS IS WHEN THE COMPUTER ASKS:"
940 PRINT
945 PRINT "OPTION?"
950 PRINT
955 PRINT " GOOD LUCK!"
957 PRINT
960 GOTO 1470
970 PRINT "YOU'VE TAKEN";(T+RND(1));"SECONDS."
980 GOTO 580
990 ON O1 GOTO 1130,1010,1170,1080,1190,1100,1150,1210
1000 STOP
1010 LET S=S+INT(RND(1)*(5-3)+3)
1020 PRINT S;"M.P.H."
1030 IF S>Q THEN 1290
1040 IF S>Q-1 THEN 1060
1050 RETURN
1060 PRINT "CLOSE ONE!"
1070 RETURN
1080 PRINT S;"M.P.H."
1090 GOTO 1030
1100 LET S=S-INT(RND(1)*(5-3)+3)
1110 PRINT S;"M.P.H."
1120 GOTO 1030
1130 LET S=S+INT(RND(1)*(10-5)+5)
1140 GOTO 1080
1150 LET S=S-INT(RND(1)*(10-5)+5)
1160 GOTO 1110
1170 LET S=S+INT(RND(1)*(4-1)+1)
1180 GOTO 1110
1190 LET S=S-INT(RND(1)*(4-1)+1)
1200 GOTO 1110
1210 PRINT "***CHEAT"
1220 IF RND(1)<.7 THEN 1260
1230 PRINT "YOU MADE IT!"
1240 LET T=T+1.5
1250 RETURN
1260 PRINT "AN OFFICIAL CAUGHT YOU!"
1270 PRINT "YOU TOOK";(T+RND(1));"SECONDS."
1280 GOTO 740
1290 IF RND(1)<((S-Q)*.1)+.2 THEN 1320
1300 PRINT "YOU WENT OVER THE MAXIMUM SPEED AND MADE IT!"
1310 RETURN
1320 PRINT "YOU WENT OVER THE MAXIMUM SPEED AND ";
1330 IF RND(1)<.5 THEN 1370
1340 PRINT "WIPED OUT!"
1350 PRINT "YOU TOOK";(T+RND(1));"SECONDS"
1360 GOTO 740
1370 PRINT "SNAGGED A FLAG!"
1380 GOTO 1350
1390 PRINT "LET'S BE REALISTIC, OK? LET'S GO BACK AND TRY AGAIN..."
1400 LET S=S1
1410 GOTO 550
1420 PRINT "WHAT?"
1430 GOTO 580
1440 PRINT
1445 PRINT "TYPE ";CHR$(34);"INS";CHR$(34);" FOR INSTRUCTIONS"
1450 PRINT "TYPE ";CHR$(34);"MAX";CHR$(34);" FOR APPROXIMATE MAXIMUM SPEEDS"
1460 PRINT "TYPE ";CHR$(34);"RUN";CHR$(34);" FOR THE BEGINNING OF THE RACE"
1470 PRINT "COMMAND--";
1480 INPUT A$
1490 REM
1500 IF A$="INS" THEN 820
1510 IF A$="MAX" THEN 1550
1520 IF A$="RUN" THEN 410
1530 PRINT CHR$(34);A$;CHR$(34);" IS AN ILLEGAL COMMAND--RETRY";
1540 GOTO 1480
1550 PRINT "GATE MAX"
1560 PRINT " # M.P.H."
1570 PRINT"----------"
1580 FOR B=1 TO V
1590 READ Q
1600 PRINT B;" ";Q
1610 NEXT B
1620 GOTO 1470
1630 LET T=T+.5
1640 GOTO 670
1650 PRINT "YOU WON A GOLD MEDAL!"
1660 LET G(1)=G(1)+1
1670 GOTO 1730
1680 PRINT "YOU WON A SILVER MEDAL"
1690 LET S(1)=S(1)+1
1700 GOTO 1730
1710 PRINT "YOU WON A BRONZE MEDAL"
1720 LET B(1)=B(1)+1
1730 GOTO 740
1740 PRINT "THANKS FOR THE RACE"
1750 IF G(1)<1 THEN 1770
1760 PRINT "GOLD MEDALS:";G(1)
1770 IF S(1)<1 THEN 1790
1780 PRINT "SILVER MEDALS:";S(1)
1790 IF B(1)<1 THEN 1830
1800 PRINT "BRONZE MEDALS:";B(1)
1810 DATA 14,18,26,29,18,25,28,32,29,20,29,29,25,21,26,29,20,21,20
1820 DATA 18,26,25,33,31,22
1830 END