Apagada docs

Aprendiendo a programar el pasado

Herramientas de usuario

Herramientas del sitio


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

This program computes a Chess Knight Trip covering the entire board, without landing twice in the same square.

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
en/basic/salto_del_caballo.txt · Última modificación: 2013/01/09 14:14 por nepenthes