FUNDAMENTOS DEL MODELO MATEMATICO
PARA
“MANAGER
Este sistema ha sido realizado tratando de conformar una
serie de operaciones matemáticas que ayuden a producir las jugadas en el campo
de juego del Rey de los Deportes: el beisbol. La particularidad más importante del
modelo radica en que se aprovechó la versatilidad de las computadoras para
generar números aleatorios, mismos que de acuerdo a una estructura de
probabilidades es factible seleccionar valores numéricos que representarán
algún movimiento en el campo de juego, empleando para ello información
estadística real de los jugadores en su desempeño profesional.
Los datos base de esta primera versión fueron tomados de las
Grandes Ligas de los Estados Unidos.
Gran cantidad de líneas de programación han sido requeridas
para llegar a configurar este primer intento, además de innumerables juegos de
prueba (más de 400) que sirvieron para calibrar los parámetros clave que han
sido diseñados. A continuación pasaremos a describir de un modo general las propiedades
del modelo.
Cálculos Previos
Antes de ingresar a la realización de las jugadas en el
partido, el usuario deberá seleccionar si desea un juego cerrado, un juego con
muchas carreras
o será la computadora quien decida.
¿Cuál es la diferencia entre cada una de ellas?: En el juego
cerrado, los datos del pitcher serán afectados considerando la particularidad
de que la información utiliza valores promedios, y para un juego dado los datos
pueden estar por arriba (mucho bateo) o por debajo de la media (poco bateo).
¿Cómo se afectan estos datos?.
Cuando un partido será cerrado el promedio de bateo en contra del pitcher (sin
considerar los ponches) será afectado por un coeficiente igual a 0.85; si el
partido se escoge con bateo, el factor será de 1.15. Cuando se opte porque sea
la computadora la que elija,
el factor será considerado eligiendo
un número aleatorio N de
Ejemplo: si un pitcher, digamos Tom Seaver, sacó 819 outs en
1969, de los cuales 208 fueron ponches con 140 hits conectados, significa que
el
promedio de bateo opositor (hacia el campo),
es de 140/611 = 0.229. Si la computadora alteatoriamente escogiera el número
98, significará que el
promedio de bateo en contra para él en el
juego será de 0.229x1.15=0.263. Debe recordarse el hecho de que cada vez que un
pitcher enfrente a un bateador, este porcentaje “competirá” con el del bateador
para establecer la jugada.
Cálculos para el Bateador
¿Cómo se considera el porcentaje para el bateador?
Este modelo matemático de beisbol supone que el bateador
trabaja con sus valores medios, pero, cuando ocurre que acumula veces al bat
sin conectar de hit, entonces el porcentaje de bateo se incrementa de acuerdo a
la siguiente ecuación,
Pbateo = f1 + [(n-1)m]
donde f1 corresponde al porcentaje de
bateo al campo del jugador tomado de la estadística oficial (hits
conectados)/(outs en campo + hits), n es el número de oportunidades sin
conectar de hit, y,
m = (f2 – f1)/(nmax-1)
El valor f2 se define como el porcentaje de bateo al campo
máximo que podemos manejar dentro de un número nmax de oportunidades para el jugador;
este número nmax puede se calculado por la expresión,
Nmax= (5/PCT) (Después de varias alternativas, esta expresión
para Nmax resultó satisfactoria)
donde PCT=porcentaje de bateo natural
(hits/oportunidades). Para el cálculo de f2 podemos establecer una serie de
condicionantes de acuerdo a la
calidad bateadora; si PCT>=0.300,
f2=0.85; si 0.275<=PCT<0.300, f2=0.80; si 0.250<=PCT<0.275,
f2=0.75; si PCT<0.250, f2=0.70.
Ejemplo: si Tom Seaver enfrentará a Ted Sizemore (LA) quien
ha fallado en sus últimos 4 turnos al bat, su porcentaje de bateo al campo que
competirá con el de Tom Seaver será el siguiente:
DATOS DE BATEO DE TED SIZEMORE PARA
VB=590,
HITS=160, H2=20, H3=5, HR=4, BB=45, K=40, CPR=46
El cálculo será el siguiente:
PCT=160/590=0.271,
Nmax=5/0.271=18, f2=0.75, f1=160/(590-40)=0.290,
m=(0.75-0.29)/(18-1)=0.027; Pbateo=(0.290)+
(4-1)(0.027)=0.371
Si acaso Sizemore acumulara 10 turnos sin pegar de hit, el
porcentaje de bateo al campo se incrementa hasta 0.533; todavía más, si se
observa un aumento de turnos superior a Nmax=18, el porcentaje de bateo al
campo será de 0.75 en forma constante.
Para el caso de la primera pregunta, el porcentaje de Tom
Seaver produciráun archivo de 26 “H” y 74 “O”, mientras que para el bateador
Sizemore el arreglo estará dado por 37 “H” y 63 “O” distribuidos en forma
aleatoria. La computadora escogerá un número en cada arreglo seleccionando la
letra correspondiente; cuando ambas literales sean iguales producirá la jugada,
ya sea de hit o de out.
Debe quedar claro que una cosa es el porcentaje de bateo
natural y otra es el porcentaje de bateo al campo. Este último se calcula igual
que el primero, sólo que al número de oportunidades al bat se le restan los
ponches.
¿Porqué se usan estos porcientos en
el cálculo de las probabilidades?
Lo anterior se ha decidido así por la razón de que la
primera pregunta que la computadora se hace para definir una jugada, ya sea de
out o de hit, es la de aclarar si la jugada se quedará en el cátcher o nó.
Si la pelota se queda en el cátcher la jugada puede ser base
por bolas o ponche; el pitcher y el bateador tienen un comportamiento muy
especial respecto a ésto, y es por ello que se trató de dividir en dos grandes opciones.
Partimos del principio de que el perfil del juego habrá de definirlo el
pitcher. Tom Seaver, por ejemplo, tiene un total en 1969 de 208 ponches y 82
base por bolas, lo cual significa que 290 jugadas quedaron en el cátcher;
por otro lado, de los 819 hombres que
retiró en la temporada, 611 fueron outs realizados por el cuadro o en los
jardines permitiendo 140 hits. Esto significa que las jugadas en el campo
resultaron ser 751, entre outs y hits.
Del total de jugadas, que acumulan 1041, el 72.1% se
definieron en el campo mientras que el 27.9% restante quedaron en las manos del
cátcher. Comparativamente hablando, Juan
Marichal de los Gigantes de San Francisco tuvo ese mismo año un porcentaje de
jugadas en el cátcher del19%. De las investigaciones anteriores se tuvo por
conclusión que lo más pertinente sería, a fin de darle una versión más realista
a las simulaciones, considerar una primera definición en base a los datos del
pitcher exclusivamente. En caso de que la jugada se decida en el cátcher, los
promedios de base por bolas y ponche de bateador y del pitcher son enfrentados
del mismo modo que lo hicimos anteriormente para las jugadas en el campo. Debe
aclararse sin embargo, que las probabilidades de ponche para el pitcher se van
incrementando a medida que se acumulan las oportunidades que no obtuvo los tres strikes, de modo similar cuando el bateador
no pega de hit. Existe otro control también para limitar el número de ponches
superior a 10 así como un aumento gradual de las jugadas en el cuadro a medida
que se aumenta el número de lanzamientos, pues es común observar que los lanzadores disminuyen su
efectividad conforme acumulan entradas.
Después de que se ha decidido que tipo de jugada será, ya
sea out al campo o hit, existe un gran árbol de probabilidades para definir el
tipo de hit (sencillo, doble, triple y homerun) en base a las estadísticas del
jugador y del pitcher.
El resto de las instrucciones del programa tienen que ver
con la organización de las entradas y opciones de juego.
Estructura del Programa BEIS.exe
A continuación presentaremos un desgloce del programa en
lenguaje
QBASIC4.5 que ha sido utilizado para realizar las
simulaciones.
2 CLS : LOCATE 1, 1: PRINT
"OPRIMA (1) SI DESEA JUEGO CERRADO"
LOCATE 2, 1: PRINT " (2) SI DESEA JUEGO CON BATEO"
LOCATE 3, 1: PRINT " (3) SI DESEA QUE
LOCATE 4, 1:
PRINT "SELECCION?(1-3): "; : INPUT
"", ZZZ
IF ZZZ >
3 OR ZZZ < 1 THEN CHAIN "DATOS7.EXE"
CC1 = 14: CC4 = 8
DIM A(11, 2), B$(100, 6), C(10),
D$(100), E(100), F(10, 2), U(12, 2)
DIM G(2, 50, 7), R$(5)
DIM Q(4, 2), V(2, 6), W(2, 30), J(5, 5), H(5), I(20), K(5, 5),
L(20)
Q(2, 1) = 34: Q(2, 2) = 125: Q(3, 1) =
157: Q(3, 2) = 120
Q(4, 1) = 157: Q(4, 2) = 27
1 REM "CALIBRANDO"
OPEN
"MGZ.TXT" FOR INPUT AS #1
INPUT #1,
MGZ
CLOSE #1
REM
"MGZ = 14000"
F400 = (MGZ
/ 120) * 400
F300 = (MGZ
/ 120) * 300
F500 = (MGZ
/ 120) * 500
F180 = (MGZ
/ 120) * 180
F170 = (MGZ
/ 120) * 170
N15 = 40
CLS
SINK1 = 1:
SINK2 = 1
SINH1 = 1:
SINH2 = 1
OPEN
"R", #2, "CASA", 11
FIELD #2, 7
AS NOM$, 4 AS N8$
GET #2, 11
EQC$ = NOM$
CCASA = CVS(N8$)
FOR I = 1 TO 10:
GET #2, I:
NN$ = NOM$: U(I, 2) = CVS(N8$)
NEXT I
CLOSE #2
OPEN
"R", #3, "VISITA", 11
FIELD #3, 7
AS NOM$, 4 AS N8$
GET #3, 11
EQV$ = NOM$
CVISITA = CVS(N8$)
FOR I = 1 TO
10: GET #3, I: NN$ = NOM$
U(I,
1) = CVS(N8$):
NEXT I
CLOSE #3
SCREEN 9:
COLOR 15, 0
GOTO 591
59 REM
"PIZARRA"
FOR J = 1 TO
2: FOR I = 30 TO 80: LOCATE J, I: PRINT " "; :
NEXT I: NEXT J
LOCATE 1,
30: PRINT EQV$
IF I8 >
10 THEN I9 = 11 ELSE I9 = 1
FOR I = I9
TO I8
LOCATE 1, 37
+ (I - I9) * 3: PRINT USING "###"; W(1, I)
NEXT I
5901 LOCATE
2, 30: PRINT EQC$
5902 FOR I =
I9 TO I8
IF I = I8
AND PITCH = 2 THEN 595
LOCATE 2, 37
+ (I - I9) * 3: PRINT USING "###"; W(2, I)
NEXT I
595 CAR1 =
0: FOR I = 1 TO I8: CAR1 = CAR1 + W(1, I): NEXT I
CAR2 = 0:
FOR I = 1 TO I8: CAR2 = CAR2 + W(2, I): NEXT I
597 LOCATE
1, 71: PRINT USING "##"; CAR1: W(1, 28) =
CAR1: W(2, 28) = CAR2
LOCATE 1,
74: PRINT USING "##"; W(1, 29)
LOCATE 1,
77: PRINT USING "##"; W(1, 30)
LOCATE 2,
71: PRINT USING "##"; CAR2
LOCATE 2,
74: PRINT USING "##"; W(2, 29)
LOCATE 2,
77: PRINT USING "##"; W(2, 30)
IF PITCH = 1
AND I8 >= 9 THEN 598 ELSE 599
598 IF CAR2
= CAR1 THEN 599
IF CAR2 >
CAR1 THEN 1913
599 RETURN
591 REM "POSICIONES DE LOS HOMBRES EN EL CAMPO"
FOR I = 1 TO
9: READ F(I, 1), F(I, 2): NEXT I
DATA 95,75, 18,20, 50,135, 125,150, 175,45, 205,90, 350,105,
270,200, 130,250
J(1,
1) = 20: J(1, 2) = 34: J(1, 3) = 20: J(1, 4) = 122
J(2,
1) = 65: J(2, 2) = 125: J(2, 3) = 153: J(2, 4) = 125
J(3,
1) = 160: J(3, 2) = 98: J(3, 3) = 160: J(3, 4) = 36
J(4,
1) = 140: J(4, 2) = 23: J(4, 3) = 30: J(4, 4) = 23
GOTO 270
189 REM "ASIGNANDO MENU DE POSIBILIDADES PARA BATEADOR
Y PITCHER"
FOR I = 0 TO
100: FOR J = 1 TO 6: B$(I, J) = "": NEXT J: NEXT I
N$ =
"HOBKG": WR = 1: W = 1: L1 = 1: L2 = 1: LF = 2: GOSUB 20900
N$ =
"HOBKG": WR = 1: W = 2: L1 = 3: L2 = 4: LF = 5: GOSUB 20900
N$ =
"HOBKG": WR = 2: W = 3: L1 = 1: L2 = 1: LF = 2: GOSUB 20900
N$ =
"HOBKG": WR = 2: W = 4: L1 = 3: L2 = 4: LF = 5: GOSUB 20900
N$ =
"000000000BP": WR = 1: W = 5: L1 = 10: L2 = 10: LF = 11: GOSUB 20900
N$ =
"000000000BP": WR = 2: W = 6: L1 = 10: L2 = 10: LF = 11: GOSUB 20900
GOTO 90
20900 REM "ASIGNANDO LETRAS POR PROMEDIOS"
FOR I = L1
TO L2
L$ =
MID$(N$, I, 1)
NL = A(I, WR)
FOR J = 1 TO
NL
IF I = 1 AND
WR = 2 THEN I1 = I1 + 1
20 GOSUB 10:
A3 = INT(A2 / 10)
23 IF B$(A3,
W) = "" THEN 21 ELSE 20
21 B$(A3, W)
= L$
50 NEXT J
NEXT I
FOR I = (L2
+ 1) TO LF
L$ =
MID$(N$, I, 1)
NL = A(I, WR)
FOR J = 0 TO
99
IF B$(J, W)
= "" THEN 54 ELSE 55
54 B$(J, W)
= L$: J8 = J8 + 1
IF J8 = NL
THEN 38
55 NEXT J
38 J8 = 0:
NEXT I
RETURN
90 REM
"SELECCIONANDO RESULTADO"
GOSUB 10: A3
= INT(A2 / 10): RE1$ = B$(A3, 5)
GOSUB 10: A3
= INT(A2 / 10): RE2$ = B$(A3, 6)
9009 IF
PITCH = 1 AND RE2$ = "B" THEN VECESBV = VECESBV + 1
IF PITCH = 2
AND RE2$ = "B" THEN VECESBL = VECESBL + 1
9001 IF RE2$
= "B" THEN 9002
REM
"BOLA EN EL CATCHER"
GOSUB 9010
IF PITCH = 1
THEN SINH1 = SINH1 + 1
IF PITCH = 2
THEN SINH2 = SINH2 + 1
9003 GOSUB
10: A3 = INT(A2 / 10): RE3$ = B$(A3, 2)
GOSUB 10: A3
= INT(A2 / 10): RE4$ = B$(A3, 4)
IF RE3$ =
RE4$ THEN 9020 ELSE 9003
9020 IF RE3$
= "K" THEN 9021 ELSE 9022
9021 V(PITCH, 5) = V(PITCH, 5) + 1
GOSUB 10: A3
= INT(A2 / 10)
IF V(PITCH, 5) > 10 THEN 9032 ELSE 9034
9032 IF A3
< 10 THEN 9034
RE5$ =
"O": GOTO 9005
9034 IF
PITCH = 1 THEN SINK1 = 1
IF PITCH = 2
THEN SINK2 = 1
G(E9, BATOB, 7) = G(E9, BATOB, 7) + 1
COLU = 7
RE$ = RE3$:
GOTO 94
9022 V(PITCH, 6) = V(PITCH, 6) + 1
IF V(PITCH, 6) > 5 THEN 9042 ELSE 9044
9042 GOSUB
10: A3 = INT(A2 / 10)
IF A3 <
10 THEN 9044
RE5$ =
"H": GOTO 9005
9044 IF
PITCH = 1 THEN SINK1 = SINK1 + 1
IF PITCH = 2
THEN SINK2 = SINK2 + 1
G(E9, BATOB, 6) = G(E9, BATOB, 6) + 1
COLU = 6
RE$ = RE3$: GOTO 94
9002 REM "BATEANDO
IF PITCH = 1
THEN SINK1 = SINK1 + 1
IF PITCH = 2
THEN SINK2 = SINK2 + 1
9008 GOSUB
10: A3 = INT(A2 / 10): RE5$ = B$(A3, 1)
GOSUB 10: A3
= INT(A2 / 10): RE6$ = B$(A3, 3)
IF RE5$ =
RE6$ THEN 9005 ELSE 9008
9005 IF RE5$
= "O" THEN 9006 ELSE 9007
9006 GOSUB
9010: RE$ = RE5$
IF PITCH = 1
THEN SINH1 = SINH1 + 1
IF PITCH = 2
THEN SINH2 = SINH2 + 1
G(E9, BATOB, 1) = G(E9, BATOB, 1) + 1
COLU = 1
GOTO 94
9007 GOSUB
9012: RE$ = RE5$:
IF PITCH = 1
THEN SINH1 = 1
IF PITCH = 2
THEN SINH2 = 1
GOTO 94
9010 REM "SUBROUTINA DE INCREMENTO DE NO HITS"
OPEN
"R", #2, ARB$ + "H", 4
FIELD #2, 4
AS NOHI$
GET #2, IBAT
VBSH = CVS(NOHI$)
VBSH = VBSH
+ 1
LSET NOHI$ =
MKS$(VBSH)
PUT #2, IBAT
CLOSE #2
OPEN
"R", #2, ARB$ + "4", 4
FIELD #2, 4
AS NHR$
GET #2, IBAT
NOHR = CVS(NHR$)
NOHR = NOHR
+ 1
LSET NHR$ =
MKS$(NOHR)
PUT #2, IBAT
CLOSE #2
RETURN
9012 REM
"SUBROUTINA DE HITS"
OPEN
"R", #2, ARB$ + "H", 4
FIELD #2, 4
AS NOHI$
GET #2, IBAT
VBSH = 1
LSET NOHI$ =
MKS$(1)
PUT #2, IBAT
CLOSE #2
RETURN
9011 REM
"SUBROUTINA DE INCREMENTO DE NO PONCHES"
IF PITCH = 1
THEN SINK1 = SINK1 + 1
IF PITCH = 2
THEN SINK2 = SINK2 + 1
RETURN
9013 REM
"SUBROUTINA DE PONCHES"
IF PITCH = 1
THEN SINK1 = 1
IF PITCH = 2
THEN SINK2 = 1
RETURN
94 RESP$ = RE$
RETURN
190 REM "NUEVO EQUIPO BATEANDO"
U1 = U1 + 1
OU = 0
H(1)
= 0: H(2) = 0: H(3) = 0: H(4) = 0: H(5) = 0
IF U1 / 2 = INT(U1 / 2) THEN 1912
1911 PITCH = 2: CC4 = CVISITA: CC1 = CCASA
E9 = 1
ARB$ = EQV$: ARP$ = EQC$
AR1$ = EQV$
+ "B": AR2$ = EQC$ + "P"
I8 = I8 + 1
1915 IF I8
>= 10 THEN 1913 ELSE 191
1912 PITCH = 1: CC1 = CVISITA: CC4 = CCASA
E9 = 2
AR1$ = EQC$ + "B": AR2$ = EQV$ + "P"
ARB$ = EQC$:
ARP$ = EQV$
IF I8 = 9
THEN 19140 ELSE 191
19140 IF
CAR2 > CAR1 THEN 1913
191 RETURN
1913 REM
"MARCADOR FINAL"
SUM = 0: FOR
I = 1 TO I8: SUM = SUM + W(1, I): NEXT I: CAR1 = SUM
SUM = 0: FOR
I = 1 TO I8: SUM = SUM + W(2, I): NEXT I: CAR2 = SUM
IF CAR1 =
CAR2 THEN 191
1914 LOCATE
4, 5: PRINT "MARCADOR FINAL"
LOCATE 5, 5:
PRINT EQV$; : PRINT ": "; : PRINT USING
"##"; CAR1
LOCATE 6, 5:
PRINT EQC$; : PRINT ": "; : PRINT USING
"##"; CAR2
GOTO 4600
198 REM "SELECCIONANDO EL PROMEDIO DEL BATEADOR Y
PITCHER"
IF Z$ =
"B" OR Z$ = "b" THEN 1981
IF PITCH = 2
THEN 195 ELSE 196
195 BATV =
BATV + 1
IF BATV = 10
THEN BATV = 1
BATOB = U(BATV, 1): GOTO 1981
196 BATC =
BATC + 1
IF BATC = 10
THEN BATC = 1
BATOB = U(BATC, 2)
1981 OPEN
"R", #1, AR1$, 53
FIELD #1, 4
AS NUM$, 15 AS NOMBR$, 4 AS VB$, 4 AS HS$, 4 AS H2$, 4 AS H3$, 4 AS
HR$, 4 AS
BB$, 4 AS K$, 4 AS G$, 2 AS P$
FOR I = 1 TO
N15
GET #1, I
NUM = CVS(NUM$): NOM$ = (NOMBR$): P1$ = (P$): VB1 = CVS(VB$)
B01$ =
MID$(P1$, 1, 1)
B02$ =
MID$(P1$, 2, 1)
HS1 = CVS(HS$): H21 = CVS(H2$): H31 = CVS(H3$): HR1 = CVS(HR$)
BB1 = CVS(BB$): K1 = CVS(K$): G1 = CVS(G$)
BB11 = BB1:
K111 = K1: HR11 = HR1
IF NUM =
BATOB THEN 193
NEXT I
NBATEAD$ =
"S/N": GOTO 1955
193 BATEAD =
BATOB: IBAT = I
NBATEAD$ =
NOM$
PBATEAD$ =
P1$
GOSUB 1931:
GOTO 1932
1931 REM "SUBRUTINA DE CUANTOS NO HITS"
OPEN
"R", #2, ARB$ + "H", 4
FIELD #2, 4
AS NOHI$
GET #2, IBAT
N = CVS(NOHI$)
SHIT = N
CLOSE #2
RETURN
1932 IF VB1
= 0 OR VB1 < 0 THEN 1955
IF HS1 = 0
THEN 1955 ELSE 1956
1955 VB1 =
664: HS1 = 108: H21 = 17: H31 = 2: HR1 = 6
BB1 = 29: K1
= 235: G1 = 3
1956 F1 =
HS1 / (VB1 - K1)
PCT = HS1 /
VB1
1978 IF PCT
>= .3 THEN F2 = .85
IF PCT >=
.275 AND PCT < .3 THEN F2 = .8
IF PCT >=
.25 AND PCT < .275 THEN F2 = .75
IF PCT <
.25 THEN F2 = .7
PCTJE = HS1
/ VB1
19781 NMAX =
(1 / PCT) * 5
M = (F2 -
F1) / (NMAX - 1):
FB = F1 + (M
* (N - 1))
IF FB >
F2 THEN FB = F2
HS0 = HS1
HS1 = VB1 *
FB
H21 = H21
H31 = H31
HR1 = HR1
COUT = VB1 -
HS0 - K1: CBOLAS = BB1
CPONCHES =
K1: CGOLPES = .01 * VB1
CANT1 = VB1
- K1
CANT2 =
CBOLAS + CPONCHES + CGOLPES
CANT3 =
CANT1 + CANT2
A(1,
1) = INT(FB * 100)
IF A(1, 1) > 90 THEN A(1, 1) = 90
A(2,
1) = 100 - A(1, 1)
A(4,
1) = INT((CPONCHES / CANT2) * 100)
A(5,
1) = INT((CGOLPES / CANT2) * 100)
A(3,
1) = 100 - A(5, 1) - A(4, 1)
1901 REM
"DISTRIBUCION DE HITS"
HE0 = H21 +
H31 + HR1
IF HE0 = 0
THEN F = 0
IF HE0 = 0
THEN 19011
F1 = HE0 /
HS0: FMAX = .7
NMAX = (1 /
F1) * 5
M = (FMAX -
F1) / (NMAX - 1)
OPEN
"R", #2, ARB$ + "4", 4
FIELD #2, 4
AS NHR$
GET #2, IBAT
N = CVS(NHR$)
NOHR = N
CLOSE #2
F = F1 + (M
* (N - 1))
IF N >
NMAX THEN F = FMAX
HE = F * HS1
H21 = (H21 /
HE0) * HE: HR1 = (HR1 / HE0) * HE: H31 = (H31 / HE0) * HE
A(7,
1) = INT((H21 / HS1) * 100)
A(8,
1) = INT((H31 / HS1) * 100)
A(6,
1) = 100 - A(7, 1) - A(8, 1) - A(9, 1)
19022 IF A(6, 1) < 0 THEN A(6, 1) = 0
19023 SSS =
CANT1 / CANT3: A(10, 1) = INT(SSS * 100)
A(11, 1) = 100 - A(10, 1)
19003 CLOSE #1
RETURN
19801 REM "SELECCIONANDO PROMEDIO DEL PITCHER"
BATO = U(10, PITCH)
IF V(PITCH, 1) = 0 THEN 1897 ELSE 1898
1897 GOSUB
10: A3 = INT(A2 / 10)
IF A3 <=
15 THEN V(PITCH, 4) = .85
IF A3 >=
16 AND A3 <= 40 THEN V(PITCH, 4) = .95
IF A3 >
40 AND A3 <= 70 THEN V(PITCH, 4) = 1
IF A3 >
70 AND A3 <= 95 THEN V(PITCH, 4) = 1.05
IF A3 >
95 THEN V(PITCH, 4) = 1.15
IF ZZZ = 1
THEN V(PITCH, 4) = .85
IF ZZZ = 2
THEN V(PITCH, 4) = 1.15
1898 IF Z$ =
"P" THEN BATO = NUM
OPEN
"R", #1, AR2$, 53
FIELD #1, 4
AS NUM$, 15 AS NOMBR$, 4 AS VB$, 4 AS HS$, 4 AS H2$, 4 AS H3$, 4 AS
HR$, 4 AS
BB$, 4 AS K$, 4 AS G$, 2 AS P$
FOR I = 1 TO
20
GET #1, I
NUM = CVS(NUM$): NOM$ = (NOMBR$): P1$ = (P$): VB1 = CVS(VB$)
HS1 = CVS(HS$): H21 = CVS(H2$): H31 = CVS(H3$): HR1 = CVS(HR$)
BB1 = CVS(BB$): K1 = CVS(K$): G1 = CVS(G$)
B02$ =
MID$(P1$, 1, 1)
IF NUM =
BATO THEN 197
NEXT I
CLOSE #1
IF Z$ =
"P" OR Z$ = "p" THEN 3000
197 COUT =
VB1 - K1: CHITS = HS1 + H21 + H31 + HR1: CBOLAS = BB1
CPONCHES =
K1: CGOLPES = .02 * VB1
NOPITCH$ =
NOM$: IPIT = I
GOSUB 19701: GOTO 19702
19701 REM "SUBROUTINA DE CUANTOS NO PONCHES"
IF PITCH = 1
THEN N = SINK1
IF PITCH = 2
THEN N = SINK2
RETURN
19702 CANT1
= VB1 + CHITS
CANT2 =
CBOLAS + CPONCHES + CGOLPES
CANT3 =
CANT1 + CANT2
F2 = .95
F1 =
CPONCHES / (CPONCHES + CBOLAS)
NMAX = (1 /
F1) * 5
M1 = (F2 - F1)
/ (NMAX - 1)
F = F1 + (M1
* (N - 1))
IF F > F2
THEN F = F2
CPONCHF = INT((CPONCHES + CBOLAS) * F)
CBOLASF =
CBOLAS + CPONCHES - CPONCHF
IF PITCH = 1
THEN N = SINH1
IF PITCH = 2
THEN N = SINH2
F2 = .75: F1
= CHITS / (CHITS + COUT)
F1 = F1 * V(PITCH, 4)
N2 = (1 /
F1) * 5
M2 = (F2 -
F1) / (N2 - 1): F = F1 + (M2 * (N - 1))
IF F > .9
THEN F = .9
F99 = F
CANTH = INT(F * CANT1)
CANTO =
CANT1 - CANTH
CANT1F =
CANTH + CANTO
CANT2F =
CPONCHF + CBOLASF + CGOLPES
CANT3F = CANT1F
+ CANT2F
A(1,
2) = INT((F) * 100)
A(2,
2) = 100 - A(1, 2)
A(4,
2) = INT((CPONCHF / CANT2F) * 100)
IF A(4, 2) > 75 THEN A(4, 2) = 75
A(5,
2) = INT((CGOLPES / CANT2F) * 100)
A(3,
2) = 100 - A(4, 2) - A(5, 2)
A(7,
2) = INT((H21 / CHITS) * 100)
A(8,
2) = INT((H31 / CHITS) * 100)
A(9,
2) = INT((HR1 / CHITS) * 100)
A(6,
2) = 100 - A(7, 2) - A(8, 2) - A(9, 2)
IF V(PITCH, 4) <= 1 THEN FCAMPO = 1 ELSE FCAMPO = 1.5
CAMPO = COUT + CHITS
CANT32 = CBOLAS + CPONCHES + CAMPO
N50 = 25: N120 = 100
PP = ((CAMPO / CANT32) * FCAMPO)
IF PP >
.95 THEN PP = .95
A(10,
2) = INT(PP * 100)
IF V(PITCH, 1) > N50 THEN 19907 ELSE 19908
19907 N = V(PITCH, 1): IF N > N120 THEN N = N120
PF = PP +
(((.95 - PP) / (N120 - N50)) * (N - N50))
IF PF >
.95 THEN PF = .95
A(10,
2) = INT(PF * 100)
CLOSE #1
RETURN
200 REM "DIBUJANDO CAMPO DE JUEGO"
LINE (0,
0)-(450, 350), 2, BF
LINE (30,
30)-(420, 30): LINE (30, 30)-(30, 310)
LINE (27,
120)-(34, 125), , BF: LINE (157, 120)-(164, 125), , BF
LINE (157,
27)-(164, 32), , BF
CIRCLE (95,
75), 20
XX = 0: YY =
100: LINE (XX, YY)-(XX + 10, YY)
LINE (XX +
10, YY)-(XX + 10, YY + 30)
LINE (XX +
10, YY + 30)-(XX, YY + 30)
CIRCLE (5,
110), 4, CC4: PAINT (5, 110), CC4
XX = 125: YY
= 8: LINE (XX, YY)-(XX, YY + 7)
LINE (XX, YY
+ 7)-(XX + 45, YY + 7)
LINE (XX +
45, YY + 7)-(XX + 45, YY)
CIRCLE (150,
8), 4, CC4: PAINT (150, 8), CC4
REM
"BARDA"
LINE (0,
310)-(300, 310): LINE (250, 310)-(350, 250)
LINE (0, 311)-(300,
311): LINE (250, 311)-(350, 251)
LINE (350,
250)-(420, 170): LINE (420, 215)-(420, 30)
LINE (350,
251)-(420, 171): LINE (421, 215)-(421, 30)
LINE (290,
310)-(420, 210)
LINE (289,
310)-(420, 209)
C9 = 9
LINE (254,
309)-(351, 252), C9: LINE (351, 252)-(419, 174), C9
LINE (419,
174)-(419, 208), C9: LINE (419, 208)-(289, 309), C9
LINE (289,
309)-(254, 309), C9
PAINT (280,
300), C9
FOR X = 425
TO 440 STEP 6: FOR Y = 30 TO 300 STEP 6: C = INT(RND *
10)
IF C = 2 OR
C = 0 OR C = 8 THEN C = 14
CIRCLE (X,
Y), 3, C: PAINT (X, Y), C: NEXT Y: NEXT X
FOR X = 300
TO 420 STEP 6: Y = 310 - (.8 * (X - 300))
FOR Z = Y TO
310 STEP 6: C = INT(RND * 10):
IF C = 2 OR
C = 0 OR C = 8 THEN C = 14
CIRCLE (X,
Z), 3, C: PAINT (X, Z), C: NEXT Z: NEXT X
FOR X = 0 TO
440 STEP 6: FOR Y = 315 TO 340 STEP 6: C = INT(RND *
10)
IF C = 2 OR
C = 0 OR C = 8 THEN C = 14
CIRCLE (X,
Y), 3, C: PAINT (X, Y), C: NEXT Y: NEXT X
LINE (0,
320)-(100, 340), 8, BF: LINE (35, 330)-(65, 340), 0, BF
LINE (0,
320)-(100, 330), 0, BF
FOR I = 1 TO
10: X = 0 + (I * 9): Y = 325
CIRCLE (X,
Y), 3, 14: PAINT (X, Y), 14: NEXT I
C8 = 0
LINE (320,
310)-(420, 230), C8: LINE (320, 310)-(420, 310), C8
LINE (420,
310)-(420, 230), C8: PAINT (400, 300), C8
FOR I = 1 TO
17: X = 330 + (I * 5): Y = 310 - (.8 * (X - 330))
CIRCLE (X,
Y), 3, 14: PAINT (X, Y), 14: NEXT I
LINE (343,
310)-(420, 250), 8: LINE (343, 310)-(420, 310), 8
LINE (420,
250)-(420, 310), 8
PAINT (400,
300), 8
LINE (100,
330)-(440, 340), 8, BF
LINE (340,
330)-(440, 260), 8: LINE (340, 330)-(440, 330), 8
LINE (440,
260)-(440, 330), 8
PAINT (430,
300), 8
LINE (440,
30)-(450, 260), 8, BF
LINE (430,
30)-(450, 105), 0, BF
FOR I = 1 TO
10: X = 440: Y = 35 + (I - 1) * 7: CIRCLE (X, Y), 3, 14
PAINT (X,
Y), 14: NEXT I
REM
"HOME PLATE"
LINE (28,
31)-(33, 29): LINE (33, 29)-(29, 24): LINE (29, 24)-(24, 24)
LINE (24, 24)-(24, 28): LINE (24, 28)-(28, 31)
PAINT (28, 27)
REM "DIBUJO DE JUGADORES"
IF B01$ =
"L" THEN B0$ = "L"
IF B01$ =
"R" THEN B0$ = "R"
IF B01$ =
"B" AND B02$ = "L" THEN B0$ = "R"
IF B01$ =
"B" AND B02$ = "R" THEN B0$ = "L"
IF B0$ =
"L" THEN 2001 ELSE 2002
2001 X20 = 20: Y34 = 34: GOTO 2004
2002 X20 = 40: Y34 = 23
2004 CIRCLE (X20, Y34), 4, CC4: PAINT (X20, Y34), CC4
CIRCLE (18,
20), 4, CC1: PAINT (18, 20), CC1
CIRCLE (50,
135), 4, CC1: PAINT (50, 135), CC1
CIRCLE (125,
150), 4, CC1: PAINT (125, 150), CC1
CIRCLE (205,
90), 4, CC1: PAINT (205, 90), CC1
CIRCLE (175,
45), 4, CC1: PAINT (175, 45), CC1
CIRCLE (270,
200), 4, CC1: PAINT (270, 200), CC1
CIRCLE (350,
105), 4, CC1: PAINT (350, 105), CC1
CIRCLE (130,
250), 4, CC1: PAINT (130, 250), CC1
CIRCLE (95,
75), 4, CC1: PAINT (95, 75), CC1
CIRCLE (10,
10), 4, 1: PAINT (10, 10), 1
CIRCLE (30,
150), 4, 1: PAINT (30, 150), 1
CIRCLE (200,
30), 4, 1: PAINT (200, 30), 1
RETURN
REM "ZONA DE STRIKES Y BOLAS"
218 LINE
(450, 0)-(640, 350), 1, BF
220 LINE
(480, 30)-(620, 130), 2, BF
LINE (520,
60)-(580, 100), 4, BF
RETURN
222 REM
"CONTEO BOLAS-STRIKES"
LINE (460,
145)-(620, 200), 2, BF:
LOCATE 12,
59: PRINT "BO"
LOCATE 13,
59: PRINT "ST"
LOCATE 14,
59: PRINT "OUT"
CIRCLE (500,
160), 8: CIRCLE (535, 160), 8: CIRCLE (570, 160), 8: CIRCLE (605,
160), 8
CIRCLE (517,
175), 8: CIRCLE (552, 175), 8: CIRCLE (587, 175), 8
CIRCLE (517,
190), 8: CIRCLE (552, 190), 8: CIRCLE (587, 190), 8
IF OU = 3 OR
OU = 0 THEN 223
IF OU = 1
THEN 230 ELSE 231
230 X = 517:
PAINT (X, 190): GOTO 223
231 IF OU =
2 THEN 224 ELSE 223
224 X = 552:
PAINT (X, 190): X = 517: PAINT (X, 190)
223 RETURN
209 REM
"CREANDO ARCHIVO DE BOLAS, STRIKE..."
FOR Q = 1 TO
10: C(Q) = 0: NEXT Q
IF RESP$ =
"K" THEN 2010 ELSE 2012
C(7)
= 1: C(8) = 1: C(9) = 1: C(10) = 1: GOTO 2091
2012 IF
RESP$ = "B" THEN 2013 ELSE 2014
C(7)
= 2: C(8) = 1: C(9) = 1: C(10) = 1: GOTO 2091
2014 IF
RESP$ = "H" THEN 210 ELSE 211
C(5)
= 5: C(6) = 5: GOTO 2091
211 IF RESP$
= "O" THEN 208 ELSE 203
GOTO 2091
C(6)
= 5: C(7) = 12: C(8) = 12: C(9) = 1: C(10) = 1
2091 K8$ =
"BCADEIHOGW"
FOR I = 0 TO
99: D$(I) = "": NEXT I
FOR I = 1 TO
7
L$ =
MID$(K8$, I, 1)
299 FOR J =
1 TO C(I)
300 GOSUB 10
NU = INT(A2 / 10)
IF D$(NU) =
"" THEN D$(NU) = L$ ELSE 300
NEXT J
NEXT I
FOR I = 8 TO
10
L$ =
MID$(K8$, I, 1)
FOR W = 1 TO
C(I)
FOR J = 0 TO
99
IF D$(J) =
"" THEN D$(J) = L$
NEXT J
NEXT W
NEXT I
RETURN
270 REM "DETERMINACION DE
FAUL = 0: YA
= 0
IF NB = 4
THEN 2680 ELSE 269
2680 IF H(2) = 0 THEN 2681 ELSE 2682
2681 H(2) = 1: GOTO 269
2682 IF H(2) = 1 AND H(3) = 0 THEN 2683 ELSE 2684
2683 H(3) = 1: GOTO 269
2684 IF H(4) = 0 THEN 2685 ELSE 2686
2685 H(4) = 1: GOTO 269
2686 GOSUB
7111
269 NS = 0:
NB = 0: W1 = 0
IF U1 = 0 OR
OU >= 3 THEN GOSUB 190
GOSUB 198
GOSUB 19801
GOSUB 189
GOSUB 200
GOSUB 218
GOSUB 222
GOSUB 209
GOSUB 800
GOSUB 59
IF PITCH = 2
THEN K$ = "(alta)" ELSE K$ = "(baja)"
LOCATE 19,
59: PRINT USING "##"; I8; : PRINT "A.
ENTRADA "; : PRINT K$
275 REM
"LANZAMIENTO"
LINE (450,
270)-(640, 330), 2, BF
FOR I = 20
TO 23: FOR J = 57 TO 80: LOCATE I, J: PRINT " "; :
NEXT J: NEXT I
LOCATE 20,
57: PRINT "PITCHER: "; : PRINT NOPITCH$
IF PITCH = 1
THEN SINK = SINK1
IF PITCH = 2
THEN SINK = SINK2
IF PITCH = 1
THEN SINH = SINH1
IF PITCH = 2
THEN SINH = SINH2
GOSUB 2733:
GOTO 2481
2733 PICH = V(PITCH, 2) + V(PITCH, 3)
V(PITCH,
1) = PICH
LOCATE 21,
57: PRINT "P/S/B ="; : LOCATE 21, 65: PRINT
USING "###"; PICH;
LOCATE 21,
68: PRINT "/"; : PRINT USING
"###"; V(PITCH, 2);
LOCATE 21,
72: PRINT "/"; : PRINT USING
"###"; V(PITCH, 3);
RETURN
2481 LOCATE
22, 60: PRINT PBATEAD$
LOCATE 22,
63: PRINT MID$(NBATEAD$, 1, 13)
IF PITCH = 1
THEN NUMBAT = BATC ELSE NUMBAT = BATV
LOCATE 22,
57: PRINT NUMBAT
LOCATE 23,
57: PRINT "P: "; : PRINT USING
"#.###"; PCTJE
LOCATE 23,
68: PRINT USING "###"; BB11; : PRINT
"/";
PRINT USING
"###"; K111; : PRINT "/"; : PRINT
USING "###"; HR11;
IF OU = 3 THEN
273 ELSE 272
273 OU = 0:
GOTO 270
272 REM "LIMPIAR
LINE (480,
30)-(620, 130), 2, BF
LINE (520,
60)-(580, 100), 4, BF
LINE (28,
31)-(33, 29): LINE (33, 29)-(29, 24): LINE (29, 24)-(24, 24)
LINE (24,
24)-(24, 28): LINE (24, 28)-(28, 31)
PAINT (28,
27)
2003 CIRCLE
(X20, Y34), 4, CC4: PAINT (X20, Y34), CC4
CIRCLE (18,
20), 4, CC1: PAINT (18, 20), CC1
CIRCLE (10,
10), 4, 1: PAINT (10, 10), 1
2757 LOCATE
16, 59: PRINT " ";
LOCATE 22,
48: PRINT "BP: "; : PRINT U(11, PITCH)
LOCATE 16,
59: PRINT "LANZA: "; : Z$ = INPUT$(1)
LOCATE 21,
48: PRINT TIME$
IF Z$ =
"Q" OR Z$ = "q" THEN U(11, PITCH)
= 0
IF Z$ =
"q" OR Z$ = "Q" THEN 2757
K0$ =
"":
GOSUB 2737
IF OK = 0
THEN 2757
GOTO 2727
2737 REM
"CHECANDO VARIABLE"
IF Z$ =
"e" OR Z$ = "E" THEN 2717
IF Z$ =
"L" OR Z$ = "l" THEN 2717
IF Z$ =
"S" OR Z$ = "s" THEN 2717
IF Z$ =
"R" OR Z$ = "r" THEN 2717
IF Z$ =
"T" OR Z$ = "t" THEN 2717
IF Z$ =
"I" OR Z$ = "i" THEN 2717
IF Z$ =
"P" OR Z$ = "p" THEN 2717
IF Z$ =
"B" OR Z$ = "b" THEN 2717
IF Z$ =
"v" OR Z$ = "V" THEN 2717
OK = 0: GOTO
2718
2717 OK = 1
2718 RETURN
2727 IF Z$ =
"e" OR Z$ = "E" THEN 2747 ELSE 2748
2747 GOSUB
4600: GOTO 2757
2748 IF Z$ =
"S" OR Z$ = "s" THEN 2749 ELSE 2751
2749 LOCATE
17, 59: PRINT "¨SALIR?(S/N): "; : INPUT
"", RR$
IF RR$ =
"s" OR RR$ = "S" THEN CHAIN "DATOS7.EXE"
2751 PL2$ =
""
GOTO 27802
GOSUB 10:
NU1 = INT(A2 / 10)
GOSUB 10:
NU2 = INT(A2 / 10)
GOSUB 10:
NU3 = INT(A2 / 10)
IF NU1 = NU3
THEN Z$ = "W"
IF Z$ =
"W" THEN 27801 ELSE 27802
27801 P$ =
"B": RESP$ = "B"
IF NB = 3
THEN 294
H(5)
= H(4): H(4) = H(3): H(3) = H(2): H(2) = 0: GOSUB 800
IF H(5) = 1 THEN GOSUB 7111
GOSUB 59
27803 PL2$ =
"WILD..."
GOTO 294
27802 IF Z$
= "i" OR Z$ = "I" THEN 1500
IF ASC(Z$) = 11 THEN SYSTEM
IF Z$ =
"P" OR Z$ = "p" THEN 3000
IF Z$ =
"V" OR Z$ = "v" THEN 3000
IF Z$ =
"b" OR Z$ = "B" THEN 3200
IF Z$ =
"R" OR Z$ = "r" THEN 2755 ELSE 2756
2755 IF H(4) = 1 AND H(3) = 1 THEN 2757
IF H(2) = 1 OR H(3) = 1 THEN 279 ELSE 2757
2756 IF Z$ =
"T" OR Z$ = "t" THEN 1200
279 GOSUB 10
NU = INT(A2 / 10)
P$ = D$(NU)
IF P$ =
"W" THEN 279
IF RESP$ =
"G" AND P$ = "H" THEN 1000
IF RESP$ =
"G" AND P$ = "O" THEN 1000
IF RESP$ =
"W" AND P$ = "H" THEN 1000
IF RESP$ =
"W" AND P$ = "O" THEN 1000
IF RESP$ =
"" THEN STOP
IF P$ =
"C" OR P$ = "A" THEN 285 ELSE 288
285 NS = NS
+ 1
IF NS = 3
THEN 282 ELSE 201
282 IF RESP$
= "K" THEN 201 ELSE 281
281 NS = 2:
P$ = "I": GOTO 201
288 IF P$ =
"B" THEN 294 ELSE 201
294 NB = NB
+ 1
IF NB = 4
THEN 284 ELSE 250
284 IF RESP$
= "B" THEN 250 ELSE 287
287 NB = 3:
P$ = "D"
292 IF P$ =
"D" OR P$ = "E" OR P$ = "I" THEN 201
IF P$ =
"O" AND RESP$ = "O" THEN 201
IF P$ =
"H" AND RESP$ = "H" THEN 201
GOTO 400
277 REM "SUBROUTINA DEL RECEPTOR"
Y0 = Y: X0 =
X: IF X0 = 550 THEN X0 = 555
SX = (Y0 -
60) / (X0 - 550): NX = (X0 - 550) / 40
FOR X = 1 TO
40
XP = 550 +
(NX * X): YP = 60 + (SX * (XP - 550))
RA = .25 *
X: CIRCLE (XP, YP), RA: PAINT (XP, YP)
E = 95 - (1.5 * X): F = 75 - X: PSET (E, F), 15
FOR Z = 1 TO
F170: NEXT Z: PRESET (E, F), 2
LINE (480,
30)-(620, 130), 2, BF
REM LINE
(520, 60)-(580, 100), 4, BF"
LINE (520,
60)-(580, 60), 4
LINE (520,
60)-(520, 100), 4
LINE (520,
100)-(580, 100), 4
LINE (580,
60)-(580, 100), 4
NEXT X
IF P$ =
"A" OR P$ = "C" OR P$ = "B" THEN 278 ELSE 2771
278 CIRCLE
(XP, YP), RA: PAINT (XP, YP): GOTO 2772
2771 REM
"SOUND 50, 1"
2772 RETURN
150 REM
"SUBROUTINA DE INFORMACION"
LINE (460,
200)-(620, 250), 2, BF
IF P$ =
IF P$ =
IF P$ =
IF P$ =
"D" OR P$ = "E" OR P$ = "I" THEN PL$ =
"FOUL"
IF P$ =
IF P$ = "W" THEN PL$ = "BOLA
DESCONTROLADA"
LOCATE 16,
59:
LOCATE 17,
59: PRINT PL2$
FOR W = 1 TO
50000: NEXT W
LINE (480,
30)-(620, 130), 2, BF
LINE (520,
60)-(580, 100), 4, BF
LINE (460,
200)-(620, 250), 2, BF
RETURN
201 REM
"BUSCANDO UN STRIKE"
V(PITCH,
2) = V(PITCH, 2) + 1
PICH = V(PITCH, 1): STR = V(PITCH, 2): BAL = V(PITCH, 3)
GOSUB 2733
225 Q = RND
Q1 = INT(Q * 100)
Q11 = Q1 +
530
IF Q11 >
570 OR Q11 < 530 THEN 225
G1 = INT(G * 100)
G11 = G1 +
70
IF G11 >
90 OR G11 < 70 THEN 206
207 X = Q11:
Y = G11
GOSUB 277
IF P$ =
"O" AND RESP$ = "O" THEN 500
IF P$ =
"H" AND RESP$ = "H" THEN 700
IF P$ =
"C" OR P$ = "A" THEN 212 ELSE 400
IF P$ =
"T" THEN 1201
212 GOSUB
215: GOTO 216
215 REM "SUBROUTINA QUE ACUMULA STRIKES"
IF NS = 1
THEN X = 517
IF NS = 2
THEN X = 552
IF NS = 3
THEN X = 587
PAINT (X,
175)
RETURN
216 IF P$ =
"I" OR P$ = "D" OR P$ = "E" THEN 219
IF Z$ =
"R" OR Z$ = "r" THEN 227 ELSE 219
219 GOSUB
150
227 IF NS =
3 THEN OU = OU + 1
IF Z$ =
"r" OR Z$ = "R" THEN 1250
IF NS = 3
THEN 270 ELSE 275
250 REM
"BUSCANDO UNA BOLA"
V(PITCH,
3) = V(PITCH, 3) + 1
PICH = V(PITCH, 1): STR = V(PITCH, 2): BAL = V(PITCH, 3)
GOSUB 2733
251 Q = RND
Q1 = INT(RND * 100)
Q11 = 490 +
Q1 + (INT(Q1 / 10))
IF Q11 >
620 THEN 251
G1 = INT(G * 100)
G11 = 40 +
G1
IF G11 >
120 THEN 260
IF Q11 >
530 AND Q11 < 570 THEN 261 ELSE 262
261 IF G11
> 70 AND G11 < 90 THEN 250
262 X = Q11:
Y = G11
IF Z$ =
"W" THEN Y = 130
GOSUB 277
C(1)
= 500: C(2) = 535: C(3) = 570: C(4) = 605
FOR Z = 1 TO
NB: X = C(Z): PAINT (X, 160): NEXT Z
IF Z$ =
"R" OR Z$ = "r" THEN 2777
GOSUB 150
2777 IF NB =
4 THEN 270
IF Z$ =
"R" OR Z$ = "r" THEN 1250 ELSE 275
400 REM "BUSCANDO UN FAUL"
FAUL = FAUL + 1
IF FAUL = 5
THEN GOSUB 209
IF NS < 2
THEN 408 ELSE 409
408 NS = NS
+ 1
409 IF NS
<= 2 THEN GOSUB 215
IF P$ =
"D" THEN 401
IF P$ =
"E" THEN 450
IF P$ = "I" THEN 420
REM "BUSCANDO UN FAUL POR EL LADO DERECHO"
401 GOSUB 10
Q = INT(A2 / 10)
IF Q = 0
THEN 401
Q1 = 30 - Q
IF Q1 < 0
THEN 401
402 GOSUB 10
G = INT(A2 / 10)
G1 = 30 + G
IF G1 >
300 THEN G1 = 300
IF G = 0
THEN 402
S1 = Q / G
FOR Y = 30
TO G1
X1 = INT(30 - (S1 * Y))
IF X1 >
250 THEN 4021
IF X1 < 0
THEN 404
PSET (X1,
Y), 15
FOR W = 1 TO
F400: NEXT W
PRESET (X1, Y), 2
NEXT Y
4021 GOSUB 150
404 GOTO 275
REM "BUSCANDO UN FAUL POR EL LADO IZQUIERDO"
420 GOSUB
10: Q = INT(A2 / 10)
IF Q > 30
THEN 420
422 GOSUB
10: G = A2
IF G = 0 OR
G > 400 THEN 422
S1 = Q / G
FOR X = 30
TO G
Y1 = INT(30 - (S1 * X))
IF Y1 < 0
OR Y1 = 30 THEN 421
IF X > 200
THEN 421
PSET (X,
Y1), 15
FOR W = 1 TO
F300: NEXT W
PRESET (X, Y1), 2
NEXT X
GOSUB 150
421 GOTO 275
REM "BUSCANDO UN FAUL POR EL CENTRO"
450 GOSUB
10: Q = INT(A2 / 10): GOSUB 10: G = INT(A2 / 10)
IF Q > 30
OR G > 30 THEN 450
IF Q = 0
THEN 450
S1 = G / Q
FOR X = 1 TO
Q: Y = INT(30 - (S1 * X))
X1 = 30 - X:
PSET (X1, Y), 15: FOR W = 1 TO F300: NEXT W
PRESET (X1, Y), 2: NEXT X
GOSUB 150: GOTO 275
500 REM "DIBUJANDO UN OUT"
H(1)
= 1
GOSUB 10
NU = INT(A2 / 100)
NU1 = NU / 2: NU2 = INT(NU / 2)
IF NU1 = NU2 THEN O$ = "R" ELSE O$ = "E"
IF Z$ =
"T" OR Z$ = "t" THEN O$ = "R"
IF O$ =
"E" THEN 510 ELSE 560
510 REM "ELEVADO"
GOSUB 511: GOTO 555
REM "SUBROUTINA QUE SELECCIONA BATAZO HACIA UN LADO DEL
CAMPO"
A(7,
1) = 20: A(8, 1) = 30: A(9, 1) = 20
W = -1
FOR I = 1 TO
9
FOR J = 1 TO
A(I, 1)
W = W + 1: E(W) = I: NEXT J: NEXT I
515 GOSUB 10: X = (A2 / 1000) * 420: GOSUB 10: Y = (A2 /
1000) * 310
X = INT(X): Y = INT(Y)
IF X <=
30 OR Y <= 30 THEN 515
REM "CHECANDO QUE EL ELEVADO NO IGUALE POSICIONES EN EL
CAMPO"
FOR U = 1 TO
9
IF ABS(X - F(U, 1)) < 5 THEN 515
IF ABS(Y - F(U, 2)) < 3 THEN 515
NEXT U
IF X >
250 AND X <= 350 THEN 513 ELSE 514
REM "EVITANDO QUE
513 S1 =
(310 - 250) / (350 - 250): Y1 = 250 + S1 * (350 - X)
IF Y > Y1
THEN 515
514 S2 =
(250 - 170) / (420 - 350): Y2 = 170 + S2 * (420 - X)
IF Y > Y2
THEN 515
REM "BUSCANDO AL JUGADOR MAS CERCANO"
FOR W = 1 TO
9
X3 = F(W, 1): Y3 = F(W, 2)
I(W)
= (((X3 - X) ^ 2) + ((1.5 * (Y3 - Y)) ^ 2)) ^ .5
NEXT W
X4 = X: Y4 =
Y
MIN =
100000: FOR W = 1 TO 9
IF I(W) < MIN THEN 516 ELSE 517
516 MIN = I(W): WMIN = W
517 NEXT W
X3 = F(WMIN, 1): Y3 = F(WMIN, 2)
S1 = (Y -
30) / (X - 30)
NX = (X -
30) / 100
RETURN
555 FB =
1.3: FB = 1
FOR X = 1 TO
100:
X1 = 30 + (NX * X * FB)
Y = 30 + (S1 * (X1 - 30))
X1 = INT(X1): Y = INT(Y)
PSET (X1,
Y), 15
CIRCLE (X1,
Y), 1: FOR W = 1 TO F300: NEXT W
IF X1 >
X4 THEN 544
536 CIRCLE
(X1, Y), 1, 2
PRESET (X1,
Y), 2
FOR W = 1 TO
F400: NEXT W
GOSUB 580
GOSUB 600
NEXT X
PCORRE = 0
OU = OU + 1
IF OU = 3
THEN 544
IF WMIN = 9
OR WMIN = 8 THEN 5400 ELSE 5401
5400 IF H(3) = 1 AND H(4) = 0 THEN 5407 ELSE 5401
5407 PCORRE
= 2: GOSUB 1100
GOTO 544
5401 IF H(4) = 1 THEN GOSUB 1100
544 R = 0
FOR W = 1 TO
50000: NEXT W
FOR M = 1 TO
4
CIRCLE (K(M, 1), K(M, 2)), 4, 2: PAINT (K(M, 1), K(M, 2)), 2
NEXT M
CIRCLE (20,
124), 4, 2: PAINT (20, 124), 2
CIRCLE (X6,
Y6), 1, CC1: PAINT (X6, Y6), CC1
CIRCLE (X6, Y6), 4, 2: PAINT (X6, Y6), 2
GOTO 270
560 REM
"ROLA"
GOSUB 10: A3
= INT(A2 / 100): IF A3 < 5 THEN IR = 1 ELSE IR = 0
550 GOSUB 10
REM "ROLETAZO AL CUADRO"
W1 = 0: YA =
0
N = INT(A2 / 10)
IF N = 0
THEN 550
IF N > 0
AND N <= 10 THEN NU = 1
IF N > 10
AND N <= 15 THEN NU = 4
IF N > 15
AND N <= 30 THEN NU = 3
IF N > 30
AND N <= 50 THEN NU = 5
IF N > 50
AND N <= 75 THEN NU = 4
IF N > 75
AND N <= 99 THEN NU = 6
JU = NU
GOSUB 10: A3
= INT(A2 / 10)
IF A3 >=
0 AND A3 < 6 THEN OO = 0 ELSE OO = 1
IF JU > 6
THEN 550
IF Z$ =
"T" OR Z$ = "t" THEN JU = 1
IF JU = 5 OR
JU = 6 THEN 5481 ELSE 5482
5481 IF H(3) = 1 AND H(2) = 0 AND H(4) = 0 THEN K80 = 1
5482 X11 = F(JU, 1): Y11 = F(JU, 2)
DX = X11 -
30: DY = Y11 - 30: S1 = DY / DX:
NX = DX /
100
FOR X = 1 TO
100: X1 = 30 + (NX * X)
Y = 30 + (S1 * (X1 - 30))
X1 = INT(X1): Y = INT(Y)
PSET (X1,
Y), 15: FOR W = 1 TO F300: NEXT W: PRESET (X1, Y), 2
IF INT(X /
2) = X / 2 THEN GOSUB 580
NEXT X
IF OO = 0
THEN 5490 ELSE 5491
5490 CIRCLE (X11, Y11), 4, CC1: PAINT (X11, Y11), CC1
G(E9, BATOB, COLU) = G(E9, BATOB,
COLU) - 1
PSET (X11 +
10, Y11 + 10), 15
W300 = 300:
FOR X = 1 TO 50: GOSUB 580: FOR W = 1 TO F300: NEXT W: NEXT X
H(5)
= H(4): H(4) = H(3): H(3) = H(2): H(2) = H(1)
IF H(5) = 1 THEN GOSUB 7111
P$ = "R": PL$ = "": PL2$ =
"...ERROR..."
IF PITCH = 1
THEN W(1, 30) = W(1, 30) + 1
IF PITCH = 2
THEN W(2, 30) = W(2, 30) + 1
GOSUB 150
GOTO 270
5491 IF H(4) = 1 THEN 5474 ELSE 5480
5474 LOCATE
16, 59: PRINT " "
IF H(2) = 1 AND H(3) = 1 AND H(4) = 1 THEN 5484 ELSE 5485
5484 K0$ =
"S": GOTO 5486
5485 LOCATE
16, 59: PRINT "¨CORRE A HOME?(S/N):"; : K0$
= INPUT$(1)
5486 IF K0$
= "S" OR K0$ = "s" THEN 54741
IF K0$ =
"N" OR K0$ = "n" THEN 54741 ELSE 5474
54741 IF K0$
= "N" OR K0$ = "n" THEN 5480
LOCATE 16,
59: PRINT "¨TIRO A HOME?(S/N): "; : K$ =
INPUT$(1)
IF K$ =
"S" OR K$ = "s" THEN 5475 ELSE 5480
5475 GOSUB
10: A3 = INT(A2 / 100): IF A3 > 7 THEN O1 = 0 ELSE
O1 = 1
CIRCLE (18,
20), 4, 2: PAINT (18, 20), 2
CIRCLE (30,
30), 4, CC1: PAINT (30, 30), CC1
Y22 = 30: X22 = 30
X4 = F(JU, 1): Y4 = F(JU, 2)
DX = X4 - X22: DY = (Y4 - Y22)
S1 = DY / DX: NX = DX / 100
FA = 2.5
FOR X = 1 TO
100
X2 = X * FA
X1 = X4 - (NX * X2): Y = Y4 - (S1 * (NX * X2))
X1 = INT(X1): Y = INT(Y)
GOSUB 580
W300 = 300
IF X1 <
30 THEN 5473
PSET (X1,
Y), 15: FOR W = 1 TO F300: NEXT W: PRESET (X1, Y), 2:
NEXT X
5473 IF O1 =
0 THEN 5477 ELSE 5476
5477 CIRCLE
(30, 30), 4, CC1: PAINT (30, 30), CC1
PSET (50,
45), 15
LOCATE 16,
59: PRINT "SAFE...SAFE..."
5476 IF O1 =
1 THEN OU = OU + 1
IF OU = 3
THEN 270
IF O1 = 0
THEN GOSUB 7111
H(4)
= H(3): H(3) = H(2): H(2) = 1
K$ =
INPUT$(1)
GOTO 270
5480 REM "TIRO A PRIMERA"
GOSUB 10: A3
= INT(A2 / 100): IF A3 < 5 THEN O3 = 0 ELSE O3 = 1
DP = 0
IF Z$ =
"t" OR Z$ = "T" THEN 5502
IF Z$ =
"R" OR Z$ = "r" THEN 5502
IF H(2) = 1 AND OU < 2 THEN 5501 ELSE 5502
REM "PREGUNTANDO POR EL DOBLE PLAY"
5501 IF K0$
= "N" OR K0$ = "n" THEN K$ = "N"
IF K0$ =
"n" OR K0$ = "N" THEN 5509
LOCATE 16,
59: PRINT "¨DPLAY(S/N)?: "
LOCATE 16,
73: K$ = INPUT$(1)
5509 IF K$ =
"s" OR K$ = "S" THEN 5510 ELSE 5502
5510 IF JU =
4 OR JU = 3 THEN 5521 ELSE 5522
5521 CIRCLE
(205, 90), 4, 2: PAINT (205, 92), 2: GOTO 5523
5522 CIRCLE
(125, 150), 4, 2: PAINT (125, 150), 2
5523 CIRCLE
(160, 118), 4, CC1: PAINT (160, 118), CC1
DP = 1
DX = X11 -
160: DY = (Y11 - 118)
S1 = DY /
DX: NX = DX / 20
IF O3 = 1
THEN 5531 ELSE 5532
5532 FOR X =
1 TO 20: IF (X / 2) = INT(X / 2) THEN 55321 ELSE 55322
55321 GOSUB
580
FOR W = 1 TO
F300: NEXT W
55322 NEXT X
5531 FOR X =
1 TO 20
X2 = X
X1 = X11 - (NX * X2): Y = Y11 - (S1 * (NX * X2)):
X1 = INT(X1): Y = INT(Y)
IF X / 2 =
INT(X / 2) THEN GOSUB 580
PSET (X1,
Y), 15: FOR W = 1 TO F300: NEXT W: PRESET (X1, Y), 2
NEXT X
5528 X11 =
160: Y11 = 118
GOTO 5514
5502 IF JU =
3 THEN 5301 ELSE 5514
5301 CIRCLE
(50, 135), 4, 2: PAINT (50, 137), 2
CIRCLE (33,
124), 4, CC1: PAINT (33, 124), CC1
GOTO 530
5514 DX =
X11 - 39: DY = (Y11 - 122)
CIRCLE (50,
135), 4, 2: PAINT (50, 137), 2
CIRCLE (39,
122), 4, CC1: PAINT (39, 122), CC1
S1 = DY /
DX: NX = DX / 100
FOR X = 1 TO
100
X2 = X * 2
X1 = X11 -
(NX * X2): Y = Y11 - (S1 * (NX * X2)):
IF X1 <
39 THEN 530
X1 =
INT(X1): Y = INT(Y)
IF X / 2 =
INT(X / 2) THEN GOSUB 580
IF Z$ =
"T" OR Z$ = "t" THEN 578 ELSE 579
578 IF O = 0
THEN 567
579 PSET
(X1, Y), 15: FOR W = 1 TO F300: NEXT W: PRESET (X1, Y), 2
567 NEXT X
530 FOR W =
1 TO F500: NEXT W
GOSUB 580
IF YA = 1
THEN 531 ELSE 530
531 IF Z$ =
"t" OR Z$ = "T" THEN 5371
IF DP = 0
THEN 533
IF O3 = 1
THEN PL$ = "DOBLE PLAY.."
IF O3 = 0
THEN PL$ = "SEIF 1A."
GOSUB 150
IF O3 = 1
THEN OU = OU + 2 ELSE OU = OU + 1
IF OU = 3
THEN 270
IF O3 = 1
THEN 5372 ELSE 5373
5372 IF K0$
= "S" OR K0$ = "s" THEN 53721
IF K0$ =
"" THEN 53721 ELSE 53722
53721 H(5) = H(4): H(4) = H(3): H(2) = 0: H(3) = 0
IF H(5) = 1 THEN GOSUB 7111
GOTO 270
53722 H(2) = 0: H(3) = 0
GOTO 270
5373 IF K0$
= "S" OR K0$ = "s" THEN 53731
IF K0$ =
"" THEN 53731 ELSE 53732
53731 H(5) = H(4): H(4) = H(3): H(3) = 0: H(2) = 1
IF H(5) = 1 THEN GOSUB 7111
GOTO 270
53732 H(2) = 1
GOTO 270
5371 IF O =
0 THEN 539
533 OU = OU
+ 1
IF OU = 3
THEN 270
IF Z$ =
"t" OR Z$ = "T" THEN 5331
IF K80 = 1
THEN 5337
IF K0$ =
"" THEN 5332
IF K0$ =
"N" OR K0$ = "n" THEN 5335 ELSE 5336
5331 H(4) = H(3): H(3) = H(2): H(2) = 0: GOTO 270
5332 H(4) = H(3): H(3) = H(2): H(2) = 0: GOTO 270
5335 H(5) = 0: H(4) = 1
IF H(3) = 1 THEN H(3) = 1 ELSE H(3) = H(2)
H(2)
= 0: GOTO 270
5336 H(5) = H(4): H(4) = H(3): H(3) = H(2): H(2) = 0
IF H(5) = 1 THEN GOSUB 7111: GOTO 270
5337 H(2) = 0: GOTO 270
539 H(5) = H(4): H(4) = H(3): H(3) = H(2): H(2) = 1
IF H(5) = 1 THEN GOSUB 7111
GOTO 270
10 REM "SUBROUTINA QUE BUSCA UN NUMERO ALEATORIO"
5 K$ = TIME$
SEM$ =
MID$(TIME$, 7, 2)
RANDOMIZE
TIMER
A0 = RND
A = A0 *
1000
A1 = INT(A0 * 1000)
A2 = INT(1000 * (A - A1))
6 RETURN
580 REM "SUBROUTINA QUE CORRE LAS BASES"
CIRCLE (X20, Y34), 4, 2: PAINT (X20, Y34), 2
5801 W1 = W1
+ 1: FOR M = 1 TO 4
IF H(M) = 1 THEN L(M) = CC4 ELSE L(M) = 2
NEXT M
INI = 1: N44
= 4
IF K80 = 1
THEN N44 = 1
5802 IF K2$
= "n" OR
5805 INI =
4: GOTO 5807
5806 IF K0$
= "" THEN 5809
IF K0$ =
"n" OR K0$ = "N" THEN 5808 ELSE 5809
5808 IF H(4) = 1 AND H(3) = 1 THEN N44 = 1
IF H(4) = 1 AND H(3) = 0 THEN N44 = 2
5809 IF
JUFIT = 0 THEN 5807
IF K99 = 1
AND JUFIT = 5 THEN INI = 2
IF JUFIN = 2
AND JUFIT > 2 THEN INI = 4
IF JUFIN = 5
AND JUFIT = 4 THEN INI = 3
IF JUFIN = 5
AND JUFIT = 6 THEN INI = 3
5807 IF P$ =
"O" AND O$ = "E" AND OU < 2 THEN N44 = 1
IF W1 >
95 THEN 582 ELSE 583
582 YA = 1:
GOTO 588
583 FOR M =
INI TO N44
X12 = J(M, 1): Y12 = J(M, 2): X22 =
J(M, 3): Y22 = J(M, 4)
IF X12 = X22
THEN 590 ELSE 592
590 NY11 = (Y22 - Y12) / 100
XB12 = X12: YB12F = Y12 + (W1 * NY11): YB12R = Y12 + ((W1 -
1) * NY11)
CIRCLE
(XB12, YB12R), 4, 2: PAINT (XB12, YB12R), 2
CIRCLE
(XB12, YB12F),
K(M,
1) = XB12: K(M, 2) = YB12F
GOTO 581
592 NX11 =
(X22 - X12) / 100
YB12 = Y12:
XB12F = X12 + (W1 * NX11): XB12R = X12 + ((W1 - 1) * NX11)
CIRCLE
(XB12R, YB12), 4, 2: PAINT (XB12R, YB12), 2
CIRCLE
(XB12F, YB12),
K(M,
1) = XB12F: K(M, 2) = YB12
581 NEXT M
588 RETURN
600 REM "SUBROUTINA QUE CAPTURA ELEVADOS"
IF R = 0
THEN R = 1
IF R = 1
THEN 601 ELSE 602
601 CIRCLE (X3, Y3), 4, 2: PAINT (X3, Y3), 2
602 NX1 =
(X4 - X3) / 100
IF X4 = X3
THEN 609 ELSE 610
609 X0 = X3: Y = Y3 + ((Y4 - Y3) / 100) * (R - 1)
X6 = X3: Y6 = Y3 + ((Y4 - Y3) / 100) * (R)
GOTO 611
610 S3 = (Y4 - Y3) / (X4 - X3)
R = R + 1
X6 = X3 + (NX1 * R)
X0 = X3 + (NX1 * (R - 1))
Y6 = Y3 + (S3 * (X6 - X3))
Y = Y3 + (S3 * (X0 - X3))
X0 = INT(X0): Y = INT(Y)
X6 = INT(X6): Y6 = INT(Y6)
IF RESP$ =
"H" AND HIT$ = "C" THEN 633 ELSE 611
633 IF JU =
7 AND X0 > 420 THEN 605
IF JU = 9
AND Y > 310 THEN 605
IF JU = 8
AND XH > 420 THEN 6331 ELSE 6332
6331 IF X0
> XMAX THEN 605 ELSE 611
6332 IF JU =
8 AND Y > YMAX THEN 605
611 CIRCLE (X0, Y), 4, 2: PAINT (X0, Y), 2
CIRCLE (X6, Y6), 4, CC1: PAINT (X6, Y6), CC1
605 RETURN
700 REM
"PEGANDO HIT"
IF PITCH = 1
THEN W(2, 29) = W(2, 29) + 1
IF PITCH = 2
THEN W(1, 29) = W(1, 29) + 1
N$ =
"SDTC"
FOR Z = 1 TO
2
J8 = 0
FOR J = 1 TO
4
K$ =
MID$(N$, J, 1)
FOR W = 1 TO
A(J + 5, Z)
J8 = J8 + 1
B$(J8, Z) =
K$
NEXT W
NEXT J
NEXT Z
7001 GOSUB
10: A3 = INT(A2 / 10)
K1$ = B$(A3,
1)
IF K1$ =
"S" THEN F9 = 2
IF K1$ =
"D" THEN F9 = 3
IF K1$ =
"T" THEN F9 = 4
IF K1$ =
"C" THEN F9 = 5
IF BATOB
> 30 THEN BATOB = 30
G(E9, BATOB, F9) = G(E9, BATOB, F9) +
1
COLU = F9
GOTO 7002
GOSUB 10: A3
= INT(A2 / 10)
IF K1$ =
7002 HIT$ =
K1$
IF HIT$ =
"S" THEN 7004 ELSE 7005
7004 OPEN
"R", #2, ARB$ + "4", 4
FIELD #2, 4
AS NHR$
GET #2, IBAT
NOHR = CVS(NHR$)
NOHR = NOHR
+ 1
LSET NHR$ =
MKS$(NOHR)
PUT #2, IBAT
CLOSE #2
GOTO 7003
7005 OPEN
"R", #2, ARB$ + "4", 4
FIELD #2, 4
AS NHR$
LSET NHR$ =
MKS$(0)
PUT #2, IBAT
CLOSE #2
7003 IF HIT$
= "S" THEN 710 ELSE 720
710 GOSUB
511
H(1)
= 1: GOSUB 730
H(5)
= H(4): H(4) = H(3): H(3) = H(2): H(2) = 1: H(1) = 0
IF H(5) = 1 THEN GOSUB 7111
GOTO 7112
7111 REM
"CONTABILIDAD DE CARRERAS"
IF PITCH = 2
THEN W(1, I8) = W(1, I8) + 1
IF PITCH = 1
THEN W(2, I8) = W(2, I8) + 1
H(5)
= 0
RETURN
7112 GOSUB
800
IF Z$ =
"R" THEN 6990 ELSE 6998
6990 W300 =
300: W1 = 0: H(2) = 0
FOR X = 1 TO
100: CIRCLE (J(1, 3), J(1, 4)), 4, CC4
PAINT (J(1, 3), J(1, 4)), CC4
GOSUB 580:
FOR W = 1 TO F300: NEXT W: NEXT X
H(2)
= 1: H(5) = H(4): H(4) = H(3): H(3) = 0
IF H(5) = 1 THEN GOSUB 7111
GOTO 270
6998 IF H(4) = 1 THEN 7101 ELSE 7102
7101 LOCATE
16, 59: PRINT "¨CORRER A HOME?(S/N):": : K$
= INPUT$(1)
IF K$ =
"S" OR K$ = "s" THEN 7107
7107 LOCATE
16, 59: PRINT "¨TIRO A HOME?(S/N):":
7108 IF K$ =
"s" OR K$ = "S" THEN 703 ELSE 7102
703 IF K2$ =
"N" OR
701 X22 = F(4, 1): Y22 = F(4, 2): GOTO 7202
7103 REM
"DECISION RUMBO A HOME"
W1 = 0
71030 CIRCLE (X4, Y4), 4, CC1: PAINT (X4, Y4), CC1
CIRCLE (18,
20), 4, 2: PAINT (18, 20), 2
CIRCLE (30,
30), 4, CC1: PAINT (30, 30), CC1
Y22 = 30: X22 = 30: FFX9 = 16.5 / 390: FFY9 = 15.5 / 280
DX = FFX9 * (X4 - X22): DY = (Y4 - Y22) * FFY9
TIRO = ((DX
^ 2) + (DY ^ 2)) ^ .5
IF TIRO <
11 THEN 7208 ELSE 7209
7208 GOSUB
10: A3 = INT(A2 / 100): IF A3 < 7 THEN O1 = 1 ELSE
O1 = 0
GOTO 7205
7209 IF TIRO
< 13.5 THEN 7201 ELSE 7202
7201 GOSUB
10: A3 = INT(A2 / 100): IF A3 < 5 THEN O1 = 1 ELSE
O1 = 0
GOTO 7205
7202 O1 = 0: W1 = 0
7205 DX = X4 - X22: DY = (Y4 - Y22)
S1 = DY /
DX: NX = DX / 100
FOR X = 1 TO
100
IF O1 = 0
THEN FA = 1 ELSE FA = 1.18
X2 = X * FA
X1 = X4 - (NX * X2): Y = Y4 - (S1 * (NX * X2))
X1 = INT(X1): Y = INT(Y)
IF X1 <
30 THEN 7222
GOSUB 580
W300 = 300
PSET (X1,
Y), 15: FOR W = 1 TO F300: NEXT W: PRESET (X1, Y), 2:
NEXT X
7222 IF O1 =
1 THEN OU = OU + 1
IF O1 = 1
THEN 7223
IF O1 = 0
THEN H(5) = 1
GOSUB 7111
IF K2$ =
"N" OR
7223 H(4) = H(3): H(3) = H(2): H(2) = 0: GOTO 7225
7224 H(4) = 0
7225 K$ = INPUT$(1)
7102 GOTO 270
720 REM "BUSCANDO UN EXTRABASE"
IF HIT$ =
"D" THEN 750
IF HIT$ =
"T" THEN 751
IF HIT$ =
"C" THEN 900
GOTO 710
750 REM
"BUSCANDO UN DOBLE"
GOSUB 10: A
= INT(A2 / 100): IF A / 2 = INT(A / 2) THEN 751 ELSE
752
751 GOSUB
10: A = (A2 / 1000)
X4 = 30 +
((250 - 30) * A): Y4 = 310
NX = (X4 - 30) / 100
S1 = (Y4 - 30) / (X4 - 30)
X3 = F(9, 1): Y3 = F(9, 2)
H(1)
= 1
GOSUB 730
W1 = 0: H(5) = H(4): H(4) = H(3): H(3) = H(2): H(2) = H(1): H(1) = 0
IF H(5) = 1 THEN GOSUB 7111
FOR X = 1 TO
100: GOSUB 580: FOR W = 1 TO F300: NEXT W: NEXT X
W1 = 0: H(5) = H(4): H(4) = H(3): H(3) = 1: H(2) = 0: H(1) = 0
IF H(5) = 1 THEN GOSUB 7111
IF Z$ =
"R" THEN 768 ELSE 769
768 W300 =
300: W1 = 0: H(2) = 0: H(3) = 0
CIRCLE (K(3, 1), K(3, 2)), 4, 2: PAINT (K(3, 1), K(3, 2)), 2
FOR X = 1 TO
100: CIRCLE (J(2, 3), J(2, 4)), 4, CC4
PAINT (J(2, 3), J(2, 4)), CC4
GOSUB 580:
FOR W = 1 TO F300: NEXT W: NEXT X
GOSUB 7111
H(2)
= 0: H(4) = 0: H(3) = 1: GOTO 270
769 IF HIT$
= "T" THEN 770 ELSE 790
770 REM
"HIT TRIPLE"
FOR M = 1 TO
4
CIRCLE (K(M, 1), K(M, 2)), 4, 2: PAINT (K(M, 1), K(M, 2)), 2
NEXT M
FOR X = 1 TO
100: GOSUB 580: FOR W = 1 TO F300: NEXT W: NEXT X
H(5)
= H(4): H(4) = 1: H(3) = 0: H(2) = 0: H(1) = 0
IF H(5) = 1 THEN GOSUB 7111
790 GOTO 270
REM "DOBLETE POR EL LADO IZQUIERDO"
752 GOSUB 10: A = (A2 / 1000): Y4 = 30 + ((170 - 30) * A):
X4 = 420
NX = (X4 - 30) / 100
S1 = (Y4 - 30) / (X4 - 30)
X3 = F(7, 1): Y3 = F(7, 2)
H(1)
= 1
GOSUB 730
H(5)
= H(4): H(4) = H(3): H(3) = H(2): H(2) = H(1): H(1) = 0
IF H(5) = 1 THEN GOSUB 7111
W1 = 0
FOR X = 1 TO
100: GOSUB 580: FOR W = 1 TO F300: NEXT W: NEXT X
W1 = 0: H(5) = H(4): H(4) = H(3): H(3) = H(2): H(2) = 0
IF H(5) = 1 THEN GOSUB 7111
IF Z$ =
"R" THEN 758 ELSE 759
758 W300 =
300: W1 = 0: H(2) = 0: H(3) = 0
CIRCLE (K(3, 1), K(3, 2)), 4, 2: PAINT (K(3, 1), K(3, 2)), 2
FOR X = 1 TO
100: CIRCLE (J(2, 3), J(2, 4)), 4, CC4:
PAINT (J(2, 3), J(2, 4)), CC4
GOSUB 580:
FOR W = 1 TO F300: NEXT W: NEXT X
H(5)
= H(4): H(2) = 0: H(4) = 0: H(3) = 1
IF H(5) = 1 THEN GOSUB 7111
GOTO 270
759 GOTO 270
730 REM "SUBROUTINA QUE DIBUJA EL BATAZO DE HIT Y CORRE
UNA BASE"
FB = 1.3
FOR X = 1 TO
100:
X1 = 30 +
(NX * X * FB)
Y = 30 + (S1 * (X1 - 30))
X1 = INT(X1): Y = INT(Y)
IF X1 >
X4 THEN 744
IF Y > Y4
THEN 744
X1V = X1: Y1V = Y
PSET (X1, Y), 15
CIRCLE (X1,
Y), 1: FOR W = 1 TO F300: NEXT W
IF X1 >
X4 THEN 744
CIRCLE (X1,
Y), 1, 2
PRESET (X1,
Y), 2
FOR W = 1 TO
F400: NEXT W
GOSUB 580
GOSUB 600
NEXT X
744 PSET
(X1V, Y1V), 15: CIRCLE (X1V, Y1V), 1
CIRCLE (X6,
Y6), 4, 2: PAINT (X6, Y6), 2
CIRCLE (X4,
Y4), 4, CC1: PAINT (X4, Y4), CC1
R = 0
FOR M = 1 TO
4
CIRCLE (K(M, 1), K(M, 2)), 4, 2: PAINT (K(M, 1), K(M, 2)), 2
NEXT M
RETURN
800 REM "SUBROUTINA DIBUJANDO LOS HOMBRES EN BASE"
FOR W = 2 TO
4
X = J(W, 1): Y = J(W, 2)
IF H(W) = 0 THEN 810
CIRCLE (X,
Y), 4, CC4: PAINT (X, Y), CC4: GOTO 815
810 CIRCLE (X, Y), 4, 2: PAINT (X, Y), 2
815 NEXT W
RETURN
900 REM
"HOME-RUN"
R = 0
GOSUB 10: A3
= (A2 / 100): IF A3 >= 0 AND A3 < 4 THEN JU = 7
IF A3 >=
4 AND A3 < 6 THEN JU = 8
IF A3 >=
6 THEN JU = 9
GOSUB 10
IF JU = 7
THEN XH = 420 + (30 * A2 / 1000)
IF JU = 8 THEN
XH = 250 + (170 * A2 / 1000)
IF JU = 9
THEN XH = 30 + (220 * A2 / 1000)
IF XH >=
30 AND XH < 250 THEN 905 ELSE 910
905 GOSUB
10: A3 = A2 / 1000: YH = 310 + (35 * A3): XMAX = 250
YMAX = 30:
X3 = F(9, 1): Y3 = F(9, 2): GOTO 950
910 IF XH
>= 250 AND XH < 350 THEN 920 ELSE 930
920 YMAX = 310 - (.6 * (XH - 250)): X3 = F(8,
1): Y3 = F(8, 2)
GOSUB 10: A3
= A2 / 1000: YH = YMAX + ((345 - YMAX) * A3): GOTO 950
930 IF XH
>= 350 AND XH < 420 THEN 940 ELSE 945
940 YMAX = 250 - ((XH - 350) * 8 / 7): X3 = F(8, 1): Y3 = F(8, 2)
GOSUB 10: A3
= A2 / 1000: YH = YMAX + ((345 - YMAX) * A3): GOTO 950
945 GOSUB
10: A3 = A2 / 1000: YH = 30 + ((345 - 30) * A3)
IF YH <=
170 THEN 9455 ELSE 9456
9455 JU = 7: XMAX = 420: X3 = F(7,
1): Y3 = F(7, 2): GOTO 950
9456 IF YH
> 170 AND YH <= 250 THEN 9451 ELSE 9452
9451 YJ = F(8, 2): XJ = F(8, 1): XX1 = 350: YY1 = 250: XX2 = 420: YY2
= 170
M1 = (YJ -
YH) / (XJ - XH): B1 = YJ - (M1 * XJ)
M2 = (YY1 -
YY2) / (XX1 - XX2): B2 = YY1 - (M2 * XX1)
XMAX = (B2 -
B1) / (M1 - M2)
YMAX = (M1 * XMAX) + B1
JU = 8: X3 = F(8, 1): Y3 = F(8, 2)
GOTO 950
9452 YJ = F(8, 2): XJ = F(8, 1):
XX1 = 250: YY1 = 310: XX2 = 350: YY2 = 250
M1 = (YJ - YH) / (XJ - XH): B1 = YJ - (M1 * XJ)
M2 = (YY1 - YY2) / (XX1 - XX2): B2 = YY1 - (M2 * XX1)
XMAX = (B2 - B1) / (M1 - M2)
YMAX = (M1 *
XMAX) + B1
JU = 8
9500 X3 = F(8, 1): Y3 = F(8, 2)
950 REM "DIBUJO HOMERUN"
X4 = XH: Y4 = YH
FB = 1.3: H(1) = 1
NX = (X4 - 30) / 100
S1 = (Y4 -
30) / (X4 - 30)
FOR X = 1 TO
100:
X1 = 30 +
(NX * X * FB)
Y = 30 + (S1 * (X1 - 30))
X1 = INT(X1): Y = INT(Y)
IF X1 >
X4 THEN 944
IF Y > Y4
THEN 944
X1V = X1: Y1V = Y
PSET (X1, Y), 15
CIRCLE (X1,
Y), 1: FOR W = 1 TO F300: NEXT W
IF X1 >
X4 THEN 944
CIRCLE (X1,
Y), 1, 2
PRESET (X1,
Y), 2
FOR W = 1 TO
F400: NEXT W
GOSUB 580
GOSUB 600
944 NEXT X
CIRCLE (X4,
Y4), 1
FOR M = 1 TO
4
CIRCLE (K(M, 1), K(M, 2)), 4, 2: PAINT (K(M, 1), K(M, 2)), 2
NEXT M
H(5)
= H(4): H(4) = H(3): H(3) = H(2): H(2) = H(1): H(1) = 0
IF H(5) = 1 THEN GOSUB 7111
FOR T = 1 TO
3: W1 = 0
FOR X = 1 TO
100: GOSUB 580
FOR W = 1 TO
F300: NEXT W
NEXT X
FOR M = 1 TO
4
CIRCLE (K(M, 1), K(M, 2)), 4, 2: PAINT (K(M, 1), K(M, 2)), 2
NEXT M
H(5)
= H(4): H(4) = H(3): H(3) = H(2): H(2) = H(1)
IF H(5) = 1 THEN GOSUB 7111
NEXT T
R = 0
GOTO 270
1000 REM
"GOLPES Y WILD PITCH"
BAT = 1
IF RESP$ =
"G" THEN 1003 ELSE 1050
1003 IF BAT
= 1 THEN 1005 ELSE 1010
1005 X =
475: Y = 70: GOSUB 277: GOTO 1030
1010 X = 625: Y = 80: GOSUB 277
1030 GOSUB 150: GOTO 1060
1050 X =
550: Y = 130: GOSUB 277: GOSUB 150
IF RESP$ =
"G" THEN 1060
1055 H(5) = H(4): H(4) = H(3): H(3) = H(2): H(2) = H(1): GOSUB
800
GOTO 1095
1060 IF H(2) = 0 THEN 1065 ELSE 1070
1065 H(2) = 1: GOTO 270
1070 IF H(2) = 1 AND H(3) = 0 THEN 1075 ELSE 1080
1075 H(3) = 1: GOTO 270
1080 IF H(2) = 1 AND H(3) = 1 AND H(4) = 1 THEN 1085 ELSE 1090
1085 H(5) = 1: GOSUB 7111: GOTO 270
1090 H(4) = 1: GOTO 270
1095 P$ = "B": GOTO 294
1100 REM "PISA Y CORRE"
IF WMIN <
7 THEN 1112
FOR J = 2 TO
4
IF H(J) = 1 THEN 11001 ELSE 11002
11001 X = J(J, 1): Y = J(J, 2)
CIRCLE (X, Y), 4, 2: PAINT (X, Y), 2
11002 NEXT J
FOR J = 2 TO
4
IF H(J) = 1 THEN 11003 ELSE 11004
11003 X = Q(J, 1): Y = Q(J, 2)
CIRCLE (X, Y), 4, CC4: PAINT (X, Y), CC4
11004 NEXT J
11015 IF
PCORRE = 2 THEN P99$ = "¨P&C2-3?(S/N):"
ELSE P99$ = "¨P&C3-H?(S/N):"
LOCATE 16,
59: PRINT " "
LOCATE 16,
59: PRINT P99$; : K$ = INPUT$(1)
IF K20$ =
"" THEN K20$ = K$ ELSE K21$ = K$
IF K21$ =
"N" OR K21$ = "n" THEN 11035 ELSE 11036
11035 IF
K20$ = "S" OR K20$ = "s" THEN 11037 ELSE 11036
11037 X9 = Q(4, 1): Y9 = Q(4, 2):
X3 = X4: Y3 = Y4
CIRCLE (X9, Y9), 4, 2: PAINT (X9, Y9), 2
W1 = 0:
JUFIN = 2: GOTO 1150
11036 IF K$
= "S" OR K$ = "s" THEN 1104 ELSE 1112
1104 LOCATE
16, 59: PRINT "TIRO A: "; : COLOR 7, 0:
PRINT "C 2B 3B SS"
R$(1) =
"C": R$(2) = "2B": R$(3) = "3B": R$(4) =
"SS"
1121 FOR J =
1 TO 4
IF J = 1
THEN LUG = 67
IF J = 2
THEN LUG = 69
IF J = 3
THEN LUG = 72
IF J = 4
THEN LUG = 75
LOCATE 16,
LUG: COLOR 15, 0: PRINT R$(J)
K00$ =
INPUT$(1)
IF ASC(K00$) = 13 THEN 1122
LOCATE 16,
LUG: COLOR 7, 0: PRINT R$(J)
NEXT J
GOTO 1121
1122 IF J =
1 THEN JUFIT = 2
IF J = 2
THEN JUFIT = 4
IF J = 3
THEN JUFIT = 5
IF J = 4
THEN JUFIT = 6
IF K99 = 1
THEN 1123
IF H(4) = 0 THEN 1123
IF H(4) = 1 AND JUFIT = 2 THEN 1123 ELSE 1124
1124 IF H(3) = 1 THEN 1127 ELSE 1123
1127 K99 =
1: PCORRE = 2: GOTO 11015
1123 FOR J =
2 TO 4
IF H(J) = 1 THEN 11005 ELSE 11006
11005 X = Q(J, 1): Y = Q(J, 2)
CIRCLE (X, Y), 4, 2: PAINT (X, Y), 2
11006 NEXT J
GOSUB 800
X3 = X4: Y3 = Y4
FXX9 = 16.5
/ 390: FYY9 = 15.5 / 280
IF PCORRE =
2 THEN JUFIN = 5 ELSE JUFIN = 2
JX30 = F(JUFIN, 1): JY30 = F(JUFIN, 2)
DX3F = (X3 - JX30) * FXX9: DY3F = (Y3 - JY30) * FYY9
VX = (DX3F)
^ 2: VY = (DY3F) ^ 2
DF9 = (VX +
VY) ^ .5
DF = 30 +
(VX + VY) ^ .5
IF DF9 >
13.5 THEN 1150
IF DF9 <
11 THEN 1152
GOTO 1160
1152 REM
"DEMASIADO CERCA"
GOSUB 10: A3
= INT(A2 / 100): IF A3 < 3 THEN O1 = 0 ELSE O1 = 1
GOTO 1155
1150 REM "DEMASIADO LEJOS"
O1 = 0
GOTO 1155
1160 REM "SE DECIDE TIRO"
GOSUB 10: A3
= INT(A2 / 100)
IF (A3 / 2)
= INT(A3 / 2) THEN O1 = 1 ELSE O1 = 0
1155 W1 = 0:
H(1) = 0: P$ = "P"
XX22 = F(JUFIT, 1): YY22 = F(JUFIT, 2)
IF JUFIT = 2
THEN 1101
IF JUFIT = 5
THEN 11010
GOTO 1102
11010 CIRCLE
(XX22, YY22), 4, 2: PAINT (XX22, YY22), 2
CIRCLE (164,
32), 4, CC1: PAINT (164, 32), CC1
XX22 = 164:
YY22 = 32
GOTO 1102
1101 CIRCLE
(XX22, YY22), 4, 2: PAINT (XX22, YY22), 2
CIRCLE (30,
30), 4, CC1: PAINT (30, 30), CC1
XX22 = 30:
YY22 = 30
1102 DX = X3 - XX22: DY = (Y3 - YY22)
IF DX = 0
THEN 11020 ELSE 11021
11020 S1 =
1: NY = DY / 100: GOTO 11022
11021 S1 =
DY / DX: NX = DX / 100
11022 FOR X
= 1 TO 100
IF O1 = 0
THEN FA = 1 ELSE FA = 1.1
X2 = X * FA
IF DX = 0
THEN 11023 ELSE 11024
11023 X1 = X3: Y = Y3 - (DY * X2): GOTO 11025
11024 X1 = X3 - (NX * X2): Y = Y3 - (S1 * (NX * X2))
11025 X1 = INT(X1): Y = INT(Y)
IF DX > 0
THEN 1115 ELSE 1116
1115 IF X1
< XX22 THEN 11100 ELSE 1120
1116 IF X1
> XX22 THEN 11100
IF Y <
YY22 THEN 11100
1120 GOSUB
580
W300 = 300
PSET (X1,
Y), 15: FOR W = 1 TO F300: NEXT W: PRESET (X1, Y), 2:
NEXT X
11100 IF
JUFIN = 2 AND JUFIT > 2 THEN 11102
IF JUFIN = 2
AND JUFIT = 2 THEN 11103
IF JUFIN = 5
AND JUFIT = 5 AND O1 = 1 THEN 11109
IF JUFIN = 5
AND JUFIT = 5 AND O1 = 0 THEN 11108
IF JUFIN = 5
AND JUFIT <> 5 THEN 11101
11101 H(5) = H(4): H(4) = H(3): H(3) = 0: O1 = 0
IF H(5) = 1 THEN GOSUB 7111
GOTO 1110
11102 GOSUB 7111: H(4) = 0: O1 = 0:
GOTO 1110
11103 IF O1
= 0 THEN GOSUB 7111
H(4)
= H(3): H(3) = H(2): H(2) = 0
GOTO 11104
11109 H(5) = H(4): H(4) = 0: H(3) = H(2): H(2) = 0
IF H(5) = 1 THEN GOSUB 7111
GOTO 11104
11108 H(5) = H(4): H(4) = H(3): H(3) = H(2): H(2) = 0
IF H(5) = 1 THEN GOSUB 7111
11104 IF O1
= 1 THEN OU = OU + 1
1110 IF O1 =
0 THEN K$ = "SEIF....SEIF....." ELSE K$ = "OUT...OUT..."
1111 LOCATE
16, 59: PRINT K$
K$ =
INPUT$(1)
1112 RETURN
1200 REM "TOQUE DE BOLA"
GOSUB 10: A3
= INT(A2 / 100)
IF A3 < 3
THEN P$ = "B"
IF A3 = 3 OR
A3 = 4 THEN P$ = "A"
IF A3 > 4
THEN P$ = "T"
IF P$ =
"B" THEN 294
IF P$ =
"A" THEN 285
G(E9,
BATOB, COLU) = G(E9, BATOB, COLU) - 1
X = 525: Y =
70: GOSUB 277
1201 GOSUB
10: A3 = INT(A2 / 100)
DP = 0
GOSUB 10: A4
= INT(A2 / 100)
IF A3 = A4
THEN O = 0 ELSE O = 1
GOTO 500
1250 REM "ROBO DE SEGUNDA BASE"
GOSUB 10: A3
= INT(A2 / 100)
IF A3 < 4
THEN O1 = 1
IF A3 > 3
AND A3 < 9 THEN O1 = 0
IF A3 = 9
THEN O1 = 2
IF H(3) = 1 THEN 1252
1251 BBB = 1: X22 = 125: Y22 = 150: X33 = 157: Y33 = 120:
GOTO 1255
1252 BBB = 3: X22 = 175: Y22 = 45: X33 = 153: Y33 = 24
1255 CIRCLE (X22, Y22), 4, 2: PAINT (X22, Y22), 2
CIRCLE (X33, Y33), 4, CC1: PAINT (X33, Y33), CC1
X3 = 18: Y3
= 20
IF O1 = 1
THEN FA = 1.3 ELSE FA = 1
IF H(3) = 1 THEN 1259
X22 = 157:
Y22 = 120
IF O1 = 2
THEN 12600 ELSE 1261
12600 X22 =
250: Y22 = 170
GOTO 1261
1259 IF O1 =
2 THEN 12590 ELSE 12591
12590 X22 = 250: Y22 = 24: GOTO 1261
12591 X22 = 153: Y22 = 24
1261 DX = X3 - X22: DY = (Y3 - Y22)
S1 = DY / DX: NX = DX / 100
REM "TIRO A SEGUNDA O A TERCERA"
W1 = 0: C20
= 2
FOR X = 1 TO
100
XR = X: W1 =
W1 + 1
IF O1 = 1
THEN 12771 ELSE 12772
12771 XW = X
* FA: GOTO 1277
12772 IF W1
>= C20 THEN 1279 ELSE 1267
1279 X2 = (X - C20 - 1) * FA: GOTO 12773
1277 X2 = XW
12773 X1 = X3 - (NX * X2): Y = Y3 - (S1 * (NX * X2))
X1 = INT(X1): Y = INT(Y)
IF O1 = 2
THEN 12775
IF X1 >
157 THEN 1267
12775 W300 =
180
PSET (X1,
Y), 15: FOR W = 1 TO F180: NEXT W
PRESET (X1, Y), 2
REM "CORREDOR DE PRIMERA A SEGUNDA Y DE SEGUNDA A
TERCERA"
1267 C38 = J(2, 1): NY11 = (157 - C38) / 100
C116 = J(3, 2): NX11 = (C116 - 36) / 100
IF X = 1
THEN XB120 = 38 ELSE XB120 = XB120A
IF X = 1
THEN YB120 = 116 ELSE YB120 = YB120A
XB12F = C38
+ (XR * NY11): YB12R = 125
YB12F = C116
- (XR * NX11): XB12R = 160
IF H(2) = 1 THEN K4 = CC4 ELSE K4 = 2
IF H(3) = 1 THEN J4 = CC4 ELSE J4 = 2
CIRCLE
(XB120, YB12R), 4, 2: PAINT (XB120, YB12R), 2
CIRCLE
(XB12F, YB12R), 4, K4: PAINT (XB12F, YB12R), K4
CIRCLE
(XB12R, YB120), 4, 2: PAINT (XB12R, YB120), 2
CIRCLE
(XB12R, YB12F), 4, J4: PAINT (XB12R, YB12F), J4
XB120A =
XB12F
YB120A =
YB12F
FOR W = 1 TO
F180: NEXT W
NEXT X
IF O1 = 2
THEN 1299
REM
"IMPRESION DE RESULTADO"
IF O1 = 1
THEN PL2$ = "OUT...OUT" ELSE PL2$ = "SEIF...SEIF"
1299 REM
"COLOCANDO CORREDORES"
IF H(3) = 1 AND H(2) = 1 THEN 1300 ELSE 1320
1300 IF O1 =
0 OR O1 = 2 THEN 1305 ELSE 1310
1305 H(2) = 0: H(3) = 1: H(4) = 1: GOTO 1350
1310 H(2) = 0: H(3) = 1: H(4) = 0: OU = OU + 1: GOTO 1350
1320 IF H(3) = 1 AND H(2) = 0 THEN 1325 ELSE 1330
1325 IF O1 =
0 OR O1 = 2 THEN 1326 ELSE 1327
1326 H(3) = 0: H(4) = 1: GOTO 1350
1327 H(3) = 0: H(4) = 0: OU = OU + 1: GOTO 1350
1330 IF O1 =
1 THEN 1335 ELSE 1340
1335 H(2) = 0: H(3) = 0: OU = OU + 1: GOTO 1350
1340 H(2) = 0: H(3) = 1
1350 IF OU
>= 3 THEN 1351 ELSE 1352
1351 IF
PITCH = 1 THEN BATC = BATC - 1 ELSE BATV = BATV - 1
G(E9, BATOB, COLU) = G(E9, BATOB,
COLU) - 1
1352 IF OU
>= 3 THEN 270
IF OU = 1
THEN 1290 ELSE 1295
1290 X =
517: PAINT (X, 190): GOTO 1285
1295 IF OU =
2 THEN 1296 ELSE 1285
1296 X =
552: PAINT (X, 190): X = 517: PAINT (X, 190)
REM "LIMPIANDO EL CAMPO"
1285 GOSUB 200
GOSUB 59
GOSUB 800
IF O1 = 2
THEN 12850 ELSE 12851
12850 W1 =
0: H(1) = 0
IF PITCH = 1
THEN W(1, 30) = W(1, 30) + 1
IF PITCH = 2
THEN W(2, 30) = W(2, 30) + 1
IF BBB = 3
THEN 12849 ELSE 12852
12849 X =
350: Y = 105: GOTO 12848
12852 X = 270: Y = 200
12848 CIRCLE (X, Y), 4, 2: PAINT (X, Y), 2
CIRCLE (X22, Y22), 4, CC1: PAINT (X22, Y22), CC1
W300 = 300:
FOR X = 1 TO 100: GOSUB 580: FOR W = 1 TO F300: NEXT W: NEXT X
H(5)
= H(4): H(4) = H(3): H(3) = 0
IF H(5) = 1 THEN GOSUB 7111
GOSUB 200: GOSUB 59: GOSUB 800
PL2$ = "ROBO Y MAL TIRO"
12851 GOSUB
150
IF NS = 3
THEN 270 ELSE 275
1500 REM "BASE POR BOLAS INTENCIONAL"
IF H(2) = 0 THEN 1505 ELSE 1507
1505 H(2) = 1: GOTO 270
1507 IF H(2) = 1 AND H(3) = 0 THEN 1510 ELSE 1520
1510 H(3) = 1: GOTO 270
1520 H(4) = 1: H(3) = 1: H(4) = 1: GOTO 270
2000 REM "ENSAYANDO"
RETURN
3000 REM "CAMBIO DE PITCHER"
IF Z$ =
"p" OR Z$ = "P" THEN 3010 ELSE 3020
3010 NUM = U(11, PITCH): U(11,
PITCH) = 0
IF NUM = 0
THEN Z$ = "V"
IF NUM = 0
THEN 3000
GOSUB 2000
GOTO 3057
3020 LOCATE
21, 57: PRINT " ";
OPEN
"R", #1, AR2$, 53
FIELD #1, 4
AS NUM$, 15 AS NOMBR$, 4 AS VB$, 4 AS HS$, 4 AS H2$, 4 AS H3$, 4 AS
HR$, 4 AS
BB$, 4 AS K$, 4 AS G$, 2 AS P$
IR = 0
LOCATE 3, 2:
PRINT "NUM NOMBRE OUT HIT BB KS BOP PCL"
3050 FOR I =
1 TO 20
IR = IR + 1
IF IR = 15
THEN 3051 ELSE 3052
3051 K9$ =
INPUT$(1): IR = 1
3052 GET #1,
I
NUM = CVS(NUM$): NOM$ = (NOMBR$): P1$ = (P$): VB1 = CVS(VB$)
HS1 = CVS(HS$): H21 = CVS(H2$): H31 = CVS(H3$): HR1 = CVS(HR$)
BB1 = CVS(BB$): K1 = CVS(K$): G1 = CVS(G$)
IF NUM = 0
THEN 3053
REN = 3 + IR
LOCATE REN,
2: PRINT USING "##"; NUM;
LOCATE REN,
5: PRINT MID$(NOM$, 1, 10)
LOCATE REN,
16: PRINT USING "####"; VB1
LOCATE REN,
21: PRINT USING "####"; HS1
LOCATE REN,
26: PRINT USING "####"; BB1
LOCATE REN,
31: PRINT USING "####"; K1
IF VB1 = 0
OR HS1 = 0 THEN PCC = 0
IF VB1 = 0
THEN 3058
OPBAT = VB1
+ HS1: PCC = HS1 / OPBAT
3058 LOCATE
REN, 36: PRINT USING "#.###"; PCC
LOCATE REN,
42: PRINT USING "#.##"; G1
3060 NEXT I
3053 LOCATE
21, 57: PRINT "OPCION?: "; : INPUT
"", NUMP
LOCATE 21,
57: PRINT " ";
3105 CLOSE
#1
IF NUMP = 0
THEN 3054 ELSE 3055
3054 GOSUB
200: GOSUB 800: GOSUB 59: GOTO 2757
3055 IF Z$ =
"V" OR Z$ = "v" THEN 3056 ELSE 3057
3056 U(11, PITCH) = NUMP: NUMP = 0
GOSUB 200:
GOSUB 800: GOSUB 59: GOTO 2757
3057 IF U(10, PITCH) = U(9, PITCH) THEN 31051 ELSE 31052
31051 U(9, PITCH) = NUM
31052 U(10, PITCH) = NUM
NOPITCH$ =
NOM$
V(PITCH,
1) = 0: V(PITCH, 2) = 0: V(PITCH, 3) = 0
V(PITCH,
5) = 0: V(PITCH, 6) = 0
GOSUB 19801
IF COLU
>= 2 AND COLU <= 5 THEN 31053
G(E9, BATOB, COLU) = G(E9, BATOB,
COLU) - 1
31053 GOSUB
189
GOSUB 200
GOSUB 800
GOSUB 59
IF PITCH = 1
THEN SINH1 = 1 ELSE SINH2 = 1
LOCATE 20,
57: PRINT "PITCHER: "; : PRINT NOPITCH$
GOTO 2757
3200 REM "CAMBIO DE BATEADOR"
OPEN
"R", #1, AR1$, 53
FIELD #1, 4
AS NUM$, 15 AS NOMBR$, 4 AS VB$, 4 AS HS$, 4 AS H2$, 4 AS H3$, 4 AS
HR$, 4 AS
BB$, 4 AS K$, 4 AS G$, 2 AS P$
IR = 0
LOCATE 3, 2:
PRINT "NUM NOMBRE
3205 FOR I =
1 TO N15
GET #1, I
NUM = CVS(NUM$): NOM$ = (NOMBR$): P1$ = (P$): VB1 = CVS(VB$)
HS1 = CVS(HS$): H21 = CVS(H2$): H31 = CVS(H3$): HR1 = CVS(HR$)
BB1 = CVS(BB$): K1 = CVS(K$): G1 = CVS(G$)
IF NUM = 0
THEN 3209
IR = IR + 1
REN = 3 + IR
LOCATE REN,
2: PRINT USING "##"; NUM;
LOCATE REN,
5: PRINT MID$(NOM$, 1, 12)
LOCATE REN,
18: PRINT P1$
LOCATE REN,
21: PRINT USING "####"; VB1
LOCATE REN,
25: PRINT USING "####"; HR1
LOCATE REN,
30: PRINT USING "####"; BB1
LOCATE REN,
35: PRINT USING "####"; K1
IF VB1 = 0
OR HS1 = 0 THEN PCC = 0
IF VB1 = 0
THEN 3190
PCC = HS1 /
VB1
3190 LOCATE
REN, 40: PRINT USING "#.###"; PCC
IF REN = 21
THEN 3192 ELSE 3209
3192 LOCATE
22, 1: PRINT "OPRIMA -RETURN-"; : K9$ =
INPUT$(1)
IR = 0
3209 NEXT I
LOCATE 21,
57: PRINT " "
LOCATE 21,
57: PRINT "OPCION?: "; : INPUT "",
NUM
LOCATE 21,
57: PRINT " ";
GOSUB 200
GOSUB 800
GOSUB 59
3201 CLOSE
#1
IF NUM = 0
THEN 2757
3202 IF
PITCH = 2 THEN X = 1 ELSE X = 2
IF PITCH = 2
THEN RR = BATV ELSE RR = BATC
U(RR, X) = NUM
BATOB = NUM
IBAT = I
GOSUB 198
GOSUB 189
OPEN
"R", #2, ARB$ + "H", 4
FIELD #2, 4
AS NOHI$
GET #2, IBAT
SHIT = CVS(NOHI$)
CLOSE #2
OPEN
"R", #2, ARB$ + "4", 4
FIELD #2, 4
AS NHR$
GET #2, IBAT
NOHR = CVS(NHR$)
CLOSE #2
LOCATE 21,
57: PRINT "PITCHER: "; : PRINT NOPITCH$
LOCATE 21,
57: PRINT "P/S/B ="; : LOCATE 21, 65: PRINT
USING "###"; PICH;
LOCATE 21,
68: PRINT "/"; : PRINT USING
"###"; STR;
LOCATE 21,
72: PRINT "/"; : PRINT USING
"###"; BAL;
LOCATE 22,
57: PRINT NUM
LOCATE 22,
61: PRINT P1$
LOCATE 22,
64: PRINT NOM$
IF VB1 = 0 THEN
2757
LOCATE 23,
57: PRINT "P: "; : PRINT USING
"#.###"; HS1 / VB1
LOCATE 23,
68: PRINT "H/E: "; : PRINT USING
"##"; SHIT; : PRINT "/";
PRINT USING
"##"; NOHR;
GOTO 2757
4600 REM
"SUBROUTINA DE RESULTADOS"
AR$ =
"RESUL" + ".TMP"
AR2$ =
"EQU" + ".TMP"
AR3$ =
"TIRI" + ".TMP"
OPEN AR3$
FOR OUTPUT AS #1
PRINT #1, I8
FOR J = 1 TO
2: FOR I = 1 TO I8: PRINT #1, W(J, I): NEXT I
FOR I = 28
TO 30: PRINT #1, W(J, I): NEXT I
NEXT J
CLOSE #1
OPEN AR2$
FOR OUTPUT AS #2
WRITE #2,
EQV$, EQC$
CLOSE #2
OPEN AR$ FOR
OUTPUT AS #1
FOR I = 1 TO
2
FOR S = 1 TO
30
FOR J = 1 TO
7
IF G(I, S, J) < 0 THEN G(I, S, J) = 0
NEXT J
NEXT S
FOR S = 1 TO
30
WRITE #1, G(I, S, 1), G(I, S, 2), G(I, S, 3), G(I, S, 4), G(I, S, 5),
G(I, S, 6),
G(I,
S, 7)
NEXT S
NEXT I
CLOSE #1
CHAIN "DATOS7.EXE"