home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
SIMTEL
/
CPMUG
/
CPMUG013.ARK
/
NFL.BAS
< prev
next >
Wrap
BASIC Source File
|
1984-04-29
|
14KB
|
591 lines
10 REM NFL FOOTBALL
20 REM
30 REM DESCRIPTIONS--GENERATES AN I.E.C. CHAMPIONSHIP FOOTBALL GAME
40 REM WITH THE USER AS THE QUARTERBACK.
50 REM
60 REM SOURCE--JOHN G. KEMENY
70 REM MODIFIED BY RICHARD L BERG
80 REM
90 REM INSTRUCTIONS--TYPE "RUN" AND FOLLOW INSTRUCTIONS.
100 REM
110 REM
120 REM * * * * * * * MAIN PROGRAM * * * * * * *
130 REM
140 PRINT TAB(17);" NFL PROFESSIONAL FOOTBALL"
150 PRINT TAB(17);"*****************************************"
160 FOR I = 1 TO 10:PRINT:NEXT I
165 DIM O$(20),S(20),D$(20)
170 INPUT "CHOOSE YOUR TEAM"; O$(0)
180 RANDOMIZE
190 INPUT "CHOOSE YOUR OPPONENT"; O$(1)
210 PRINT
220 INPUT "DO YOU WISH INSTRUCTIONS"; A$
240 IF LEFT$(A$,1) = "N" THEN 460
250 IF LEFT$(A$,1) <> "Y" THEN 280
260 GOSUB 300
270 GOTO 460
280 PRINT "'YES' OR 'NO', PLEASE";
290 GOTO 220
300 PRINT
310 PRINT "YOU WILL QUARTERBACK ";O$(0);"."
320 PRINT
330 PRINT "YOU MAY CALL PLAYS BY NUMBER OR BY USING"
335 PRINT "THE INITIALS OF THE PLAY."
340 PRINT
345 PRINT " 1 = SR = SIMPLE RUN"
350 PRINT " 2 = TR = TRICKY RUN"
355 PRINT " 3 = SP = SHORT PASS"
360 PRINT " 4 = LP = LONG PASS"
365 PRINT " 5 = P = PUNT"
370 PRINT " 6 = QK = QUICK KICK"
375 PRINT " 7 = PK = PLACE KICK"
400 PRINT
410 PRINT " WHEN YOU SEE THE QUESTION 'READY?' TYPE THE"
415 PRINT "LETTER 'Y' FOR YES AND THE PROGRAM WILL CONTINUE."
420 PRINT
430 PRINT
440 PRINT
445 INPUT "READY"; DUMMY$
450 RETURN
460 LET H1=1
470 LET T=0
480 PRINT
490 LET S(0) = 0
500 LET S(1) = 0
510 D$(1) = "INJURED PLAYER"
520 D$(2) = "DRUNKEN FAN"
530 D$(3) = "RABID DOG"
534 D$(4) = "NUDE GIRL"
536 D$(5) = "HIPPIE FREAK"
540 READ Y$
550 DATA YES
560 READ Q$
570 DATA DO YOU ACCEPT THE PENALTY
580 READ R$
590 DATA "'YES' OR 'NO', PLEASE"
600 READ N$
610 DATA NO
620 DIM L$(20)
630 L$(1) = "KICK"
632 L$(2) = "RECEIVE"
634 L$(3) = "YARDS"
636 L$(4) = "RUN BACK FOR "
638 L$(5) = "BALL ON "
640 L$(6) = "YARD LINE"
642 L$(7) = "SIMPLE RUN "
644 L$(8) = "TRICKY RUN "
646 L$(9) = "SHORT PASS "
648 L$(10) = "LONG PASS "
650 L$(11) = "PUNT"
652 L$(12) = "QUICK KICK "
654 L$(13) = "PLACE KICK "
656 L$(14) = "LOSS OF "
658 L$(15) = "NO GAIN"
660 L$(16) = "GAIN OF "
662 L$(17) = "TOUCHDOWN "
664 L$(18) = "TOUCHBACK "
666 L$(19) = "SAFETY***"
668 L$(20) = "JUNK"
680 LET P = INT(RND*2)
690 PRINT O$(P);" WIN THE TOSS"
700 DEF FNF=1-2*P
710 DEF FNG = P*(X1-X) + (1-P)*(X-X1)
720 LET H2=P
730 IF P = 0 THEN 770
740 PRINT O$(1);" ELECT TO RECEIVE"
750 PRINT
760 GOTO 880
770 INPUT "DO YOU ELECT TO KICK OR RECEIVE"; A$
790 PRINT
800 FOR E = 1 TO 2
810 IF A$ = L$(E) THEN 850
820 NEXT E
830 PRINT "INCORRECT ANSWER. PLEASE TYPE 'KICK' OR 'RECEIVE'";
840 GOTO 770
850 IF E = 2 THEN 880
860 LET H2=1
870 LET P = 1
880 REM KICKOFF
890 LET X = 40 + (1-P)*20
900 IF P=0 THEN 5040
910 INPUT "DO YOU WISH TO TRY AN ON-SIDE KICK"; A$
930 IF LEFT$(A$,1) = "Y" THEN 4800
940 IF LEFT$(A$,1) <> "N" THEN 970
950 PRINT
960 GOTO 990
970 PRINT "'YES' OR 'NO', PLEASE";
980 GOTO 910
990 LET Y = INT(20*(RND-.5)*3+55)
1000 PRINT "KICKOFF GOOD FOR ";Y;L$(3)
1010 LET X = X-FNF*Y
1020 IF ABS(X50)>=50 THEN 1110
1030 REM KICK RETURN
1040 LET Y = ABS(INT(100*RND*2))
1050 PRINT L$(4);
1060 IF Y=0 THEN 1090
1070 LET X = X+FNF*Y
1080 IF ABS(X-50)>=50 THEN 3520
1090 PRINT Y;L$(3)
1100 GOTO 1140
1110 REM TOUCHBACK
1120 PRINT "TOUCHBACK ***"
1130 LET X = 20 + P*60
1140 REM FIRST DOWN
1150 GOSUB 1220
1160 LET X1 = X
1170 LET D = 1
1180 PRINT "FIRST DOWN ";O$(P);" ***"
1190 PRINT
1200 PRINT
1210 GOTO 1280
1220 REM PRINT POSITION
1230 IF X > 50 THEN 1260
1240 PRINT L$(5);O$(0);" ";X;L$(6)
1245 E8=1
1250 GOTO 1270
1260 PRINT L$(5);O$(1);" ";100-X;L$(6)
1265 E8=0
1270 RETURN
1280 REM NEW PLAY
1290 LET T = T+1
1300 IF T=22 THEN 1550
1310 IF T=42 THEN 5110
1320 IF T<50 THEN 1370
1330 IF H1=1 THEN 4600
1340 PRINT "********** END OF GAME **********"
1350 PRINT "FINAL SCORE| ";O$(0);" ";S(0);" ";O$(1);" ";S(1)
1360 STOP
1370 IF P=1 THEN 2700
1380 INPUT "NEXT PLAY"; Z$
1400 IF Z$ = "1" THEN 1490
1405 IF Z$<>"SR" THEN 1410
1406 Z$ = "1"
1407 GOTO 1490
1410 IF Z$ = "2" THEN 1490
1415 IF Z$<>"TR" THEN 1420
1416 Z$ = "2"
1417 GOTO 1490
1420 IF Z$ = "3" THEN 1490
1425 IF Z$<>"SP" THEN 1430
1426 Z$ = "3"
1427 GOTO 1490
1430 IF Z$ = "4" THEN 1490
1435 IF Z$<>"LP" THEN 1440
1436 Z$ = "4"
1437 GOTO 1490
1440 IF Z$ = "5" THEN 1490
1445 IF Z$<>"P" THEN 1450
1446 Z$ = "5"
1447 GOTO 1490
1450 IF Z$ = "6" THEN 1490
1455 IF Z$<>"QK" THEN 1460
1456 Z$ = "6"
1457 GOTO 1490
1460 IF Z$ = "7" THEN 1490
1465 IF Z$<>"PK" THEN 1470
1466 Z$="7"
1467 GOTO 1490
1470 GO SUB 320
1480 GOTO 1380
1490 Z = VAL(Z$)
1500 LET F = 0
1510 PRINT L$(Z+6);". ";
1520 LET R = RND*(.98+FNF*.02)
1530 LET R1 = RND
1540 ON Z GOTO 1610,1680,1820,2170,2340,2340,2500
1550 REM JEAN'S SPECIAL
1560 IF RND>1/3 THEN 1370
1570 LET D5=INT(RND*5+1)
1580 PRINT "GAME DELAYED. ";D$(D5);" ON THE FIELD."
1585 PRINT
1586 INPUT "READY"; DUMMY$
1590 PRINT
1600 GOTO 1370
1610 REM SIMPLE RUN.
1620 LET Y=3
1630 LET Y=Y+INT(24*(R-.5)-3)
1640 IF RND<.05 THEN 1630
1650 IF RND < .03 THEN 1740
1660 IF RND>=.98 THEN 3520
1670 GOTO 3110
1680 REM TRICKY RUN.
1690 LET Y=-7
1700 LET Y=Y+INT(20*R+24*(RND-.5)-3)
1710 IF RND<.04 THEN 1700
1720 IF RND > .07 THEN 3110
1730 IF RND>=.95 THEN 3520
1740 LET F = -1
1750 LET X3 = X
1760 LET X = X + FNF*Y
1770 IF ABS(X-50) >= 50 THEN 1800
1780 PRINT "*** FUMBLE AFTER ";
1790 GOTO 3150
1800 PRINT "*** FUMBLE."
1810 GOTO 3370
1820 REM SHORT PASS.
1830 LET Y=INT(10+RND*10)
1840 LET Y=Y+INT(60*(R1-.5)-3)
1850 IF RND<.05 THEN 1840
1860 IF R < .05 THEN 1920
1870 IF R < .15 THEN 2080
1880 IF R < .55 THEN 2110
1890 PRINT "COMPLETE. ";
1900 IF RND>=.95 THEN 3520
1910 GOTO 3110
1920 GOTO 1930
1930 PRINT "INTERCEPTED."
1940 LET F=-1
1950 LET Z1=X
1960 LET X=X+FNF*Y
1970 IF ABS(X-50)>=50 THEN 3630
1980 LET Y1=INT(RND*40)
1990 PRINT "RUN BACK FOR ";Y1;L$(3)
2000 LET Y=Y-Y1
2010 LET X=Z1+FNF*Y
2020 IF X>=100 THEN 3440
2030 GOTO 3220
2040 LET F=-1
2050 LET X = X+FNF*Y
2060 IF ABS(X-50)>=50 THEN 3370
2070 GOTO 3220
2080 PRINT "PASSER TACKLED. ";
2090 LET Y = -INT(10*R1)
2100 GOTO 3110
2110 LET Y=0
2120 IF RND<.3 THEN 2150
2130 PRINT "INCOMPLETE. ";
2140 GOTO 3110
2150 PRINT "BATTED DOWN. ";
2160 GOTO 3110
2170 REM LONG PASS.
2180 LET Y=INT(30+RND*20)
2190 LET Y=Y+INT(160*(R1-.5)-3)
2200 IF RND<.03 THEN 2190
2210 IF R < .1 THEN 1920
2220 IF R<.25 THEN 2280
2230 IF R<.65 THEN 2110
2240 IF R<.75 THEN 2310
2250 PRINT "COMPLETE. ";
2260 IF RND>=.91 THEN 3520
2270 GOTO 3110
2280 PRINT "PASSER TACKLED. ";
2290 LET Y=-INT(15*R1+6)
2300 GOTO 3110
2310 PRINT "PASSER SCRAMBLING. ";
2320 LET Y=INT(-3+80*(R1-.5)-3)
2330 GOTO 3110
2340 REM PUNT OR QUICK KICK.
2350 LET Y=INT(100*(RND-.5)*3+45)
2360 IF R1>.15 THEN 2380
2370 GOTO 2530
2380 IF D = 4 THEN 2400
2390 LET Y=INT(Y*1.3)
2400 PRINT "KICK GOOD FOR ";Y;L$(3)
2410 IF RND>.84 THEN 5300
2420 LET F=-1
2430 LET Z1=X
2440 LET X=X+FNF*Y
2450 IF ABS(X-50)>=55 THEN 3630
2460 LET Y1=INT(R1*40)
2470 PRINT "RUN BACK FOR "; Y1; L$(3)
2480 LET Y = Y-Y1
2490 GOTO 2010
2500 REM PLACE KICK.
2510 LET Y=INT(100*(R-.5)*3+45)
2520 IF R1>.1 THEN 2570
2530 PRINT "KICK IS BLOCKED ***"
2540 LET X=INT(X-FNF*5-FNF*(RND*10))
2550 LET P = 1-P
2560 GOTO 1140
2570 IF X<=35 THEN 2640
2580 LET X=X+FNF*Y
2590 IF ABS(X-50)>=50 THEN 2640
2600 PRINT "KICK IS SHORT."
2610 LET P = 1-P
2620 LET Y=INT(RND*50)
2630 GOTO 1050
2640 IF R1>.24 THEN 2670
2650 PRINT "KICK IS OFF TO THE SIDE."
2660 GOTO 3630
2670 IF E8 = 1 THEN 2600
2675 PRINT "FIELD GOAL***"
2680 LET S(P) = S(P)+3
2690 GOTO 3560
2700 REM OPPONENT'S PLAY
2702 INPUT "READY"; DUMMY$
2710 IF T=49 THEN 5180
2720 IF D > 1 THEN 2780
2730 IF RND > 1/3 THEN 2760
2740 LET Z = 3
2750 GOTO 1500
2760 LET Z = 1
2770 GOTO 1500
2780 IF D = 4 THEN 2930
2790 IF 10+X-X1 < 5 THEN 2730
2800 IF X<5 THEN 2730
2810 IF X<=10 THEN 3080
2820 IF X > X1 THEN 2860
2830 LET A = INT(2*RND)
2840 LET Z = 2+A*2
2850 GOTO 1500
2860 IF D < 3 THEN 2830
2870 IF X<=70 THEN 2830
2880 IF RND > .25 THEN 2910
2890 LET Z = 6
2900 GOTO 1500
2910 LET Z = 4
2920 GOTO 1500
2930 IF X>47 THEN 3040
2940 IF S(1)=S(0) THEN 3020
2950 IF S(1)>S(0) THEN 3000
2960 IF S(0)-S(1)<=3 THEN 3020
2970 IF H1=2 THEN 2990
2980 GOTO 3020
2990 IF T>42 THEN 5260
3000 IF 10+X-X1 < 3 THEN 2730
3010 IF X<3 THEN 2730
3020 LET Z = 7
3030 GOTO 1500
3040 IF H1=1 THEN 3060
3050 IF T>42 THEN 5400
3060 LET Z=5
3070 GOTO 1500
3080 LET A = INT(2*RND)
3090 LET Z = 2+A
3100 GOTO 1500
3110 REM GAIN OR LOSS
3120 LET X3 = X
3130 LET X = X + FNF*Y
3140 IF ABS(X-50)>=50 THEN 3370
3150 PRINT L$(15+SGN(Y));
3160 IF Y = 0 THEN 3190
3170 PRINT ABS(Y);L$(3)
3180 GOTO 3200
3190 PRINT
3200 IF ABS(X3-50)>40 THEN 3220
3210 IF RND<.1 THEN 3780
3220 GOSUB 1220
3230 IF F=0 THEN 3260
3240 LET P = 1-P
3250 GOTO 1160
3260 IF FNG >= 10 THEN 1160
3270 IF D = 4 THEN 3240
3280 LET D = D+1
3290 PRINT "DOWN ";D;"AND ";
3300 IF (X1-50)*FNF < 40 THEN 3330
3310 PRINT "GOAL TO GO"
3320 GOTO 3340
3330 PRINT 10-FNG;"YARDS TO GO"
3340 PRINT
3345 PRINT
3346 IF P<1 THEN 3350
3350 PRINT
3355 PRINT
3360 GOTO 1280
3370 REM BALL IN END-ZONE
3380 IF X >= 100 THEN 3410
3390 LET E=0
3400 GOTO 3420
3410 LET E = 1
3420 ON 1+E-F*2+P*4 GOTO 3430,3510,3680,3630,3510,3430,3630,3680
3430 REM SAFETY
3440 LET S(1-P) = S(1-P)+2
3450 PRINT L$(19)
3460 GOSUB 3720
3470 PRINT O$(P);" KICK OFF FROM THEIR 20 YARD LINE."
3480 LET X = 20 + P*60
3490 LET P = 1-P
3500 GOTO 990
3510 REM OFFENSIVE TD
3520 PRINT L$(17);" ***"
3530 IF RND<.16 THEN 3600
3540 LET S(P) = S(P)+7
3550 PRINT "KICK IS GOOD"
3560 GOSUB 3720
3570 PRINT O$(P);" KICK OFF"
3580 LET P = 1-P
3590 GOTO 880
3600 PRINT "KICK IS OFF TO THE SIDE"
3610 LET S(P) = S(P)+6
3620 GOTO 3560
3630 REM TOUCHBACK
3640 PRINT L$(18);" ***"
3650 LET P =1-P
3660 LET X = 20 + P*60
3670 GOTO 1140
3680 REM DEFENSIVE TD
3690 PRINT L$(17);" FOR ";O$(1-P);" ***"
3700 LET P = 1-P
3710 GOTO 3520
3720 REM SCORE
3730 PRINT
3740 PRINT "SCORE: ";O$(0);" ";S(0);" ";O$(1);" ";S(1)
3750 PRINT
3760 PRINT
3770 RETURN
3780 REM PENALTY
3790 LET P3 = INT(2*RND)
3800 LET R2=RND
3810 IF R2<.15 THEN 3900
3820 PRINT O$(P3);" OFFSIDES -- PENALTY OF 5 YARDS."
3830 IF P3 = 0 THEN 4210
3840 PRINT "DO YOU ACCEPT THE PENALTY";
3850 INPUT A$
3860 IF A$="NO"THEN 3220
3870 IF A$="YES" THEN 4340
3880 PRINT R$;
3890 GOTO 3850
3900 IF P3=P THEN 4010
3910 PRINT "DEFENSIVE HOLDING --"
3915 PRINT "PENALTY OF 5 YARDS AND AUTOMATIC FIRST DOWN."
3920 IF P3=0 THEN 4410
3930 INPUT "DO YOU ACCEPT THE PENALTY"; A$
3950 IF A$=N$ THEN 3220
3960 IF A$=Y$ THEN 3990
3970 PRINT "'YES' OR 'NO',PLEASE.";
3980 GOTO 3930
3990 LET X=X3+FNF*5
4000 GOTO 1140
4010 PRINT "OFFENSIVE HOLDING -- PENALTY OF FIFTEEN YARDS."
4020 IF P3=0 THEN 4410
4030 INPUT "DO YOU ACCEPT THE PENALTY"; A$
4050 IF A$=N$ THEN 3220
4060 IF A$=Y$ THEN 4090
4070 PRINT R$
4080 GOTO 4030
4090 IF ABS(X3-50)<=20 THEN 4170
4100 IF X3>30 THEN 4150
4110 IF P=1 THEN 4170
4120 LET X=X3-FNF*(X3/2)
4130 GOTO 4180
4140 GOTO 4180
4150 IF P=0 THEN 4170
4160 LET X=X3-FNF*((100-X3)/2)
4170 LET X=X3-FNF*15
4180 LET F=0
4190 LET D=D-1
4200 GOTO 3220
4210 REM OPPONENT'S STRATEGY ON PENALTY
4220 IF P = 1 THEN 4270
4230 IF Y <= 0 THEN 4310
4240 IF F < 0 THEN 4310
4250 IF FNG < 3*D-2 THEN 4310
4260 GOTO 4330
4270 IF Y <= 5 THEN 4330
4280 IF F < 0 THEN 4330
4290 IF D < 4 THEN 4310
4300 IF FNG < 10 THEN 4330
4310 PRINT "PENALTY REFUSED."
4320 GOTO 3220
4330 PRINT "PENALTY ACCEPTED."
4340 LET F = 0
4350 LET D = D-1
4360 IF P<>P3 THEN 4390
4370 LET X = X3-FNF*5
4380 GOTO 3220
4390 LET X = X3+FNF*5
4400 GOTO 3220
4410 REM OPPONENT'S STRATEGY ON HOLDING
4420 IF P3=P THEN 4490
4430 IF Y<5 THEN 4460
4440 IF ABS(X-X1)<10 THEN 4460
4450 GOTO 4570
4460 PRINT "PENALTY ACCEPTED."
4470 PRINT
4480 GOTO 3990
4490 IF D=4 THEN 4570
4500 IF F<0 THEN 4570
4510 IF Y<=-5 THEN 4570
4520 IF D<3 THEN 4540
4530 IF Y<(9-FNG) THEN 4570
4540 PRINT "PENALTY ACCEPTED."
4550 PRINT
4560 GOTO 4090
4570 PRINT "PENALTY DECLINED."
4580 PRINT
4590 GOTO 3220
4600 REM THE HALF-TIME SHOW.
4610 LET H1=2
4620 LET T=0
4630 PRINT
4640 PRINT
4650 PRINT "IT'S HALF-TIME."
4660 PRINT "FIRST THE BAND SPELLS"
4670 PRINT
4680 PRINT " ";O$(0)
4690 PRINT
4700 PRINT "THEN THE BAND SPELLS"
4710 PRINT
4720 PRINT " ";O$(1)
4730 PRINT
4740 PRINT "AND THAT'S THE END OF THE HALF-TIME SHOW."
4750 PRINT
4760 LET P=0
4770 IF H2=1 THEN 5160
4780 LET P=1
4790 GOTO 880
4800 REM ON-SIDE KICK
4810 PRINT
4820 PRINT "ON-SIDE KICK."
4830 PRINT
4840 LET Y=INT(10+20*(RND-.5)-3)
4850 LET P2=P
4860 IF Y<10 THEN 4900
4870 LET P2=INT(2*RND)
4880 PRINT "BALL WENT ";Y;L$(3);". RECOVERED BY ";O$(P2)
4890 GOTO 4990
4900 PRINT "BALL WENT ";Y;L$(3);". FIVE YARD PENALTY. ";
4910 IF P=1 THEN 4980
4920 INPUT "DO YOU ACCEPT"; A$
4940 IF A$=Y$ THEN 5020
4950 IF A$=N$ THEN 4980
4960 PRINT R$
4970 GOTO 4920
4980 PRINT "PENALTY DECLINED."
4990 LET X=X-FNF*Y
5000 LET P=P2
5010 GOTO 1140
5020 LET X=X+FNF*5
5030 GOTO 900
5040 REM OPPONENT STRATEGY ON ON-SIDE KICK
5050 IF S(1)>S(0) THEN 990
5060 IF H1=1 THEN 990
5070 IF T<30 THEN 990
5080 IF S(0)-S(1)<=14 THEN 4800
5090 IF RND>.5 THEN 990
5100 GOTO 4800
5110 PRINT "*** TWO MINUTE WARNING ***"
5120 PRINT " (8 PLAYS LEFT)"
5130 PRINT
5140 PRINT
5150 GOTO 1370
5160 LET E=2
5170 GOTO 880
5180 IF S(1)>S(0) THEN 5240
5190 IF H1=2 THEN 5220
5200 IF S(0)-S(1)<=14 THEN 5240
5210 GOTO 2910
5220 IF S(1)>S(0) THEN 5240
5230 GOTO 2910
5240 IF X>33 THEN 2760
5250 GOTO 3020
5260 IF (10-FNG)<=3 THEN 2760
5270 ON INT(RND*3+1) GOTO 2910,5280,2740
5280 LET Z=2
5290 GOTO 1500
5300 LET X=X+FNF*Y
5310 PRINT "LOOSE FOOTBALL"
5320 ON (RND*2+1) GOTO 5370,5330
5330 PRINT "RECOVERED BY ";O$(P)
5340 IF ABS(X-50)>=50 THEN 3370
5350 GOSUB 1220
5360 GOTO 1160
5370 PRINT "RECOVERED BY ";O$(1-P)
5380 LET P=1-P
5390 GOTO 5340
5400 IF S(1)>=S(0) THEN 3060
5410 IF X>70 THEN 3060
5420 IF S(1)-S(0)<=7 THEN 5260
5430 GOTO 3060
5440 END