Apagada docs

Aprendiendo a programar el pasado

Herramientas de usuario

Herramientas del sitio


es:basic:salto_del_caballo
Salto del Caballo (Chess Knight Trip)

Este programa crea una tabla de todos los recorridos del salto del caballo de ajedrez que cubran el tablero entero sin aterrizar dos veces en la misma casilla. Lo usé para crear un juego en javascript.

10 rem Salto del Caballo
20 dim tablero(8,8)
30 type xy
40 x as integer
50 y as integer
60 end type
70 dim caballo(8) as xy
80 dim pilamov(8*8)
85 dim pilapos(8*8) as xy
90 dim mejormv(8*8)
95 ppilamov = 0 : pmejormv = 0 : mvmejor = 0
100 rem movimientos del caballo
105 gosub 9000
110 m1 = 1 : m2 = 1
120 for f = 0 to 1
130 for g = 0 to 1
140 caballo(f*4+g*2).x = 2*m1 : caballo(f*4+g*2).y = m2
150 caballo(f*4+g*2+1).x = m2 : caballo(f*4+g*2+1).y = 2*m1
160 gotoxy 4+caballo(f*4+g*2).x*2,4+caballo(f*4+g*2).y
170 print format$(f*4+g*2,"##");
180 gotoxy 4+caballo(f*4+g*2+1).x*2,4+caballo(f*4+g*2+1).y
190 print format$(f*4+g*2+1,"##");
200 m2 = -m2 : next g
210 m1 = -m1 : next f
220 gotoxy 4,4 : print "@@";
230 gotoxy 0,20
500 pilapos(0).x = 0 : pilapos(0).y = 0
999 end
1000 rem Ejecutar movimiento
1010 salida: resultm(0 = bien;-1 : fuera;resto = ocupado)
1020 rem usa: ppilamov para obtener x e y
1030 rem usa: pilamov para obtener mov actual
1040 rem usa: pilapos (xy) para obtener x e y
1045 rem para obtener el movimiento usa un valor recién introducido en pila
1050 xmov = caballo(ppilamov).x
1060 ymov = caballo(ppilamov).y
1065 rem el x del movimiento anterior se mete con el puntero del movimiento siguiente
1070 xmov = xmov+pilapos(ppilamov).x
1080 ymov = ymov+pilapos(ppilamov).y
1090 if xmov > 7 or xmov < 0 then result = -1 : return
1100 if ymov > 7 or ymov < 0 then result = -1 : return
1110 if tablero(xmov,ymov) <> 0 then result = tablero(xmov,ymov) : return
1120 tablero(xmov,ymov) = ppilamov
1130 ppilamov = ppilamov+1
1140 pilapos(ppilamov).x = xmov
1150 pilapos(ppilamov).y = ymov
1160 return
8000 rem Dibujar en Tablero
8010 gotoxy xdib*2,ydib
8020 print format$(ndib,"##");
8030 return
8500 rem Borrar Tablero
8510 gotoxy xdib*2,ydib
8520 if ((xdib+ydib) mod 2) then print "xx"; :  else print "  ";
8530 return
9000 rem Tablero cutre
9005 stp = 1
9010 for g = 0 to 7
9020 for f = 0 to 7
9030 gotoxy f*2,g
9040 if ((f+g) mod 2) then print "xx"; :  else print "  ";
9050 stp = -stp
9060 next f : stp = -stp
9070 next g
9080 return
Este sitio web utiliza cookies. Al utilizar el sitio web, usted acepta almacenar cookies en su computadora. También reconoce que ha leído y entendido nuestra Política de privacidad. Si no está de acuerdo abandone el sitio web.Más información
es/basic/salto_del_caballo.txt · Última modificación: 2015/05/03 11:23 por nepenthes