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

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