home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / cpmug / cpmug054.ark / FOOTBL.BAS < prev    next >
Encoding:
BASIC Source File  |  1984-04-29  |  8.3 KB  |  375 lines

  1. 10 PRINT "THIS IS A DEMONSTRATION OF PDP-11 BASIC"
  2. 20 PRINT "IF YOU NEED INSTRUCTIONS FOR PLAYING FOOTBALL, TYPE A 1";
  3. 30 INPUT I
  4. 40 IF I<>1 THEN 340
  5. 50 PRINT
  6. 60 PRINT
  7. 70 PRINT "WHEN IT ASKS YOU A QUESTION TO BE ANSWERED YES OR"
  8. 80 PRINT "NO, TYPE IN 0 FOR NO OR 1 FOR YES."
  9. 90 PRINT
  10. 100 PRINT "ON OFFENSE YOU HAVE THE FOLLOWING PERMITTED PLAYS:"
  11. 110 PRINT "PLAY","CODE"
  12. 120 PRINT "RUN","10"
  13. 130 PRINT "PASS","11"
  14. 140 PRINT "SWEEP","12"
  15. 150 PRINT "SCREEN PASS","13"
  16. 160 PRINT "LONG PASS","14"
  17. 170 PRINT "DRAW PLAY","15"
  18. 180 PRINT "PUNT","16"
  19. 190 PRINT "FIELDGOAL","17"
  20. 200 PRINT
  21. 210 PRINT "ON DEFENSE, YOU MAY TRY ONE OF THE FOLLOWING:"
  22. 220 PRINT "DEFENSE","CODE"
  23. 230 PRINT "NORMAL","4","GOOD AGAINST SWEEP AND SCREEN"
  24. 240 PRINT "HOLD","5","GOOD AGAINST RUN, PASS AND DRAW"
  25. 250 PRINT "BLITZ","6","GOOD AGAINST PASS OR LONG PASS"
  26. 260 PRINT "INTERCEPT","7","INCREASES THE ODDS FOR AN INTERCEPTION"
  27. 270 PRINT "BLOCK","8","GIVES YOU A CHANCE TO BLOCK A KICK,"
  28. 280 PRINT " "," ","BUT DECREASES THE DISTANCE RUNBACK."
  29. 290 PRINT
  30. 300 PRINT "TO CALL A PARTICULAR PLAY JUST TYPE ITS CODE NUMBER."
  31. 310 PRINT "ALSO, AT ANY TIME DURING PLAY YOU MAY CALL TIME OUT"
  32. 320 PRINT "BY TYPING A '2'.  HOWEVER YOU ARE PERMITTED ONLY THREE"
  33. 330 PRINT "TIMEOUTS PER HALF."
  34. 340 PRINT
  35. 350 PRINT
  36. 360 DEF FNT(X)=SIN(X)/COS(X)
  37. 370 DIM R(17)
  38. 380 FOR I=0 TO 17
  39. 390 READ R(I)
  40. 400 NEXT I
  41. 410 DATA 9,13,100,0,9,10,12,11,12,0,1,5,3,4,6,2,8,7
  42. 420 RANDOMIZE
  43. 430 LET F=0
  44. 440 LET Z3=0
  45. 450 LET O=0
  46. 460 LET L=0
  47. 470 DIM Z(5,3),P(2),D(2,5)
  48. 480 FOR A=0 TO 5
  49. 490 FOR B=0 TO 2
  50. 500 READ Z(A,B),D(B,A)
  51. 505 LET P(B)=0
  52. 510 NEXT B
  53. 520 READ Z(A,3)
  54. 530 NEXT A
  55. 540 PRINT "DO YOU WANT TO RECEIVE";
  56. 550 LET X=1
  57. 560 GOSUB 3610
  58. 570 LET S=2-SGN(13-Q)
  59. 580 LET K=S
  60. 590 LET T1=120
  61. 600 LET U2=3
  62. 610 LET U=3
  63. 620 LET C=900
  64. 630 GOSUB 2250
  65. 640 LET F1=50
  66. 650 LET B=INT(F1+O*20*RND(0)+(1-O)*29*(2-RND(0)^7-RND(0)^(3-Z2)))
  67. 660 LET O=0
  68. 670 LET Z9=8
  69. 680 GOSUB 1490
  70. 690 LET L=0
  71. 700 IF B<=99 THEN 2340
  72. 710 PRINT "A  TOUCHBACK"
  73. 720 LET B=20
  74. 730 LET L=0
  75. 740 IF S=2 THEN 770
  76. 750 PRINT "MY ";
  77. 760 GOTO 780
  78. 770 PRINT "YOUR ";
  79. 780 GOSUB 3290
  80. 790 GOSUB 2980
  81. 800 LET D=1
  82. 810 LET F2=.03
  83. 820 LET O=0
  84. 830 IF C<=0 THEN 2770
  85. 840 GOSUB 2530
  86. 850 LET Z2=1
  87. 860 LET Z3=.3
  88. 870 IF C<=F*T1 THEN 2920
  89. 880 IF C<=0 THEN 2770
  90. 890 IF L=0 THEN 910
  91. 900 PRINT "TIME TO GO--";
  92. 910 PRINT INT(C/60);"MIN,";C-60*INT(C/60);"SEC.  ";
  93. 920 PRINT "YOUR PLAY";
  94. 930 GOSUB 3610
  95. 940 IF S=1 THEN 980
  96. 950 IF Q>8 THEN 920
  97. 960 LET M=Q
  98. 970 GOTO 1000
  99. 980 LET Y=Q-8
  100. 990 IF ABS(Q-10.5)^2>3 THEN 920
  101. 1000 LET C=INT(C-L*(5+23*RND(X)))
  102. 1010 LET L=1
  103. 1020 IF M=7 THEN 1760
  104. 1030 IF M=8 THEN 1920
  105. 1040 LET Y1=Y-1
  106. 1050 IF RND(X)>Z(M-1,Y1) THEN 1240
  107. 1060 LET A=2
  108. 1070 GOSUB 3020
  109. 1080 IF M<4 THEN 1110
  110. 1090 PRINT "PASS COMPLETE..";
  111. 1100 LET L=SGN(INT(4*RND(0)))
  112. 1110 IF RND(X)<F2 THEN 2510
  113. 1120 IF G>0 THEN 1210
  114. 1130 IF G=0 THEN 1170
  115. 1140 IF G+B<1 THEN 2170
  116. 1150 PRINT "LOSS OF";-G;
  117. 1160 GOTO 1610
  118. 1170 PRINT "NO GAIN"
  119. 1180 LET Z9=2
  120. 1190 GOSUB 1490
  121. 1200 GOTO 1670
  122. 1210 IF B+G>99 THEN 1650
  123. 1220 PRINT "GAIN OF";G;
  124. 1230 GOTO 1610
  125. 1240 IF M>3 THEN 1280
  126. 1250 LET A=1
  127. 1260 GOSUB 3020
  128. 1270 GOTO 1120
  129. 1280 IF RND(X)<.06*(2-SGN(Y-3)) THEN 1360
  130. 1290 IF RND(0)<.05+INT(Y/3.5)/5 THEN 1510
  131. 1300 LET Z9=6
  132. 1310 GOSUB 1490
  133. 1320 PRINT "PASS INCOMPLETE"
  134. 1330 LET L=0
  135. 1340 LET G=0
  136. 1350 GOTO 3120
  137. 1360 PRINT "PASS **INTERCEPTED**";
  138. 1370 LET A=1
  139. 1380 GOSUB 3020
  140. 1390 IF B<40 THEN 1410
  141. 1400 LET G=20*(1+SGN(G))
  142. 1410 LET B=100-B-G
  143. 1420 LET S=3-S
  144. 1430 LET Z9=9
  145. 1440 GOSUB 1490
  146. 1450 IF B<1 THEN 710
  147. 1460 IF B>99 THEN 1650
  148. 1470 PRINT "AT ";
  149. 1480 GOTO 2360
  150. 1490 LET C=C-INT(4+Z9/2*(1+RND(0)))
  151. 1500 RETURN
  152. 1510 LET G=-(5+INT(10*RND(X)))
  153. 1520 PRINT "THE QUARTERBACK ";
  154. 1530 IF RND(X)>.5 THEN 1560
  155. 1540 PRINT "IS THROWN FOR A ";
  156. 1550 GOTO 1110
  157. 1560 LET G=-(2*G+8)
  158. 1570 LET M=5
  159. 1580 LET A=1
  160. 1590 PRINT "SCRAMBLES FOR A ";
  161. 1600 GOTO 1110
  162. 1610 LET B=B+G
  163. 1620 PRINT "TO ";
  164. 1630 GOSUB 3300
  165. 1640 IF B<=99 THEN 1670
  166. 1650 GOSUB 1990
  167. 1660 GOTO 630
  168. 1670 IF B1>B THEN 3120
  169. 1680 IF B1<B THEN 1730
  170. 1690 IF RND(0)>.5 THEN 1730
  171. 1700 PRINT "**MEASUREMENT**"
  172. 1710 GOSUB 3520
  173. 1720 IF RND(X)<.5 THEN 3120
  174. 1730 GOSUB 2980
  175. 1740 LET D=0
  176. 1750 GOTO 3120
  177. 1760 IF RND(X)<.06 THEN 1890
  178. 1770 LET B=B+30+INT(15*(1-RND(X)^3))
  179. 1780 LET Z9=2
  180. 1790 GOSUB 1490
  181. 1800 IF B<=99 THEN 1850
  182. 1810 LET P1=3
  183. 1820 GOSUB 2030
  184. 1830 IF P1=0 THEN 710
  185. 1840 GOTO 630
  186. 1850 PRINT "THE KICK IS ";
  187. 1860 LET Z2=0
  188. 1870 LET S=3-S
  189. 1880 GOTO 2340
  190. 1890 PRINT "**BLOCKED** RECOVERED..";
  191. 1900 LET G=-INT(14*RND(X))
  192. 1910 GOTO 1410
  193. 1920 PRINT "THE PUNT IS ";
  194. 1930 IF RND(X)<.06 THEN 1890
  195. 1940 LET F1=B
  196. 1950 LET Z2=1
  197. 1960 LET S=3-S
  198. 1970 LET Z3=.65
  199. 1980 GOTO 650
  200. 1990 PRINT "** TOUCHDOWN**"
  201. 2000 LET P1=1
  202. 2010 LET P(S)=P(S)+6
  203. 2020 LET B=130
  204. 2030 PRINT "THE KICK IS ";
  205. 2040 IF RND(X)<(B/132)^4 THEN 2070
  206. 2050 LET P1=0
  207. 2060 PRINT "NO ";
  208. 2070 PRINT "GOOD"
  209. 2080 LET P(S)=P(S)+P1
  210. 2090 GOSUB 2120
  211. 2100 LET S=3-S
  212. 2110 RETURN
  213. 2120 PRINT "SCORE: ME";P(1);" YOU";P(2)
  214. 2130 LET L=0
  215. 2140 IF X<5 THEN 2160
  216. 2150 IF P(1)<>P(2) THEN 2770
  217. 2160 RETURN
  218. 2170 PRINT "**SAFETY**"
  219. 2180 LET P(3-S)=P(3-S)+2
  220. 2190 LET F1=30
  221. 2200 LET S=3-S
  222. 2210 GOSUB 2120
  223. 2220 GOSUB 3440
  224. 2230 PRINT "FROM THE 20"
  225. 2240 GOTO 650
  226. 2250 GOSUB 3440
  227. 2260 IF S=2 THEN 2330
  228. 2270 PRINT "ON-SIDE";
  229. 2280 GOSUB 3610
  230. 2290 IF Q<>13 THEN 2330
  231. 2300 LET F2=.15
  232. 2310 LET Z2=1
  233. 2320 LET O=1
  234. 2330 RETURN
  235. 2340 LET B=100-B
  236. 2350 PRINT "RECEIVED AT ";
  237. 2360 GOSUB 3300
  238. 2370 IF Z2*RND(X)>Z3 THEN 2490
  239. 2380 IF RND(X)<F2 THEN 2500
  240. 2390 LET G=5+INT(100*RND(0))
  241. 2400 IF RND(0)<.15 THEN 2430
  242. 2410 LET G=INT(24*(1-RND(X)^2))
  243. 2420 IF G=0 THEN 2490
  244. 2430 LET B=B+G
  245. 2440 PRINT " AND RUN BACK...";
  246. 2450 LET L=1
  247. 2460 IF B>99 THEN 1650
  248. 2470 PRINT " TO ";
  249. 2480 GOSUB 3300
  250. 2490 IF RND(0)>F2 THEN 3260
  251. 2500 LET G=0
  252. 2510 PRINT "**FUMBLE**";
  253. 2520 GOTO 1410
  254. 2530 IF S=1 THEN 2560
  255. 2540 LET Y=INT(1+3.5*RND(0))
  256. 2550 RETURN
  257. 2560 LET M=INT(55*RND(0)/10.5)+1
  258. 2570 IF (B1-B)/(5-D)<3 THEN 2590
  259. 2580 LET M=INT(6-4*RND(0)^2)
  260. 2590 IF L*F*60>=C THEN 2670
  261. 2600 IF D<4 THEN 2550
  262. 2610 PRINT "I'LL ";
  263. 2620 IF B<55 THEN 2720
  264. 2630 IF 0<4*RND(0)-B1+B THEN 2750
  265. 2640 PRINT "TRY FOR A FIELD GOAL"
  266. 2650 LET M=7
  267. 2660 RETURN
  268. 2670 IF P(2)*U2<=P(1)*U2 THEN 2600
  269. 2680 PRINT "TIME OUT"
  270. 2690 LET U2=U2-1
  271. 2700 GOSUB 3520
  272. 2710 GOTO 2600
  273. 2720 PRINT "PUNT"
  274. 2730 LET M=8
  275. 2740 RETURN
  276. 2750 PRINT "GO FOR IT"
  277. 2760 RETURN
  278. 2770 IF X<4 THEN 2830
  279. 2780 IF P(1)=P(2) THEN 2830
  280. 2790 PRINT "THE GAME IS OVER"
  281. 2800 PRINT "FINAL ";
  282. 2810 GOSUB 2120
  283. 2820 END
  284. 2830 PRINT "END OF PERIOD";X
  285. 2840 GOSUB 2120
  286. 2850 LET F=1-F
  287. 2860 GOSUB 3520
  288. 2870 LET C=900
  289. 2880 LET X=X+1
  290. 2890 IF F<>0 THEN 810
  291. 2900 LET S=3-K
  292. 2910 GOTO 580
  293. 2920 IF T1=0 THEN 2770
  294. 2930 PRINT "2 MINUTE WARNING"
  295. 2940 GOSUB 3520
  296. 2950 LET T1=0
  297. 2960 LET C=120
  298. 2970 GOTO 880
  299. 2980 LET B1=B+10
  300. 2990 IF B1<=100 THEN 3010
  301. 3000 LET B1=100
  302. 3010 RETURN
  303. 3020 LET Q=1.3*(A*RND(0)-1)-.06
  304. 3030 LET A=1
  305. 3040 IF Q>=0 THEN 3070
  306. 3050 LET A=0
  307. 3060 LET Q=-Q
  308. 3070 LET M1=M-1
  309. 3080 LET G=D(A,M1)+FNT(Q)*(D(2,M1)-D(A,M1))/3.5
  310. 3090 LET G=G+INT(RND(0)+.02)*A*100*RND(0)
  311. 3100 LET G=INT(G)
  312. 3110 RETURN
  313. 3120 LET D=D+1
  314. 3130 IF D=5 THEN 3240
  315. 3140 IF D<>  1 THEN 3160
  316. 3150 PRINT "1ST";
  317. 3160 IF D<>2 THEN 3180
  318. 3170 PRINT "2ND";
  319. 3180 IF D<>3 THEN 3200
  320. 3190 PRINT "3RD";
  321. 3200 IF D<4 THEN 3220
  322. 3210 PRINT "4TH";
  323. 3220 PRINT " AND";B1-B;"   ";
  324. 3230 GOTO 810
  325. 3240 LET S=3-S
  326. 3250 LET B=100-B
  327. 3260 IF S=2 THEN 770
  328. 3270 PRINT "MY ";
  329. 3280 GOTO 780
  330. 3290 PRINT "BALL ON ";
  331. 3300 IF B=50 THEN 3400
  332. 3310 LET V=50-ABS(B-50)
  333. 3320 LET C=C-INT(7+3*RND(0))
  334. 3330 IF S=1 THEN 3420
  335. 3340 IF B<50 THEN 3370
  336. 3350 PRINT "MY ";
  337. 3360 GOTO 3380
  338. 3370 PRINT "YOUR ";
  339. 3380 PRINT V
  340. 3390 RETURN
  341. 3400 PRINT "THE 50"
  342. 3410 RETURN
  343. 3420 IF B<50 THEN 3350
  344. 3430 GOTO 3370
  345. 3440 IF S=2 THEN 3470
  346. 3450 PRINT "YOU";
  347. 3460 GOTO 3480
  348. 3470 PRINT "I";
  349. 3480 PRINT " KICK OFF."
  350. 3490 LET F2=.06
  351. 3500 LET Z2=0
  352. 3510 RETURN
  353. 3520 LET L=0
  354. 3530 PRINT "TIMEOUT CALLED..."
  355. 3540 PRINT
  356. 3550 RETURN
  357. 3560 IF U=0 THEN 3600
  358. 3570 LET U=U-1
  359. 3580 GOSUB 3520
  360. 3590 GOTO 3610
  361. 3600 PRINT "..WRONG, TRY AGAIN"
  362. 3610 INPUT A
  363. 3620 IF ABS(INT(A))>17 THEN 3600
  364. 3630 LET Q=R(INT(ABS(A)))
  365. 3640 IF Q=0 THEN 3600
  366. 3650 IF Q=100 THEN 3560
  367. 3660 RETURN
  368. 3670 DATA .5,-2,.25,4,.5,13,.55
  369. 3680 DATA .4,-2,.3,7,.65,15,.75
  370. 3690 DATA .4,-2,.3,6,.6,15,.35
  371. 3700 DATA .65,-2,.65,6,.6,17,.9
  372. 3710 DATA .4,2,.7,10,.4,27,.2
  373. 3720 DATA .1,19,.4,35,.2,100,.1
  374. 3730 END
  375.