Yo, desde luego, no sé como se juega. :( Entiendo que debes hacerte con todo el tablero de tu color, pero tampoco le he dedicado mucho tiempo para saber jugar. Dudo que sea demasiado difícil.
Código BASIC
10 ' AMTHELLO, por M. J. Gribbins 20 ' copyright (c) AMSOFT 1984 30 ' 40 BORDER 14 50 CLEAR 60 MODE 1:PEN 0:PAPER 1:CLS 70 INK 0,0:INK 1,14:INK 2,18:INK 3,26 80 LOCATE 2,3:PEN 3:PRINT"A":LOCATE 3,4:PRINT"M":LOCATE 4,5:PRINT"T":LOCATE 5,6:PRINT"H" 90 LOCATE 6,7:PRINT"E":LOCATE 7,8:PRINT"L":LOCATE 8,9:PRINT"L":LOCATE 9,10:PRINT"O" 100 WINDOW #1,2,39,22,25:PAPER #1,1:PEN #1,0:CLS#1 110 PEN 0 120 LOCATE #1,5,1:PRINT#1,"LAS NEGRAS SIEMPRE EMPIEZAN" 130 LOCATE #1,4,3:PRINT#1,"ELIJA BLANCAS <B> O NEGRAS <N>" 140 b$=INKEY$:IF b$="" THEN 140 150 IF b$="B" OR b$="b" THEN q%=3:n%=0:GOTO 210 160 IF b$="N" OR b$="n" THEN q%=0:n%=3:GOTO 210 170 CLS#1:LOCATE #1,4,3 180 PRINT#1," SOLO BLANCAS O NEGRAS" 190 FOR t=0 TO 1000:NEXT t 200 GOTO 140 210 DIM c%(10,10),p%(9,9),c1%(8),c2%(8),cx%(9),cy%(9) 220 i1%=2:j1%=2:i2%=7:j2%=7 230 FOR i%=0 TO 9 240 c%(i%,o%)=6:c%(0,i%)=6 250 c%(9,i%)=6:c%(i%,9)=6 260 NEXT i% 270 FOR i%=1 TO 8 280 READ c1%(i%),c2%(i%) 290 FOR j%=1 TO 8 300 READ p%(i%,j%) 310 c%(i%,j%)=6 320 NEXT j%:NEXT i% 330 c%(4,4)=3:c%(4,5)=0:c%(5,4)=0:c%(5,5)=3 340 FOR k%=1 TO 58 350 READ ar%,br%,cr%,dr% 360 PLOT ar%,br%:DRAW cr%,dr%,0 370 NEXT k% 380 GOSUB 1460 390 IF q%=3 GOTO 770 400 CLS#1:INPUT #1," ELIJA FILA ";e% 410 IF e%<1 OR e%>8 GOTO 400 420 LOCATE #1,1,3:INPUT #1," ELIJA COLUMNA ";d% 430 IF d%<1 OR d%>8 GOTO 420 440 IF c%(d%,e%)=6 GOTO 480 450 CLS#1:LOCATE #1,5,2:PRINT#1,"ESE CUADRADO YA ESTA OCUPADO!" 460 FOR t=1 TO 1000:NEXT t 470 GOTO 400 480 PLOT 270+(30*d%),70+(30*e%):DRAW 290+(30*d%),89+(30*e%),q% 490 PLOT 290+(30*d%),70+(30*e%):DRAW 270+(30*d%),89+(30*e%),q% 500 GOTO 540 510 FOR m%=0 TO 19 STEP 2:PLOT 270+(30*d%),70+m%+(30*e%) 520 DRAW 290+(30*d%),70+m%+(30*e%),6:NEXT m% 530 GOTO 400 540 vrx%=0 550 FOR k%=1 TO 8 560 vr%=0:c3%=d%:c4%=e% 570 c3%=c3%+c1%(k%):c4%=c4%+c2%(k%) 580 IF c%(c3%,c4%)=n% GOTO 590 ELSE 600 590 vr%=vr%+1:GOTO 570 600 IF c%(c3%,c4%)=6 GOTO 610 ELSE 620 610 NEXT k%:GOTO 670 620 IF vr%=0 GOTO 610 ELSE 630 630 vrx%=vrx%+vr% 640 c3%=c3%-c1%(k%):c4%=c4%-c2%(k%) 650 IF c%(c3%,c4%)=6 GOTO 610 ELSE 660 660 c%(c3%,c4%)=q%:GOTO 640 670 IF vrx%=0 GOTO 680 ELSE 710 680 CLS#1:PRINT#1,"ESO NO ES POSIBLE" 690 FOR t=1 TO 1000:NEXT t 700 GOTO 510 710 e%=e%:d%=d%:vrx%=vrx% 720 CLS#1:PRINT#1,"USTED VA A LA LINEA ";e% 730 PRINT#1," Y A LA COLUMNA ";d% 740 LOCATE #1,2,4:PRINT#1,"CON LO QUE CONSIGUE ";vrx%;" CUADRADO(S)" 750 c%(d%,e%)=q%:GOSUB 1710 760 GOSUB 1460 770 CLS#1:LOCATE #1,10,2:PRINT#1,"AHORA ME TOCA A MI...!" 780 p%=0:vrx%=0:vry%=0 790 IF i1%*j1%=1 AND i2%*j2%=64 GOTO 860 800 FOR k%=2 TO 7 810 IF c%(2,k%)<>6 THEN i1%=1 820 IF c%(7,k%)<>6 THEN i2%=8 830 IF c%(k%,2)<>6 THEN j1%=1 840 IF c%(k%,7)<>6 THEN j2%=8 850 NEXT k% 860 FOR i%=i1% TO i2% 870 FOR j%=j1% TO j2% 880 IF c%(i%,j%)=6 GOTO 1030 890 NEXT j%:NEXT i% 900 IF p%>0 THEN 1000 910 IF pas%=1 GOTO 920 ELSE 940 920 CLS#1:PRINT#1,"BLOQUEADO! YO TAMBIEN TENGO QUE PASAR. FIN DE LA PARTIDA" 930 FOR t=1 TO 1000:NEXT t:GOTO 1550 940 CLS#1:LOCATE #1,18,2:PRINT#1,"TENGO QUE PASAR" 950 GOSUB 2720 960 IF pas%=1 GOTO 970 ELSE 990 970 CLS#1:PRINT#1,"BLOQUEADO! USTED TAMBIEN TIENE QUE PASAR. FIN DE LA PARTIDA." 975 RETURN 980 FOR t=1 TO 1000:NEXT t:GOTO 1550 990 GOTO 400 1000 IF lc%=0 THEN lc%=1:RANDOMIZE lc%:rl%=RND(lc%) 1010 cx1%=cx%(rl%):cx2%=cy%(rl%) 1020 GOTO 1220 1030 vrx%=0 1040 FOR k%=1 TO 8 1050 vr%=0:c3%=i%:c4%=j% 1060 c3%=c3%+c1%(k%):c4%=c4%+c2%(k%) 1070 IF c%(c3%,c4%)=q% GOTO 1080 ELSE 1090 1080 vr%=vr%+1:GOTO 1060 1090 IF c%(c3%,c4%)=6 GOTO 1100 ELSE 1110 1100 NEXT k%:GOTO 1130 1110 IF vr%=o% GOTO 1100 ELSE 1120 1120 vrx%=vrx%+vr%:GOTO 1100 1130 IF vrx%=0 GOTO 890 1140 IF p%(i%,j%)<p% GOTO 890 1150 IF p%(i%,j%)>p% GOTO 1160 ELSE 1170 1160 p%=p%(i%,j%):vry%=vrx%:lc%=0:cx%(0)=i%:cy%(0)=j%:GOTO 890 1170 IF vry%>vrx% GOTO 890 1180 IF vry%<vrx% GOTO 1190 ELSE 1200 1190 lc%=0:vry%=vrx%:cx%(0)=i%:cy%(0)=j%:GOTO 890 1200 lc%=lc%+1:cx%(lc%)=i%:cy%(lc%)=j% 1210 GOTO 890 1220 cx2%=cx2%:cx1%=cx1%:vry%=vry% 1230 CLS#1:PRINT#1,"YO VOY A LA FILA ";cx2% 1240 PRINT#1," Y A LA COLUMNA ";cx1% 1250 LOCATE #1,1,4:PRINT#1,"CON LO QUE CONSIGO ";vry%;" CUADRADO(S)" 1260 PLOT 270+(30*cx1%),70+(30*cx2%):DRAW 290+(30*cx1%),89+(30*cx2%),n% 1270 PLOT 290+(30*cx1%),70+(30*cx2%):DRAW 270+(30*cx1%),89+(30*cx2%),n% 1280 FOR t=1 TO 1000:NEXT t 1290 FOR k%=1 TO 8 1300 vr%=0:c3%=cx1%:c4%=cx2% 1310 c3%=c3%+c1%(k%):c4%=c4%+c2%(k%) 1320 IF c%(c3%,c4%)=q% GOTO 1330 ELSE 1340 1330 vr%=vr%+1:GOTO 1310 1340 IF c%(c3%,c4%)=6 GOTO 1350 ELSE 1360 1350 NEXT k%:GOTO 1400 1360 IF vr%=0 GOTO 1350 1370 c3%=c3%-c1%(k%):c4%=c4%-c2%(k%) 1380 IF c%(c3%,c4%)=6 GOTO 1350 1390 c%(c3%,c4%)=n%:GOTO 1370 1400 c%(cx1%,cx2%)=n% 1410 GOSUB 2720 1420 GOSUB 1460 1430 IF pas%=1 GOTO 1440 ELSE 1450 1440 CLS#1:PRINT#1," USTED TIENE QUE PASAR":FOR t=1 TO 1000:NEXT t:GOTO 770 1450 GOTO 400 1460 FOR i%=1 TO 8 1470 FOR j%=1 TO 8 1480 FOR m%=1 TO 19 STEP 2 1490 z%=270+(30*i%):h%=70+(30*j%):w%=h%+m% 1500 PLOT z%,w%:DRAW z%+20,w%,c%(i%,j%) 1510 NEXT m%:NEXT j%:NEXT i% 1520 x%=x%+1 1530 IF x%=61 GOTO 1550 1540 RETURN 1550 cq%=0:cn%=0 1560 FOR i%=1 TO 8 1570 FOR j%=1 TO 8 1580 IF c%(i%,j%)=q% THEN cq%=cq%+1 1590 IF c%(i%,j%)=n% THEN cn%=cn%+1 1600 NEXT j%:NEXT i% 1610 IF cq%>cn% GOTO 1680 1620 IF cq%=cn% GOTO 1630 ELSE 1650 1630 CLS#1:LOCATE #1,25,2:PRINT#1,"BLOQUEADO" 1640 END 1650 CLS#1:LOCATE #1,5,1:PRINT#1,"USTED TIENE ";cq%;" CUADRADOS. YO TENGO ";cn% 1660 LOCATE #1,11,3:PRINT#1,"YO HE GANADO ... !!!" 1670 END 1680 CLS#1:LOCATE #1,5,1:PRINT#1,"USTED TIENE ";cq%;" CUADRADOS. YO TENGO ";cn% 1690 LOCATE #1,5,3:PRINT#1,"MUY BIEN. USTED HA GANADO ... !!!" 1700 END 1710 IF c%(2,2)=q% AND (c%(3,1)=n% OR c%(1,3)=n%) GOTO 1720 ELSE 1730 1720 p%(3,1)=1:p%(1,3)=1 1730 IF c%(7,7)=q% AND (c%(8,6)=n% OR c%(6,8)=n%) GOTO 1740 ELSE 1750 1740 p%(8,6)=1:p%(6,8)=1 1750 IF c%(2,7)=q% AND (c%(1,6)=n% OR c%(3,8)=n%) GOTO 1760 ELSE 1770 1760 p%(1,6)=1:p%(3,8)=1 1770 IF c%(7,2)=q% AND (c%(6,1)=n% OR c%(8,3)=n%) GOTO 1780 ELSE 1790 1780 p%(6,1)=1:p%(8,3)=1 1790 IF d%=1 OR d%=8 OR e%=1 OR e%=8 GOTO 1820 1800 IF cx1%=1 OR cx1%=8 OR cx2%=1 OR cx2%=8 GOTO 1820 1810 RETURN 1820 FOR j%=1 TO 8 STEP 7 1830 FOR i%=2 TO 7 1840 IF c%(i%,j%)=n% GOTO 1850 ELSE 1860 1850 p%(i%+1,j%)=21:p%(i%-1,j%)=21 1860 IF c%(j%,i%)=n% GOTO 1870 ELSE 1880 1870 p%(j%,i%+1)=21:p%(j%,i%-1)=21 1880 NEXT i% 1890 FOR i%=2 TO 7 1900 IF c%(i%,j%)=q% GOTO 1910 ELSE 1920 1910 p%(i%+1,j%)=2:p%(i%-1,j%)=2 1920 IF c%(j%,i%)=q% GOTO 1930 ELSE 1940 1930 p%(j%,i%+1)=2:p%(j%,i%-1)=2 1940 NEXT i%:NEXT j% 1950 p%(1,2)=1:p%(1,7)=1:p%(2,1)=1:p%(7,1)=1 1960 p%(2,8)=1:p%(7,8)=1:p%(8,2)=1:p%(8,7)=1 1970 FOR i%=2 TO 7 1980 IF c%(1,i%-1)=q% AND c%(1,i%+1)=q% THEN p%(1,i%)=25 1990 IF c%(8,i%-1)=q% AND c%(8,i%+1)=q% THEN p%(8,i%)=25 2000 IF c%(i%-1,1)=q% AND c%(i%+1,1)=q% THEN p%(i%,1)=25 2010 IF c%(i%-1,8)=q% AND c%(i%+1,8)=q% THEN p%(i%,8)=25 2020 NEXT i% 2030 FOR j%=1 TO 8 STEP 7 2040 FOR i%=4 TO 8 2050 IF c%(j%,i%)<>n% GOTO 2140 2060 ic%=i%-1:IF c%(j%,ic%)=6 GOTO 2140 2070 IF c%(j%,ic%)=q% GOTO 2080 ELSE 2090 2080 ic%=ic%-1:GOTO 2070 2090 IF c%(j%,ic%)=6 GOTO 2110 2100 GOTO 2140 2110 IF ic%=0 GOTO 2140 2120 IF c%(j%,i%+1)=q% AND c%(j%,ic%-1)=6 GOTO 2140 2130 p%(j%,ic%)=26 2140 IF c%(i%,j%)<>n% GOTO 2230 2150 ic%=i%-1:IF c%(ic%,j%)=6 GOTO 2230 2160 IF c%(ic%,j%)=q% GOTO 2170 ELSE 2180 2170 ic%=ic%-1:GOTO 2160 2180 IF c%(ic%,j%)=6 GOTO 2200 2190 GOTO 2230 2200 IF ic%=0 GOTO 2230 2210 IF c%(i%+1,j%)=q% AND c%(ic%-1,j%)=6 GOTO 2230 2220 p%(ic%,j%)=26 2230 NEXT i% 2240 FOR i%=1 TO 5 2250 IF c%(j%,i%)<>n% GOTO 2340 2260 ic%=i%+1:IF c%(j%,ic%)=6 GOTO 2340 2270 IF c%(j%,ic%)=q% GOTO 2280 ELSE 2290 2280 ic%=ic%+1:GOTO 2270 2290 IF c%(j%,ic%)=6 GOTO 2310 2300 GOTO 2340 2310 IF ic%=9 GOTO 2340 2320 IF c%(j%,i%-1)=q% AND c%(j%,ic%+1)=6 GOTO 2340 2330 p%(j%,ic%)=26 2340 IF c%(i%,j%)<>n% GOTO 2430 2350 ic%=i%+1:IF c%(ic%,j%)=6 GOTO 2430 2360 IF c%(ic%,j%)=q% GOTO 2370 ELSE 2380 2370 ic%=ic%+1:GOTO 2360 2380 IF c%(ic%,j%)=6 GOTO 2400 2390 GOTO 2430 2400 IF ic%=9 GOTO 2430 2410 IF c%(i%-1,j%)=q% AND c%(ic%+1,j%)=6 GOTO 2430 2420 p%(ic%,j%)=26 2430 NEXT i%:NEXT j% 2440 IF c%(1,1)=n% GOTO 2450 ELSE 2460 2450 FOR i%=2 TO 6:p%(1,i%)=20:p%(i%,1)=20:NEXT i% 2460 IF c%(1,8)=n% GOTO 2470 ELSE 2480 2470 FOR i%=2 TO 6:p%(i%,8)=20:p%(1,9-i%)=20:NEXT i% 2480 IF c%(8,1)=n% GOTO 2490 ELSE 2500 2490 FOR i%=2 TO 6:p%(9-i%,1)=20:p%(8,i%)=20:NEXT i% 2500 IF c%(8,8)=n% GOTO 2510 ELSE 2520 2510 FOR i%=3 TO 7:p%(i%,8)=20:p%(8,i%)=20:NEXT i% 2520 IF c%(1,1)<>6 THEN p%(2,2)=5 2530 IF c%(1,8)<>6 THEN p%(2,7)=5 2540 IF c%(8,1)<>6 THEN p%(7,2)=5 2550 IF c%(8,8)<>6 THEN p%(7,7)=5 2560 p%(1,1)=30:p%(1,8)=30:p%(8,1)=30:p%(8,8)=30 2570 FOR i%=3 TO 6 2580 IF c%(1,i%)=n% THEN p%(2,i%)=4 2590 IF c%(8,i%)=n% THEN p%(7,i%)=4 2600 IF c%(i%,1)=n% THEN p%(i%,2)=4 2610 IF c%(i%,8)=n% THEN p%(i%,7)=4 2620 NEXT i% 2630 IF c%(7,1)=q% AND c%(4,1)=n% AND c%(6,1)=6 AND c%(5,1)=6 THEN p%(6,1)=26 2640 IF c%(1,7)=q% AND c%(1,4)=n% AND c%(1,6)=6 AND c%(1,5)=6 THEN p%(1,6)=26 2650 IF c%(2,1)=q% AND c%(5,1)=n% AND c%(3,1)=6 AND c%(4,1)=6 THEN p%(3,1)=26 2660 IF c%(1,2)=q% AND c%(1,5)=n% AND c%(1,3)=6 AND c%(1,4)=6 THEN p%(1,3)=26 2670 IF c%(8,2)=q% AND c%(8,5)=n% AND c%(8,3)=6 AND c%(8,4)=6 THEN p%(8,3)=26 2680 IF c%(2,8)=q% AND c%(5,8)=n% AND c%(3,8)=6 AND c%(4,8)=6 THEN p%(3,8)=26 2690 IF c%(8,7)=q% AND c%(8,4)=n% AND c%(8,5)=6 AND c%(8,6)=6 THEN p%(8,6)=26 2700 IF c%(7,8)=q% AND c%(4,8)=n% AND c%(5,8)=6 AND c%(6,8)=6 THEN p%(6,8)=26 2710 RETURN 2720 pas%=0 2730 FOR i%=1 TO 8 2740 FOR j%=1 TO 8 2750 IF c%(i%,j%)=q% GOTO 2780 2760 NEXT j%:NEXT i% 2770 pas%=1:RETURN 2780 FOR k%=1 TO 8 2790 vr%=0:c3%=i%:c4%=j% 2800 c3%=c3%+c1%(k%):c4%=c4%+c2%(k%) 2810 IF c3%<1 OR c3%>8 GOTO 2820 ELSE 2830 2820 NEXT k%:GOTO 2760 2830 IF c4%<1 OR c4%>8 GOTO 2820 ELSE 2840 2840 IF c%(c3%,c4%)=n% GOTO 2850 ELSE 2860 2850 vr%=vr%+1:GOTO 2800 2860 IF c%(c3%,c4%)=q% GOTO 2820 ELSE 2870 2870 IF vr%>0 THEN RETURN 2880 GOTO 2820 2890 DATA 1,0,30,1,20,10,10,20,1,30,1,1,1,1,3 2900 DATA 3,3,3,1,1,0,1,20,3,5,5,5,5,3,20,-1,1,10,3,5 2910 DATA 0,0,5,3,10,-1,0,10,3,5,0,0,5,3,10,-1 2920 DATA -1,20,3,5,5,5,5,3,20,0,-1,1,1,3,3,3,3,1,1,1,-1,30,1,20,10,10,20,1,30 2930 DATA 263,100,263,120,270,130,255,130,255,130,255,140,255,140,270,140 2940 DATA 270,140,270,150,270,150,255,150,255,160,270,160,270,160,270,180 2950 DATA 270,180,255,180,270,170,255,170,270,190,270,210,270,200,255,200 2960 DATA 255,200,255,210,255,220,270,220,270,220,270,230,270,230,255,230 2970 DATA 255,230,255,240,255,240,270,240,255,250,270,250,270,250,270,260 2980 DATA 270,260,255,260,255,250,255,270,270,280,270,300,270,300,255,300 2990 DATA 255,310,255,330,255,330,270,330,270,330,270,310,270,310,255,310 3000 DATA 255,320,270,320 3010 DATA 310,355,310,375,350,355,335,355,335,355,335,365,335,365,350,365 3020 DATA 350,365,350,375,350,375,335,375,365,355,380,355,380,355,380,375 3030 DATA 380,375,365,375,380,365,365,365,410,355,410,375,410,365,395,365 3040 DATA 395,365,395,375,425,355,440,355,440,355,440,365,440,365,425,365 3050 DATA 425,365,425,375,425,375,440,375,455,375,455,355,455,355,470,355 3060 DATA 470,355,470,365,470,365,455,365,485,375,500,375,500,375,500,355 3070 DATA 515,375,515,355,515,355,530,355,530,355,530,375,530,375,515,375 3080 DATA 515,365,530,365
No hay comentarios:
Publicar un comentario