mirror of
https://github.com/rfivet/BCG101.git
synced 2024-12-21 17:46:28 -05:00
374 lines
7.9 KiB
QBasic
374 lines
7.9 KiB
QBasic
|
1 PRINT "THIS IS A DEMONSTRATION OF PDP-11 BASIC"
|
||
|
2 PRINT "IF YOU NEED INSTRUCTIONS FOR PLAYING FOOTBALL, TYPE A 1";
|
||
|
3 INPUT I
|
||
|
4 IF I<>1 THEN 34
|
||
|
5 PRINT
|
||
|
6 PRINT
|
||
|
7 PRINT "WHEN IT ASKS YOU A QUESTION TO BE ANSWERED YES OR"
|
||
|
8 PRINT "NO, TYPE IN 0 FOR NO OR 1 FOR YES."
|
||
|
9 PRINT
|
||
|
10 PRINT "ON OFFENSE YOU HAVE THE FOLLOWING PERMITTED PLAYS:"
|
||
|
11 PRINT "PLAY","CODE"
|
||
|
12 PRINT "RUN","10"
|
||
|
13 PRINT "PASS","11"
|
||
|
14 PRINT "SWEEP","12"
|
||
|
15 PRINT "SCREEN PASS","13"
|
||
|
16 PRINT "LONG PASS","14"
|
||
|
17 PRINT "DRAW PLAY","15"
|
||
|
18 PRINT "PUNT","16"
|
||
|
19 PRINT "FIELDGOAL","17"
|
||
|
20 PRINT
|
||
|
21 PRINT "ON DEFENSE, YOU MAY TRY ONE OF THE FOLLOWING:"
|
||
|
22 PRINT "DEFENSE","CODE"
|
||
|
23 PRINT "NORMAL","4","GOOD AGAINST SWEEP AND SCREEN"
|
||
|
24 PRINT "HOLD","5","GOOD AGAINST RUN, PASS AND DRAW"
|
||
|
25 PRINT "BLITZ","6","GOOD AGAINST PASS OR LONG PASS"
|
||
|
26 PRINT "INTERCEPT","7","INCREASES THE ODDS FOR AN INTERCEPTION"
|
||
|
27 PRINT "BLOCK","8","GIVES YOU A CHANCE TO BLOCK A KICK,"
|
||
|
28 PRINT " "," ","BUT DECREASES THE DISTANCE RUNBACK."
|
||
|
29 PRINT
|
||
|
30 PRINT "TO CALL A PARTICULAR PLAY JUST TYPE ITS CODE NUMBER."
|
||
|
31 PRINT "ALSO, AT ANY TIME DURING PLAY YOU MAY CALL TIME OUT"
|
||
|
32 PRINT "BY TYPING A '2'. HOWEVER YOU ARE PERMITTED ONLY THREE"
|
||
|
33 PRINT "TIMEOUTS PER HALF."
|
||
|
34 PRINT
|
||
|
35 PRINT
|
||
|
36 DEF FNT(X)=SIN(X)/COS(X)
|
||
|
37 DIM R(17)
|
||
|
38 FOR I=0 TO 17
|
||
|
39 READ R(I)
|
||
|
40 NEXT I
|
||
|
41 DATA 9,13,100,0,9,10,12,11,12,0,1,5,3,4,6,2,8,7
|
||
|
42 RANDOMIZE
|
||
|
43 LET F=0
|
||
|
44 LET Z3=0
|
||
|
45 LET O=0
|
||
|
46 LET L=0
|
||
|
47 DIM Z(5,3),P(2),D(2,5)
|
||
|
48 FOR A=0 TO 5
|
||
|
49 FOR B=0 TO 2
|
||
|
50 READ Z(A,B),D(B,A)\LET P(B)=0
|
||
|
51 NEXT B
|
||
|
52 READ Z(A,3)
|
||
|
53 NEXT A
|
||
|
54 PRINT "DO YOU WANT TO RECEIVE";
|
||
|
55 LET X=1
|
||
|
56 GOSUB 361
|
||
|
57 LET S=2-SGN(13-Q)
|
||
|
58 LET K=S
|
||
|
59 LET T1=120
|
||
|
60 LET U2=3
|
||
|
61 LET U=3
|
||
|
62 LET C=900
|
||
|
63 GOSUB 225
|
||
|
64 LET F1=50
|
||
|
65 LET B=INT(F1+O*20*RND(0)+(1-O)*29*(2-RND(0)^7-RND(0)^(3-Z2)))
|
||
|
66 LET O=0
|
||
|
67 LET Z9=8
|
||
|
68 GOSUB 149
|
||
|
69 LET L=0
|
||
|
70 IF B<=99 THEN 234
|
||
|
71 PRINT "A TOUCHBACK"
|
||
|
72 LET B=20
|
||
|
73 LET L=0
|
||
|
74 IF S=2 THEN 77
|
||
|
75 PRINT "MY ";
|
||
|
76 GOTO 78
|
||
|
77 PRINT "YOUR ";
|
||
|
78 GOSUB 329
|
||
|
79 GOSUB 298
|
||
|
80 LET D=1
|
||
|
81 LET F2=.03
|
||
|
82 LET O=0
|
||
|
83 IF C<=0 THEN 277
|
||
|
84 GOSUB 253
|
||
|
85 LET Z2=1
|
||
|
86 LET Z3=.3
|
||
|
87 IF C<=F*T1 THEN 292
|
||
|
88 IF C<=0 THEN 277
|
||
|
89 IF L=0 THEN 91
|
||
|
90 PRINT "TIME TO GO--";
|
||
|
91 PRINT INT(C/60);"MIN.";C-60*INT(C/60);"SEC. ";
|
||
|
92 PRINT "YOUR PLAY";
|
||
|
93 GOSUB 361
|
||
|
94 IF S=1 THEN 98
|
||
|
95 IF Q>8 THEN 92
|
||
|
96 LET M=Q
|
||
|
97 GOTO 100
|
||
|
98 LET Y=Q-8
|
||
|
99 IF ABS(Q-10.5)^2>3 THEN 92
|
||
|
100 LET C=INT(C-L*(5+23*RND(X)))
|
||
|
101 LET L=1
|
||
|
102 IF M=7 THEN 176
|
||
|
103 IF M=8 THEN 192
|
||
|
104 LET Y1=Y-1
|
||
|
105 IF RND(X)>Z(M-1,Y1) THEN 124
|
||
|
106 LET A=2
|
||
|
107 GOSUB 302
|
||
|
108 IF M<4 THEN 111
|
||
|
109 PRINT "PASS COMPLETE..";
|
||
|
110 LET L=SGN(INT(4*RND(0)))
|
||
|
111 IF RND(X)<F2 THEN 251
|
||
|
112 IF G>0 THEN 121
|
||
|
113 IF G=0 THEN 117
|
||
|
114 IF G+B<1 THEN 217
|
||
|
115 PRINT "LOSS OF";-G;
|
||
|
116 GOTO 161
|
||
|
117 PRINT "NO GAIN"
|
||
|
118 LET Z9=2
|
||
|
119 GOSUB 149
|
||
|
120 GOTO 167
|
||
|
121 IF B+G>99 THEN 165
|
||
|
122 PRINT "GAIN OF";G;
|
||
|
123 GOTO 161
|
||
|
124 IF M>3 THEN 128
|
||
|
125 LET A=1
|
||
|
126 GOSUB 302
|
||
|
127 GOTO 112
|
||
|
128 IF RND(X)<.06*(2-SGN(Y-3)) THEN 136
|
||
|
129 IF RND(0)<.05+INT(Y/3.5)/5 THEN 151
|
||
|
130 LET Z9=6
|
||
|
131 GOSUB 149
|
||
|
132 PRINT "PASS INCOMPLETE"
|
||
|
133 LET L=0
|
||
|
134 LET G=0
|
||
|
135 GOTO 312
|
||
|
136 PRINT "PASS **INTERCEPTED**";
|
||
|
137 LET A=1
|
||
|
138 GOSUB 302
|
||
|
139 IF B<40 THEN 141
|
||
|
140 LET G=20*(1+SGN(G))
|
||
|
141 LET B=100-B-G
|
||
|
142 LET S=3-S
|
||
|
143 LET Z9=9
|
||
|
144 GOSUB 149
|
||
|
145 IF B<1 THEN 71
|
||
|
146 IF B>99 THEN 165
|
||
|
147 PRINT "AT ";
|
||
|
148 GOTO 236
|
||
|
149 LET C=C-INT(4+Z9/2*(1+RND(0)))
|
||
|
150 RETURN
|
||
|
151 LET G=-(5+INT(10*RND(X)))
|
||
|
152 PRINT "THE QUATERBACK ";
|
||
|
153 IF RND(X)>.5 THEN 156
|
||
|
154 PRINT "IS THROWN FOR A ";
|
||
|
155 GOTO 111
|
||
|
156 LET G=-(2*G+8)
|
||
|
157 LET M=5
|
||
|
158 LET A=1
|
||
|
159 PRINT "SCRAMBLES FOR A ";
|
||
|
160 GOTO 111
|
||
|
161 LET B=B+G
|
||
|
162 PRINT "TO ";
|
||
|
163 GOSUB 330
|
||
|
164 IF B<=99 THEN 167
|
||
|
165 GOSUB 199
|
||
|
166 GOTO 63
|
||
|
167 IF B1>B THEN 312
|
||
|
168 IF B1<B THEN 173
|
||
|
169 IF RND(0)>.5 THEN 173
|
||
|
170 PRINT "**MEASUREMENT**"
|
||
|
171 GOSUB 352
|
||
|
172 IF RND(X)<.5 THEN 312
|
||
|
173 GOSUB 298
|
||
|
174 LET D=0
|
||
|
175 GOTO 312
|
||
|
176 IF RND(X)<.06 THEN 189
|
||
|
177 LET B=B+30+INT(15*(1-RND(X)^3))
|
||
|
178 LET Z9=2
|
||
|
179 GOSUB 149
|
||
|
180 IF B<=99 THEN 185
|
||
|
181 LET P1=3
|
||
|
182 GOSUB 203
|
||
|
183 IF P1=0 THEN 71
|
||
|
184 GOTO 63
|
||
|
185 PRINT "THE KICK IS ";
|
||
|
186 LET Z2=0
|
||
|
187 LET S=3-S
|
||
|
188 GOTO 234
|
||
|
189 PRINT "**BLOCKED** RECOVERED..";
|
||
|
190 LET G=-INT(14*RND(X))
|
||
|
191 GOTO 141
|
||
|
192 PRINT "THE PUNT IS ";
|
||
|
193 IF RND(X)<.06 THEN 189
|
||
|
194 LET F1=B
|
||
|
195 LET Z2=1
|
||
|
196 LET S=3-S
|
||
|
197 LET Z3=.65
|
||
|
198 GOTO 65
|
||
|
199 PRINT "** TOUCHDOWN**"
|
||
|
200 LET P1=1
|
||
|
201 LET P(S)=P(S)+6
|
||
|
202 LET B=130
|
||
|
203 PRINT "THE KICK IS ";
|
||
|
204 IF RND(X)<(B/132)^4 THEN 207
|
||
|
205 LET P1=0
|
||
|
206 PRINT "NO ";
|
||
|
207 PRINT "GOOD"
|
||
|
208 LET P(S)=P(S)+P1
|
||
|
209 GOSUB 212
|
||
|
210 LET S=3-S
|
||
|
211 RETURN
|
||
|
212 PRINT "SCORE: ME";P(1);" YOU";P(2)
|
||
|
213 LET L=0
|
||
|
214 IF X<5 THEN 216
|
||
|
215 IF P(1)<>P(2) THEN 277
|
||
|
216 RETURN
|
||
|
217 PRINT "**SAFETY**"
|
||
|
218 LET P(3-S)=P(3-S)+2
|
||
|
219 LET F1=30
|
||
|
220 LET S=3-S
|
||
|
221 GOSUB 212
|
||
|
222 GOSUB 344
|
||
|
223 PRINT "FROM THE 20"
|
||
|
224 GOTO 65
|
||
|
225 GOSUB 344
|
||
|
226 IF S=2 THEN 233
|
||
|
227 PRINT "ON-SIDE";
|
||
|
228 GOSUB 361
|
||
|
229 IF Q<>13 THEN 233
|
||
|
230 LET F2=.15
|
||
|
231 LET Z2=1
|
||
|
232 LET O=1
|
||
|
233 RETURN
|
||
|
234 LET B=100-B
|
||
|
235 PRINT "RECEIVED AT ";
|
||
|
236 GOSUB 330
|
||
|
237 IF Z2*RND(X)>Z3 THEN 249
|
||
|
238 IF RND(X)<F2 THEN 250
|
||
|
239 LET G=5+INT(100*RND(0))
|
||
|
240 IF RND(0)<.15 THEN 243
|
||
|
241 LET G=INT(24*(1-RND(X)^2))
|
||
|
242 IF G=0 THEN 249
|
||
|
243 LET B=8+G
|
||
|
244 PRINT " AND RUN BACK...";
|
||
|
245 LET L=1
|
||
|
246 IF B>99 THEN 165
|
||
|
247 PRINT " TO ";
|
||
|
248 GOSUB 330
|
||
|
249 IF RND(0)>F2 THEN 326
|
||
|
250 LET G=0
|
||
|
251 PRINT "**FUMBLE**";
|
||
|
252 GOTO 141
|
||
|
253 IF S=1 THEN 256
|
||
|
254 LET Y=INT(1+3.5*RND(0))
|
||
|
255 RETURN
|
||
|
256 LET M=INT(55*RND(0)/10.5)+1
|
||
|
257 IF (B1-B)/(5-D)<3 THEN 259
|
||
|
258 LET M=INT(6-4*RND(0)^2)
|
||
|
259 IF L*F*60>=C THEN 267
|
||
|
260 IF D<4 THEN 255
|
||
|
261 PRINT "I'LL ";
|
||
|
262 IF B<55 THEN 272
|
||
|
263 IF 0<4*RND(0)-B1+B THEN 275
|
||
|
264 PRINT "TRY FOR A FIELD GOAL"
|
||
|
265 LET M=7
|
||
|
266 RETURN
|
||
|
267 IF P(2)*U2<=P(1)*U2 THEN 260
|
||
|
268 PRINT "TIME OUT"
|
||
|
269 LET U2=U2-1
|
||
|
270 GOSUB 352
|
||
|
271 GOTO 260
|
||
|
272 PRINT "PUNT"
|
||
|
273 LET M=8
|
||
|
274 RETURN
|
||
|
275 PRINT "GO FOR IT"
|
||
|
276 RETURN
|
||
|
277 IF X<4 THEN 283
|
||
|
278 IF P(1)=P(2) THEN 283
|
||
|
279 PRINT "THE GAME IS OVER"
|
||
|
280 PRINT "FINAL ";
|
||
|
281 GOSUB 212
|
||
|
282 STOP
|
||
|
283 PRINT "END OF PERIOD";X
|
||
|
284 GOSUB 212
|
||
|
285 LET F=1-F
|
||
|
286 GOSUB 352
|
||
|
287 LET C=900
|
||
|
288 LET X=X+1
|
||
|
289 IF F<>0 THEN 81
|
||
|
290 LET S=3-K
|
||
|
291 GOTO 58
|
||
|
292 IF T1=0 THEN 277
|
||
|
293 PRINT "2 MINUTE WARNING"
|
||
|
294 GOSUB 352
|
||
|
295 LET T1=0
|
||
|
296 LET C=120
|
||
|
297 GOTO 88
|
||
|
298 LET B1=B+10
|
||
|
299 IF B1<=100 THEN 301
|
||
|
300 LET B1=100
|
||
|
301 RETURN
|
||
|
302 LET Q=1.3*(A*RND(0)-1)-.06
|
||
|
303 LET A=1
|
||
|
304 IF Q>=0 THEN 307
|
||
|
305 LET A=0
|
||
|
306 LET Q=-Q
|
||
|
307 LET M1=M-1
|
||
|
308 LET G=D(A,M1)+FNT(Q)*(D(2,M1)-D(A,M1))/3.5
|
||
|
309 LET G=G+INT(RND(0)+.02)*A*100*RND(0)
|
||
|
310 LET G=INT(G)
|
||
|
311 RETURN
|
||
|
312 LET D=D+1
|
||
|
313 IF D=5 THEN 324
|
||
|
314 IF D<> 1 THEN 316
|
||
|
315 PRINT "1ST";
|
||
|
316 IF D<>2 THEN 318
|
||
|
317 PRINT "2ND";
|
||
|
318 IF D<>3 THEN 320
|
||
|
319 PRINT "3RD";
|
||
|
320 IF D<4 THEN 322
|
||
|
321 PRINT "4TH";
|
||
|
322 PRINT " AND";B1-B;" ";
|
||
|
323 GOTO 81
|
||
|
324 LET S=3-S
|
||
|
325 LET B=100-B
|
||
|
326 IF S=2 THEN 77
|
||
|
327 PRINT "MY ";
|
||
|
328 GOTO 78
|
||
|
329 PRINT "BALL ON ";
|
||
|
330 IF B=50 THEN 340
|
||
|
331 LET V=50-ABS(B-50)
|
||
|
332 LET C=C-INT(7+3*RND(0))
|
||
|
333 IF S=1 THEN 342
|
||
|
334 IF B<50 THEN 337
|
||
|
335 PRINT "MY ";
|
||
|
336 GOTO 338
|
||
|
337 PRINT "YOUR ";
|
||
|
338 PRINT V
|
||
|
339 RETURN
|
||
|
340 PRINT "THE 50"
|
||
|
341 RETURN
|
||
|
342 IF B<50 THEN 335
|
||
|
343 GOTO 337
|
||
|
344 IF S=2 THEN 347
|
||
|
345 PRINT "YOU";
|
||
|
346 GOTO 348
|
||
|
347 PRINT "I";
|
||
|
348 PRINT " KICK OFF."
|
||
|
349 LET F2=.06
|
||
|
350 LET Z2=0
|
||
|
351 RETURN
|
||
|
352 LET L=0
|
||
|
353 PRINT "TIMEOUT CALLED..."
|
||
|
354 PRINT
|
||
|
355 RETURN
|
||
|
356 IF U=0 THEN 360
|
||
|
357 LET U=U-1
|
||
|
358 GOSUB 352
|
||
|
359 GOTO 361
|
||
|
360 PRINT "..WRONG, TRY AGAIN"
|
||
|
361 INPUT A
|
||
|
362 IF ABS(INT(A))>17 THEN 360
|
||
|
363 LET Q=R(INT(ABS(A)))
|
||
|
364 IF Q=0 THEN 360
|
||
|
365 IF Q=100 THEN 356
|
||
|
366 RETURN
|
||
|
367 DATA .5,-2,.25,4,.5,13,.55
|
||
|
368 DATA .4,-2,.3,7,.65,15,.75
|
||
|
369 DATA .4,-2,.3,6,.6,15,.35
|
||
|
370 DATA .65,-2,.65,6,.6,17,.9
|
||
|
371 DATA .4,2,.7,10,.4,27,.2
|
||
|
372 DATA .1,19,.4,35,.2,100,.1
|
||
|
373 END
|