555 lines
14 KiB
QBasic
555 lines
14 KiB
QBasic
100 REM BASEBALL SIMULATION PROGRAM
|
||
110 REM WRITTEN BY JOEL LIND & KEN BIRKMAN - NYU - JULY 1973
|
||
120 REM STOLEN AND ENHANCED DECEMBER 1973 BY R. D. KURLAND - NYU
|
||
130 DIM B(7),P$(9),W$(7),J$(8),K$(4)
|
||
140 FOR I=1 TO 7: B(I)=0:NEXT
|
||
150 B=0:T9=0:R9=0:S=0:O=0:B1=0:B2=0:T=0
|
||
160 Z1=1:Z2=1
|
||
170 PRINT "WELCOME TO EBBETT'S FIELD"
|
||
180 PRINT "WHAT DO YOU WANT TO CALL YOUR TEAM";
|
||
190 INPUT A$
|
||
200 FOR I=1 TO 7:READ W$(I):NEXT
|
||
210 FOR I=1 TO 9:READ P$(I):NEXT
|
||
220 FOR I=1 TO 4:READ K$(I):NEXT
|
||
230 FOR I=1 TO 8:READ J$(I):NEXT
|
||
240 PRINT "FINE. THE ";A$;" NEED A MANAGER. WHAT'S YOUR NAME";
|
||
250 INPUT B$
|
||
260 PRINT "WHAT DO YOU WANT TO CALL MY TEAM, ";B$;
|
||
270 INPUT C$
|
||
280 PRINT
|
||
290 PRINT "OPENING DAY, THE ";A$;" VERSUS THE ";C$
|
||
300 PRINT
|
||
310 PRINT "LET'S FLIP A COIN. THE WINNER IS THE HOME TEAM."
|
||
320 PRINT "HEADS OR TAILS";
|
||
330 INPUT D$
|
||
340 IF D$<>"HEADS" AND D$<>"TAILS" THEN 320
|
||
350 FOR I=1 TO TYM
|
||
360 Y=RND(1)
|
||
370 NEXT I
|
||
380 H=1
|
||
390 Y=RND(1)
|
||
400 Y$="HEADS"
|
||
410 IF Y>.5 THEN Y$="TAILS"
|
||
420 IF D$=Y$ THEN 490
|
||
430 H=0
|
||
440 PRINT "YOU LOST THE TOSS. THE ";A$;" ARE UP FIRST."
|
||
450 PRINT
|
||
460 PRINT
|
||
470 A=0
|
||
480 GOTO 610
|
||
490 PRINT "YOU WIN THE TOSS. ";A$;" TAKE THE FIELD, AND ";
|
||
500 PRINT C$;" ARE AT BAT."
|
||
510 A=1
|
||
520 R9=0
|
||
530 T=T+1
|
||
540 IF T<3 THEN GOSUB 5140
|
||
550 IF T<18 THEN 710
|
||
560 IF T>18 THEN 590
|
||
570 GOSUB 3500
|
||
580 GOTO 710
|
||
590 GOSUB 3290
|
||
600 GOTO 710
|
||
610 REM START AN INNING - WE ARE OUT ON THE FIELD
|
||
620 T=T+1
|
||
630 R9=0
|
||
640 IF T<18 THEN 690
|
||
650 IF T>18 THEN 680
|
||
660 GOSUB 3500
|
||
670 GOTO 690
|
||
680 GOSUB 3290
|
||
690 IF T>2 THEN 710
|
||
700 GOSUB 5070
|
||
710 S=0:B=0
|
||
720 PRINT
|
||
730 IF O=0 THEN PRINT "NO OUTS"
|
||
740 IF O=1 THEN PRINT "THERE IS 1 OUT"
|
||
750 IF O>1 THEN PRINT "THERE ARE";O;"OUTS"
|
||
760 P=B(1)+B(2)+B(3)
|
||
770 IF P<>3 THEN 800
|
||
780 PRINT "BASES LOADED"
|
||
790 GOTO 900
|
||
800 IF P=0 THEN 900
|
||
810 Y$="RUNNER ON "
|
||
820 IF P>1 THEN Y$="RUNNERS ON "
|
||
830 PRINT Y$;
|
||
840 IF B(1)=0 THEN 870
|
||
850 PRINT "FIRST";
|
||
860 IF P>1 THEN PRINT " AND ";
|
||
870 IF B(2)=1 THEN PRINT "SECOND";
|
||
880 IF P>1 AND B(1)=0 THEN PRINT " AND ";
|
||
890 IF B(3)=1 THEN PRINT "THIRD" ELSE PRINT " "
|
||
900 IF A=0 THEN 920
|
||
910 GOTO 3030
|
||
920 PRINT "BATTER UP"
|
||
930 IF B<>3 OR S<>2 THEN 960
|
||
940 PRINT "FULL COUNT"
|
||
950 GOTO 970
|
||
960 IF B>0 OR S>0 THEN PRINT "THE COUNT IS";B;"AND";S
|
||
970 PRINT
|
||
980 IF A=1 THEN 3030
|
||
990 PRINT "WHAT WILL YOUR BATTER DO, ";B$;
|
||
1000 INPUT C
|
||
1010 IF C>0 AND C<5 THEN 1050
|
||
1020 PRINT "HUH? ";
|
||
1030 GOSUB 5070
|
||
1040 GOTO 990
|
||
1050 Y2=RND(1)
|
||
1060 IF Y2<.56 OR Y2>.5625 THEN 1120
|
||
1070 PRINT "WILD PITCH!"
|
||
1080 N=1
|
||
1090 GOSUB 3540
|
||
1100 B(1)=0
|
||
1110 GOTO 1210
|
||
1120 IF Y2>.772 AND Y2<.775 THEN 4880
|
||
1130 ON C GOTO 1140,1450,2600,4450,5500
|
||
1140 C=1
|
||
1150 GOSUB 5240
|
||
1160 IF A=0 THEN Z1=Z1+1
|
||
1170 Y=RND(1)
|
||
1180 IF B<>3 OR S<>0 THEN 1200
|
||
1190 IF Y<.7 THEN 1310 ELSE 1210
|
||
1200 IF Y<.5 THEN 1310
|
||
1210 B=B+1
|
||
1220 Y=INT(RND(1)*8+1)
|
||
1230 IF Y=9 THEN 1220
|
||
1240 PRINT J$(Y);" - BALL";B
|
||
1250 IF B<>4 THEN 930
|
||
1260 PRINT "WALK"
|
||
1270 GOSUB 4950
|
||
1280 Y=RND(1)
|
||
1290 GOTO 710
|
||
1300 PRINT "HIGH POP - FOUL DOWN THE ";Y$;" FIELD LINE"
|
||
1310 S=S+1
|
||
1320 IF C=2 OR C=5 THEN 1370
|
||
1330 Y=INT(RND(1)*4+1)
|
||
1340 IF Y=5 THEN 1330
|
||
1350 PRINT K$(Y);", CALLED STRIKE";S
|
||
1360 GOTO 1380
|
||
1370 PRINT "SWINGING STRIKE";S
|
||
1380 IF C=5 AND S<>3 THEN 4450
|
||
1390 IF S<>3 THEN 930
|
||
1400 PRINT "STRUCK OUT"
|
||
1410 O=O+1
|
||
1420 IF O=3 THEN 2850
|
||
1430 IF C=5 THEN 4450
|
||
1440 GOTO 710
|
||
1450 C=2
|
||
1460 Y=INT(RND(1)*10+1)
|
||
1470 IF Y=10 THEN 1450
|
||
1480 IF A=0 THEN Z2=Z2+1
|
||
1490 IF C<>5 THEN GOSUB 5240
|
||
1500 IF S<>2 AND Z2/Z1>7 AND A=0 THEN 1520
|
||
1510 IF S<>2 OR Z2/Z1<25 THEN 1590
|
||
1520 Y=INT(RND(1)*20+1)
|
||
1530 IF Y>7 THEN 1550
|
||
1540 ON Y GOTO 1610,1310,1310,1310,1310,1680,1610
|
||
1550 IF Y>13 THEN 1570
|
||
1560 ON Y-7 GOTO 1680,1310,1740,1850,1740,1850
|
||
1570 IF Y>18 THEN 1600
|
||
1580 ON Y-13 GOTO 1980,1980,2040,2570,1640,2570
|
||
1590 IF Y<3 THEN 1310
|
||
1600 ON Y-2 GOTO 1610,1680,1740,1850,1980,2040,2570
|
||
1610 PRINT "FOULED INTO THE STANDS-OUT OF PLAY"
|
||
1620 IF S<>2 THEN S=S+1
|
||
1630 GOTO 930
|
||
1640 Y=RND(1)
|
||
1650 Y$="RIGHT"
|
||
1660 IF Y<.5 THEN Y$="LEFT"
|
||
1670 GOTO 1620
|
||
1680 Y=INT(RND(1)*20+1)
|
||
1690 IF Y>18 THEN 1720
|
||
1700 PRINT "FOULED BACK INTO THE STANDS"
|
||
1710 GOTO 1620
|
||
1720 PRINT "POPPED IT UP - CAUGHT BY CATCHER"
|
||
1730 GOTO 1410
|
||
1740 PRINT "INFIELD GROUNDER"
|
||
1750 E2=RND(1)
|
||
1760 IF E2<.37 OR E2>.41 THEN 1820
|
||
1770 PRINT "1 BASE ERROR!!"
|
||
1780 N=1
|
||
1790 C=4
|
||
1800 GOSUB 3540
|
||
1810 GOTO 710
|
||
1820 GOSUB 4100
|
||
1830 IF O=3 THEN 2850
|
||
1840 GOTO 710
|
||
1850 PRINT "GROUNDER - COULD BE TROUBLE"
|
||
1860 Y=RND(1)
|
||
1870 IF Y>.75 THEN 1950
|
||
1880 Y$="UP THE MIDDLE"
|
||
1890 IF Y<.5 THEN Y$="THROUGH THE HOLE INTO RIGHT FIELD"
|
||
1900 IF Y<.25 THEN Y$="THROUGH THE HOLE INTO LEFT FIELD"
|
||
1910 PRINT "A SINGLE ";Y$;"!"
|
||
1920 N=1
|
||
1930 GOSUB 3540
|
||
1940 GOTO 710
|
||
1950 PRINT "INFIELDER UP WITH IT!"
|
||
1960 GOSUB 4800
|
||
1970 IF O=3 THEN 2850 ELSE 710
|
||
1980 Y=RND(1)
|
||
1990 Y$="LEFT"
|
||
2000 IF Y<.6 THEN Y$="CENTER"
|
||
2010 IF Y<.3 THEN Y$="RIGHT"
|
||
2020 PRINT "FLY-OUT TO ";Y$;" FIELD"
|
||
2030 GOTO 1410
|
||
2040 Z=RND(1)
|
||
2050 Y$="CENTER"
|
||
2060 IF Z<.6 THEN Y$="RIGHT"
|
||
2070 IF Z<.3 THEN Y$="LEFT"
|
||
2080 PRINT "LONG FLY TO DEEP ";Y$;" FIELD - LOOKS GOOD!"
|
||
2090 Z=RND(1)
|
||
2100 IF Z<.9 THEN 2130
|
||
2110 PRINT Y$;"FIELDER CAUGHT IT AT THE WALL!"
|
||
2120 GOTO 2180
|
||
2130 IF Z<.8 THEN 2160
|
||
2140 PRINT "A DIVING CATCH!"
|
||
2150 GOTO 2180
|
||
2160 IF Z<.7 THEN 2290
|
||
2170 PRINT Y$;"FIELDER CAUGHT IT ON THE WARNING TRACK!"
|
||
2180 O=O+1
|
||
2190 IF O=3 THEN 2850
|
||
2200 FOR I=3 TO 1 STEP -1
|
||
2210 IF B(I)=1 THEN 2240
|
||
2220 NEXT I
|
||
2230 GOTO 710
|
||
2240 B(I+1)=B(I)
|
||
2250 B(I)=0
|
||
2260 PRINT "LEAD RUNNER TAGS UP - AND ADVANCES 1 BASE!"
|
||
2270 GOSUB 3830
|
||
2280 GOTO 710
|
||
2290 IF Z<.5 THEN 2360
|
||
2300 PRINT "BATTER HOLDS WITH A SINGLE."
|
||
2310 N=2
|
||
2320 GOSUB 3540
|
||
2330 B(2)=0
|
||
2340 B(1)=1
|
||
2350 GOTO 710
|
||
2360 IF Z<.15 THEN 2480
|
||
2370 PRINT "DOUBLE!"
|
||
2380 Y=RND(1)
|
||
2390 IF Y>.5 THEN 2430
|
||
2400 N=2
|
||
2410 GOSUB 3540
|
||
2420 GOTO 710
|
||
2430 N=3
|
||
2440 GOSUB 3540
|
||
2450 B(3)=0
|
||
2460 B(2)=1
|
||
2470 GOTO 710
|
||
2480 IF Z<.1 THEN 2530
|
||
2490 PRINT "TRIPLE!"
|
||
2500 N=3
|
||
2510 GOSUB 3540
|
||
2520 GOTO 710
|
||
2530 PRINT "IT'S OVER THE WALL -- A H*O*M*E R*U*N!!!"
|
||
2540 N=4
|
||
2550 GOSUB 3540
|
||
2560 GOTO 710
|
||
2570 Y=INT(RND(1)*7+1)
|
||
2580 PRINT "LINED OUT TO ";P$(Y)
|
||
2590 GOTO 1410
|
||
2600 GOSUB 5240
|
||
2610 PRINT "BATTER BUNTS..."
|
||
2620 Y=RND(1)
|
||
2630 IF Y<.6 THEN 2750
|
||
2640 IF B(3)=0 THEN 2660
|
||
2650 IF Y<.8 THEN 2830
|
||
2660 PRINT "THROWN OUT AT FIRST."
|
||
2670 O=O+1
|
||
2680 IF O=3 THEN 2850
|
||
2690 IF B(1)+B(2)+B(3)=0 THEN 710
|
||
2700 PRINT "SACRIFICE - ";
|
||
2710 N=1
|
||
2720 GOSUB 3540
|
||
2730 B(1)=0
|
||
2740 GOTO 710
|
||
2750 IF Y<.2 THEN 2830
|
||
2760 IF Y<.4 THEN 2790
|
||
2770 PRINT "BATTER MISSES PITCH"
|
||
2780 GOTO 1310
|
||
2790 PRINT "BEATS IT OUT! SINGLE!"
|
||
2800 N=1
|
||
2810 GOSUB 3540
|
||
2820 GOTO 710
|
||
2830 GOSUB 4100
|
||
2840 IF O<>3 THEN 710
|
||
2850 PRINT "3 OUTS. THE SIDE IS RETIRED";
|
||
2860 I=B(1)+B(2)+B(3)
|
||
2870 IF I=0 THEN PRINT "."
|
||
2880 IF I=1 THEN PRINT ", LEAVING 1 MAN ON BASE"
|
||
2890 IF I>1 THEN PRINT ", LEAVING";I;"MEN ON BASE"
|
||
2900 PRINT
|
||
2910 PRINT
|
||
2920 PRINT "*************"
|
||
2930 D=T/2-INT(T/2)
|
||
2940 PRINT "AFTER";
|
||
2950 IF T>1 THEN PRINT INT(T/2);
|
||
2960 IF D>.3 THEN PRINT " 1/2 ";
|
||
2970 Y$="INNINGS"
|
||
2980 IF T<3 THEN Y$="INNING"
|
||
2990 PRINT Y$;" OF PLAY, THE SCORE IS"
|
||
3000 GOSUB 3960
|
||
3010 O=0:B(1)=0:B(2)=0:B(3)=0
|
||
3020 IF A=0 THEN 510 ELSE 470
|
||
3030 REM MY TEAM IS AT BAT
|
||
3040 Y=RND(1)
|
||
3050 IF B(1)+B(2)+B(3)=0 THEN 3140
|
||
3060 REM IF O=2 AND S=2 AND B=3 THEN 4850
|
||
3070 IF B(3)=1 THEN 3110
|
||
3080 IF B(2)=0 THEN 3100
|
||
3090 IF .45<Y AND .46>Y THEN 4450
|
||
3100 IF .45<Y AND .47>Y THEN 4450
|
||
3110 IF O=2 THEN 3140
|
||
3120 IF O<2 AND Y<.333 AND B(3)=1 THEN 2600
|
||
3130 IF .45<Y AND .55>Y THEN 2600
|
||
3140 IF S=0 THEN 3240
|
||
3150 IF B<>3 THEN 3180
|
||
3160 IF Y<.6 THEN 1450
|
||
3170 GOTO 1140
|
||
3180 IF Y>.3 THEN 1450
|
||
3190 IF S<>2 THEN 1140
|
||
3200 IF B=0 AND Y<.1 THEN 1140
|
||
3210 IF B=0 THEN 1450
|
||
3220 IF Y<.2 THEN 1140
|
||
3230 GOTO 1450
|
||
3240 IF B=3 THEN 3270
|
||
3250 IF Y<.6 THEN 1140
|
||
3260 GOTO 1450
|
||
3270 IF Y<.9 THEN 1140
|
||
3280 GOTO 1450
|
||
3290 IF T<>19 THEN 3330
|
||
3300 IF R1<>R2 THEN 3340
|
||
3310 PRINT
|
||
3320 PRINT "*** GOING INTO EXTRA INNINGS ***"
|
||
3330 IF R1=R2 THEN RETURN
|
||
3340 IF (T-1)/2<>INT(T-1)/2 THEN RETURN
|
||
3350 PRINT "THE BALLGAME IS OVER."
|
||
3360 PRINT "*************"
|
||
3370 PRINT "FINAL SCORE:"
|
||
3380 T9=1
|
||
3390 GOSUB 3960
|
||
3400 IF R1>R2 THEN 3470
|
||
3410 PRINT "NICE TRY, ";B$
|
||
3420 PRINT "YOU SHOULD KNOW BETTER THAN TO TRY TO"
|
||
3430 PRINT "OUT-MANAGE A COMPUTER. MAYBE BASEBALL"
|
||
3440 PRINT "JUST ISN'T YOUR SPORT...WHY DON'T YOU TRY GOLF?"
|
||
3450 REM CHAIN GOLF
|
||
3460 STOP
|
||
3470 PRINT "CONGRATULATIONS, ";B$
|
||
3480 PRINT "YOU'VE BEATEN ME, BUT I WILL HAVE MY REVENGE."
|
||
3490 STOP
|
||
3500 REM 9TH INNING
|
||
3510 IF A=0 THEN 3530
|
||
3520 IF R2>R1 THEN 3350 ELSE RETURN
|
||
3530 IF R1>R2 THEN 3350 ELSE RETURN
|
||
3540 REM ADVANCE N BASES (SET N BEFORE GOSUB)
|
||
3550 N2=B(1)+B(2)+B(3)
|
||
3560 IF C=5 THEN N=N+1
|
||
3570 N3=N
|
||
3580 IF N2=0 THEN 3650
|
||
3590 REM FIND LAST RUNNER: MAKE SURE HE ISN"T TRYING TO ADVANCE
|
||
3600 REM PAST HOME PLATE.
|
||
3610 FOR I=1 TO 3
|
||
3620 IF B(I)=1 THEN 3640
|
||
3630 NEXT I
|
||
3640 IF 4-I<N THEN N3=4-I
|
||
3650 FOR I=3+N TO N+1 STEP -1
|
||
3660 B(I)=B(I-N)
|
||
3670 NEXT I
|
||
3680 B(N)=1
|
||
3690 IF N=1 THEN 3740
|
||
3700 FOR P=1 TO 3
|
||
3710 IF (N-P)>1 THEN B(N-P)=0
|
||
3720 IF (N-P)<=1 THEN B(1)=0
|
||
3730 NEXT P
|
||
3740 FOR P=1 TO 7
|
||
3750 IF P=N THEN 3780
|
||
3760 NEXT P
|
||
3770 GOTO 3830
|
||
3780 IF C=4 OR N2=0 THEN 3830
|
||
3790 Y$="RUNNERS ADVANCE"
|
||
3800 IF N2=1 THEN Y$="RUNNER ADVANCES"
|
||
3810 PRINT Y$;N3;
|
||
3820 IF N3=1 THEN PRINT "BASE" ELSE PRINT "BASES"
|
||
3830 IF B(4)+B(5)+B(6)+B(7)=0 THEN RETURN
|
||
3840 REM AT LEAST 1 RUN HAS SCORED.
|
||
3850 N2=B(4)+B(5)+B(6)+B(7)
|
||
3860 IF A=0 THEN 3890
|
||
3870 R2=R2+N2
|
||
3880 GOTO 3900
|
||
3890 R1=R1+N2
|
||
3900 B(4)=0:B(5)=0:B(6)=0:B(7)=0
|
||
3910 IF N2=1 THEN PRINT "** 1 RUN SCORED"
|
||
3920 IF N2>1 THEN PRINT "**";N2;"RUNS SCORED"
|
||
3930 PRINT
|
||
3940 PRINT
|
||
3950 PRINT "********NEW SCORE:"
|
||
3960 IF H=1 THEN 4000
|
||
3970 IF LEN(A$)>LEN(C$) THEN PRINT A$;TAB(LEN(A$)+3);R1
|
||
3980 IF LEN(A$)<=LEN(C$) THEN PRINT A$;TAB(LEN(C$)+3);R1
|
||
3990 IF H=1 THEN 4030
|
||
4000 IF LEN(A$)>LEN(C$) THEN PRINT C$;TAB(LEN(A$)+3);R2
|
||
4010 IF LEN(A$)<=LEN(C$) THEN PRINT C$;TAB(LEN(C$)+3);R2
|
||
4020 IF H=1 THEN 3970
|
||
4030 PRINT "*************"
|
||
4040 PRINT
|
||
4050 PRINT
|
||
4060 IF T9=1 THEN 4090
|
||
4070 IF A=1 AND T>17 AND INT(T/2)=T/2 AND R2>R1 THEN 3350
|
||
4080 IF A=0 AND T>17 AND INT(T/2)=T/2 AND R1>R2 THEN 3350
|
||
4090 RETURN
|
||
4100 REM LEAD RUNNER OUT (FIELDER"S CHOICE THEN ONE BASE ADVANCE)
|
||
4110 N=1
|
||
4120 I=4
|
||
4130 IF B(4)=0 AND B(3)=1 AND B(2)=1 AND B(1)=1 THEN 4220
|
||
4140 I=3
|
||
4150 IF B(3)=0 AND B(2)=1 AND B(1)=1 THEN 4220
|
||
4160 I=2
|
||
4170 IF B(2)=0 AND B(1)=1 THEN 4220
|
||
4180 REM NO ONE FORCED
|
||
4190 O=O+1
|
||
4200 PRINT "BATTER THROWN OUT"
|
||
4210 RETURN
|
||
4220 B(I-1)=0
|
||
4230 F=RND(1)
|
||
4240 IF O=2 OR F>.3 THEN 4290
|
||
4250 O=O+2
|
||
4260 PRINT "DOUBLE PLAY!"
|
||
4270 IF O=3 THEN RETURN
|
||
4280 GOTO 4910
|
||
4290 O=O+1
|
||
4300 PRINT "RUNNER ON BASE";I-1;"IS OUT ON FIELDER'S CHOICE"
|
||
4310 IF O=3 THEN RETURN
|
||
4320 GOSUB 3540
|
||
4330 RETURN
|
||
4340 REM FORCED RUNNERS ADVANCE 1 BASE, OTHERS HOLD
|
||
4350 FOR I=1 TO 3
|
||
4360 IF B(I)=0 THEN 4400
|
||
4370 NEXT I
|
||
4380 N=1
|
||
4390 GOTO 3540
|
||
4400 REM NO ONE ON BASE I
|
||
4410 FOR I2=I TO 1 STEP -1
|
||
4420 B(I2)=1
|
||
4430 NEXT I2
|
||
4440 RETURN
|
||
4450 REM LEAD RUNNER STEALS
|
||
4460 FOR I=3 TO 1 STEP -1
|
||
4470 IF B(I)=1 THEN 4510
|
||
4480 NEXT I
|
||
4490 PRINT "NO ONE ON BASE, DUMMY!"
|
||
4500 GOTO 990
|
||
4510 REM I IS LEAD RUNNER"S BASE
|
||
4520 IF C<>5 THEN GOSUB 5240
|
||
4530 IF RND(1)/I<.3 THEN 4680
|
||
4540 IF B(1)+B(2)+B(3)>1 THEN 4570
|
||
4550 PRINT "RUNNER STEALS A BASE"
|
||
4560 GOTO 4580
|
||
4570 PRINT "RUNNERS STEAL A BASE"
|
||
4580 N=1
|
||
4590 C2=C
|
||
4600 C=4
|
||
4610 GOSUB 3540
|
||
4620 C=C2
|
||
4630 B(1)=0
|
||
4640 IF C=5 AND S<>3 THEN 930
|
||
4650 IF C=5 THEN 710
|
||
4660 Y=RND(1)
|
||
4670 IF Y>.5 THEN 1210 ELSE 1310
|
||
4680 PRINT "RUNNER THROWN OUT STEALING"
|
||
4690 O=O+1
|
||
4700 B(I)=0
|
||
4710 IF O=3 THEN 2850
|
||
4720 N=1
|
||
4730 GOSUB 3540
|
||
4740 B(1)=0
|
||
4750 IF C=5 AND S<>3 THEN 930
|
||
4760 IF C=5 THEN 710
|
||
4770 Y=RND(1)
|
||
4780 IF B=3 THEN 1310
|
||
4790 IF Y>.5 THEN 1210 ELSE 1310
|
||
4800 REM RUNNERS ADVANCE ONE BASE, BATTER THROWN OUT
|
||
4810 N=1
|
||
4820 IF O=2 THEN 4850
|
||
4830 GOSUB 3540
|
||
4840 B(1)=0
|
||
4850 O=O+1
|
||
4860 PRINT "BATTER THROWN OUT"
|
||
4870 RETURN
|
||
4880 PRINT "HIT BATSMAN (OUCH!)"
|
||
4890 GOSUB 4950
|
||
4900 GOTO 710
|
||
4910 N=1
|
||
4920 GOSUB 3540
|
||
4930 B(1)=0
|
||
4940 RETURN
|
||
4950 REM BATTER WALKED
|
||
4960 FOR I=1 TO 3
|
||
4970 IF B(I)=0 THEN 5010
|
||
4980 NEXT I
|
||
4990 N=1
|
||
5000 GOTO 3540
|
||
5010 IF I=1 THEN 5050
|
||
5020 FOR I0=I TO 2 STEP -1
|
||
5030 B(I0)=B(I0-1)
|
||
5040 NEXT I0
|
||
5050 B(1)=1
|
||
5060 RETURN
|
||
5070 PRINT "WHEN YOUR'RE UP:"
|
||
5080 PRINT "1-BATTER TAKES PITCH"
|
||
5090 PRINT "2-BATTER SWINGS AWAY"
|
||
5100 PRINT "3-BATTER BUNTS"
|
||
5110 PRINT "4-LEAD RUNNER STEALS"
|
||
5120 REM PRINT "5-HIT AND RUN"
|
||
5130 RETURN
|
||
5140 REM PITCHING ROUTINE
|
||
5150 PRINT "YOUR PITCHER MAY THROW:"
|
||
5160 PRINT "1-FAST BALL"
|
||
5170 PRINT "2-CURVE"
|
||
5180 PRINT "3-SLIDER"
|
||
5190 PRINT "4-SINKER"
|
||
5200 PRINT "5-CHANGE-UP"
|
||
5210 PRINT "6-KNUCKLEBALL"
|
||
5220 PRINT "7-SCREWBALL"
|
||
5230 RETURN
|
||
5240 IF A=0 THEN 5370
|
||
5250 IF R9=1 THEN 5300
|
||
5260 PRINT "WHAT WILL YOUR PITCHER THROW";
|
||
5270 INPUT W
|
||
5280 IF W<0 THEN R9=1
|
||
5290 IF R9=0 THEN 5320 ELSE PRINT "RANDOM PITCHES FOR REST OF INNING"
|
||
5300 W=INT(RND(1)*8+1)
|
||
5310 IF W=8 THEN 5300
|
||
5320 IF W>0 AND W<8 THEN 5470
|
||
5330 PRINT "UH-UH, ";B$;". ";
|
||
5340 GOSUB 5150
|
||
5350 PRINT
|
||
5360 GOTO 5260
|
||
5370 REM I MUST SELECT A PITCH
|
||
5380 W1=RND(1)
|
||
5390 W=1
|
||
5400 IF W1<.75 THEN W=2
|
||
5410 IF W1<.55 THEN W=3
|
||
5420 IF W1<.45 THEN W=4
|
||
5430 IF W1<.35 THEN W=5
|
||
5440 IF W1<.15 THEN W=6
|
||
5450 IF W1<.08 THEN W=7
|
||
5460 GOTO 5470
|
||
5470 PRINT W$(W);
|
||
5480 PRINT "...";
|
||
5490 RETURN
|
||
5500 REM HIT-AND-RUN
|
||
5510 IF B(1)+B(2)+B(3)=0 THEN 4490
|
||
5520 GOSUB 5240
|
||
5530 PRINT "HIT AND RUN!"
|
||
5540 C=5
|
||
5550 GOTO 1460
|
||
5560 DATA FAST BALL,CURVE BALL,SLIDER,SINKER,CHANGE-UP,KNUCKLEBALL
|
||
5570 DATA SCREWBALL
|
||
5580 DATA RIGHT,LEFT,CENTER,FIRST,SECOND,THIRD,SHORTSTOP,PITCHER,CATCHER
|
||
5590 DATA RIGHT OVER THE PLATE,CAUGHT THE OUTSIDE CORNER
|
||
5600 DATA OVER THE INSIDE CORNER,OVER AT THE KNEES
|
||
5610 DATA HIGH,LOW,INSIDE,OUTSIDE,HIGH AND TIGHT,LOW AND OUTSIDE
|
||
5620 DATA LOW AND INSIDE,HIGH AND OUTSIDE
|
||
5630 END
|
||
|