10 defint a-z
20 width 40
30 color 7,0: cls
40 dim T$(9),A(9),B(9),Q(9)
50 dim H(9,3),I(1,7),G(9)
60 dim F(9,9),C(9,9),D(9)
70 dim N(250,7),V(7,7)
80 dim Y(15),X(15)
100 A$="123456789147258369159357"
110 ply=8
120 F(0,0)=2: F(0,1)=1
130 for v=0 to 9
140 G(v)=-1
150 F(0,v)=3-F(0,v)
160 next
170 for v=0 to 23
180 w=asc(mid$(A$,v+1))-48
190 G(w)=G(w)+1
200 H(w,G(w))=int(v/3)
210 next
250 rem **** Tablero ****
260 for v=0 to 8
270 w=int(v/3): z=v-3*w
280 y=20: x=7+6*z: A$=chr$(97+z)
290 gosub 8000
300 T$(9-v)=A$
310 y=16-5*w: x=2: A$=chr$(49+w)
320 gosub 8000
330 T$(9-v)=T$(9-v)+A$
340 next
350 for v=0 to 3
360 y=4+5*v: x=5: A$="----- ----- -----"
370 gosub 8000
380 next
390 y=3: x=25: A$="Blancas Rojas"
400 gosub 8000
410 y=4: A$="------- -------"
420 gosub 8000
430 for v=0 to 15
440 h=1-h: w=int(v/4): z=v-4*w
450 y=6+2*w: x=24+h+4*z
460 A$=mid$("---",h+1)470 gosub 8000
480 Y(v)=y-1: X(v)=x
490 next
500 rem **** Teclado ****
510 e=(E$="M")-(E$="K")
520 c=c+e: if c<1 then c=9: e=-1
530 if c>9 then c=1: e=1
540 if D(c) goto 520
550 b=7-3*t: gosub 7000
560 a=a+(E$="-")-(E$="+")
570 if a>B(c) then a=A(c)+1
580 if e or a<=A(c) then a=B(c)
600 color 7,0: h=0
610 for v=0 to 15
620 h=1-h: y=Y(v): x=X(v)
630 A$=mid$(" ",h+1)640 gosub 8000
650 next
660 z=Q(c): if z=0 goto 740
670 w=2*(z+t)-1
680 y=Y(w): x=X(w): A$="1-0"
690 if t=z-2*int(z/2) then A$="0-1"
700 gosub 8000
710 z=z-1: y=Y(14): x=X(14)
720 A$="N"+chr$(167)+str$(a-A(c))
730 gosub 8000
740 for v=0 to z
750 w=2*(v+t)
760 y=Y(w): x=X(w): A$=T$(c)
770 if v then A$=T$(N(a-1,v-1))
780 gosub 8000
790 next
800 E$=inkey$: if E$>"" goto 800
810 E$=inkey$: if E$="" goto 810
820 E$=right$(E$,1): e=asc(E$): b=0
830 if e-13 then gosub 7000: goto 500
840 if ply=0 or Q(c)=1 then end
850 for x=0 to G(c)
860 h=H(c,x): I(t,h)=I(t,h)+1
870 next
880 ply=ply-1
890 a=0: d=0: t=1-t
900 D(c)=1: C(0,0)=10
1000 rem **** Inicio ****
1010 z=ply-a: h=1
1020 for y=0 to z-n: h=1-h
1030 for x=y+n to z: V(y,x)=h
1040 next x,y
2000 y=C(a,n)-1: C(a,n)=y
2010 if D(y) goto 2000
2020 on F(y,n) goto 3000,4000,5000
2030 n=n+1: D(y)=1: C(a,n)=10
2040 for x=0 to G(y)
2050 h=H(y,x): I(t,h)=I(t,h)+1
2060 if I(t,h)>2 then C(a,n)=1
2070 next
2080 t=1-t
2090 if n>z and C(a,n)>1 then C(a,n)=1: V(0,n-1)=1
2100 goto 2000
3000 rem **** Rutina n=0 ****
3010 if a=0 goto 500
3020 a=a-1
3030 goto 6000
4000 rem **** Rutina n=1 ****
4010 n=0: x=0
4020 for y=0 to z
4030 if V(y,y)=0 then x=y+1: y=z
4040 next
4100 if a=0 then c=C(0,0): A(c)=d: B(c)=d: Q(c)=x
4110 if x+a-Q(c) goto 6000
4120 if a then N(d,a-1)=C(a,0)
4130 for y=0 to a-2
4140 N(d+1,y)=N(d,y)
4150 next
4160 if a=Q(c)-1 then d=d+1: B(c)=d: goto 6000
4170 a=a+1: C(a,0)=10
4180 goto 1000
5000 rem **** Minimax ****
5010 y=0: h=1: n=n-1: V(0,n-1)=1
5020 for x=n to z
5030 h=1-h: v=V(y,x)+h
5040 y=y+1: w=1-V(y,x)
5050 if v=w+w then V(y,x)=w
5060 next
6000 rem **** Restaurar ****
6010 t=1-t
6020 y=C(a,n): D(y)=0
6030 for x=0 to G(y)
6040 h=H(y,x): I(t,h)=I(t,h)-1
6050 next
6060 goto 1000
7000 rem **** Figura ****
7010 color 0,b
7020 w=int((c-1)/3): z=c-3*w-1
7030 y=5+5*w: x=18-6*z: A$=" "
7040 gosub 8000: y=y+3
7050 gosub 8000
7060 y=y-1: x=x-1: A$=" "
7070 gosub 8000: y=y-1
8000 rem **** Plasmar ****
8010 locate y,x,0: print A$
8020 return