FUNDAMENTOS DEL MODELO MATEMATICO

PARA LA SIMULACIÓN DEL BEISBOL

“MANAGER 21”

 

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 0 a 99. De acuerdo a éste, el factor para el porcentaje de bateo en contra del pitcher será el siguiente: Si 0<N<16, f=0.85; si 15<N<41, f=0.95; si 40<N<71, f=1.00; si 71<N<95, f=1.05 y si 95<N<100, f=1.15. Debe mencionarse que este coeficiente se buscará especialmente para cada pitcher de los equipos, de tal modo que puede darse el caso de que un pitcher “venga muy bien” (f=0.85), mientras que su rival pueda ser “apaleado” (f=1.15). Los factores anteriores resultaron de una investigación a través de varios juegos de prueba.

 

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 LA TEMPORADA DE 1969:

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 LA COMPUTADORA SELECCIONE"

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 LA BOLA"

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

19011 A(9, 1) = INT((HR1 / HS1) * 100)

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)

19908 A(11, 2) = 100 - A(10, 2)

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

2010 C(1) = 35: C(2) = 20: C(3) = 20: C(4) = 7: C(5) = 7: C(6) = 7

C(7) = 1: C(8) = 1: C(9) = 1: C(10) = 1: GOTO 2091

2012 IF RESP$ = "B" THEN 2013 ELSE 2014

2013 C(1) = 60: C(2) = 15: C(3) = 5: C(4) = 5: C(5) = 5: C(6) = 5

C(7) = 2: C(8) = 1: C(9) = 1: C(10) = 1: GOTO 2091

2014 IF RESP$ = "H" THEN 210 ELSE 211

210 C(7) = 35: C(1) = 35: C(2) = 10: C(3) = 5: C(4) = 5

C(5) = 5: C(6) = 5: GOTO 2091

211 IF RESP$ = "O" THEN 208 ELSE 203

208 C(8) = 35: C(1) = 35: C(2) = 10: C(3) = 5: C(4) = 5: C(5) = 5: C(6) = 5

GOTO 2091

203 C(1) = 35: C(2) = 17: C(3) = 7: C(4) = 5: C(5) = 5

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 LA PITCHEADA"

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 LA ZONA DE CONTEO"

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$ = "": K2$ = "": JUFIT = 0: K99 = 0: K80 = 0: K20$ = "": K21$ = ""

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$ = "C" THEN PL$ = "STRIKE CANTADO..."

IF P$ = "A" THEN PL$ = "STRIKE ABANICADO..."

IF P$ = "B" THEN PL$ = "BOLA MALA..."

IF P$ = "D" OR P$ = "E" OR P$ = "I" THEN PL$ = "FOUL"

IF P$ = "G" THEN PL$ = "TREMENDO GOLPE..."

IF P$ = "W" THEN PL$ = "BOLA DESCONTROLADA"

LOCATE 16, 59: PRINT PL$

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

206 G = RND

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

260 G = RND

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"

511 A(1, 1) = 1: A(2, 1) = 4: A(3, 1) = 5: A(4, 1) = 5: A(5, 1) = 5: A(6, 1) = 10

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 LA PELOTA SE SALGA DEL CAMPO"

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 K2$ = "N" THEN 5805 ELSE 5806

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), 4, L(M): PAINT (XB12, YB12F), L(M)

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), 4, L(M): PAINT (XB12F, YB12), L(M)

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)

K2$ = B$(A3, 2)

 

 


 

IF K1$ = K2$ THEN 7002 ELSE 7001

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

K2$ = "N": GOTO 7108

7107 LOCATE 16, 59: PRINT "¨TIRO A HOME?(S/N):": K2$ = INPUT$(1)

7108 IF K$ = "s" OR K$ = "S" THEN 703 ELSE 7102

703 IF K2$ = "N" OR K2$ = "n" THEN 701 ELSE 7103

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 K2$ = "n" THEN 7224

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 PO VB HR BB KS PCT"

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"