Foro de elhacker.net

Programación => Ejercicios => Mensaje iniciado por: Kacoae en 17 Mayo 2013, 06:25 am



Título: Caballo Ajedrez JAVA
Publicado por: Kacoae en 17 Mayo 2013, 06:25 am
Hola a todos:

Quería saber si de casualidad alguien tiene el código en JAVA donde el caballo se desplace por todas las 64 casillas del Ajedrez (8x8) sin repetir casillas.

Gracias!


Título: Re: Caballo Ajedrez JAVA
Publicado por: Kacoae en 17 Mayo 2013, 06:41 am
AGREGO INFORMACIÓN:

He podido hacer (creo) el problema, pero en C. Casi no me relaciono con JAVA entonces haber si me podrian ayudar a pasarlo a JAVA.

Código:
#include <stdio.h>

#define N_CUADROS  8
#define N_SALTOS   8
#define CIERTO 1
#define FALSO  0

static int tablero_virtual[N_CUADROS+4][N_CUADROS+4];
static int dx[N_SALTOS]={ 2, 1,-1,-2,-2,-1, 1, 2};
static int dy[N_SALTOS]={ 1, 2, 2, 1,-1,-2,-2,-1};

static void inicia_tablero(void);
void presenta_tablero(void);
static int ensaya_movimiento(int n,int x,int y);


int main(void)
{

  inicia_tablero();
  printf("\ncalculando, espere por favor\n");
  if(ensaya_movimiento(1,2,2))
    printf("Resultado:");
  else
    printf("No hay soluci¢n");
  presenta_tablero();
  return 0;
}

static void inicia_tablero(void)
{
  int i,j;
  for(i=0;i<N_CUADROS+4;i++) {
    for(j=0;j<N_CUADROS+4;j++) {
      if(i>1 && i<N_CUADROS+2 && j>1 && j<N_CUADROS+2 )
           tablero_virtual[i][j]=0;
      else
           tablero_virtual[i][j]=-1;
    }
  }

}

void presenta_tablero(void)
{
  int i,j;

  for(i=0;i<N_CUADROS+4;i++) {
     printf("\n");
     for(j=0;j<N_CUADROS+4;j++) {
        if(tablero_virtual[i][j]!=-1)
         printf("%4d",tablero_virtual[i][j]);
     }
  }
  return;
}

static int ensaya_movimiento(int n,int x,int y)
{
  int i,u,v;
  tablero_virtual[x][y]=n;
  if(n==(N_CUADROS*N_CUADROS))
      return CIERTO;
  else {
    for(i=0;i<N_SALTOS;i++) {
      u=x+dx[i];
      v=y+dy[i];
      if(tablero_virtual[u][v]==0) {
        if(ensaya_movimiento(n+1,u,v))
          return CIERTO;
      }
   }
  }
  tablero_virtual[x][y]=0;
  return FALSO;
}

Gracias!