elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  juego del caballo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: juego del caballo  (Leído 1,386 veces)
jonathan1099

Desconectado Desconectado

Mensajes: 4


Ver Perfil
juego del caballo
« en: 31 Octubre 2016, 00:03 am »

hola necesito ayuda tengo que hacer el juego del caballo que me diga los movimientos del caballo pero yo tengo  que indicar la posicion de inicio q puede ser cualquiera en un tablero de 8*8;  y solo puedo es que inicie desde la esquina pero no se donde hacer q me lea la posicion de inicio


este  es mi codigo


Código
  1. #include <stdio.h>
  2.  
  3. #define N 7
  4. #define ncuad N*N
  5.  
  6. void mover(int tablero[][N], int i, int pos_x, int pos_y, int *q);
  7.  
  8. const int ejex[8] = { -1,-2,-2,-1, 1, 2, 2, 1 },
  9.          ejey[8] = { -2,-1, 1, 2, 2, 1,-1,-2 };
  10.  
  11. int main(void)
  12. {
  13.  int tablero[N][N]; /* tablero del caballo. */
  14.  int i,j,q;
  15.  
  16.   /* inicializa el tablero a cero */
  17.  for (i = 0; i < N; i++)
  18.   for (j = 0; j < N; j++)
  19.    tablero[i][j] = 0;
  20.  
  21.   /* pone el primer movimiento */
  22.  tablero[0][0] = 1;
  23.  mover(tablero,2,0,0,&q);
  24.  
  25.  if (q) { /* hay solucion: la muestra. */
  26.    for (i = 0; i < N; i++) {
  27.      for (j = 0; j < N; j++)
  28.        printf("%3d ", tablero[i][j]);
  29.      putchar('\n');
  30.    }
  31.  }
  32.  else
  33.    printf("\nNo existe solucion\n");
  34.  
  35.  return 0;
  36. }
  37.  
  38. void mover(int tablero[][N],int i, int pos_x, int pos_y, int *q)
  39. {
  40.  int k, u, v;
  41.  
  42.  k = 0;
  43.  *q = 0;
  44.  do {
  45.    u = pos_x + ejex[k]; v = pos_y + ejey[k]; /* seleccionar candidato */
  46.    if (u >= 0 && u < N && v >= 0 && v < N) { /* esta dentro de los limites? */
  47.      if (tablero[u][v] == 0) {  /* es valido? */
  48.        tablero[u][v] = i;  /* anota el candidato */
  49.        if (i < ncuad) {  /* llega al final del recorrido? */
  50.          mover(tablero,i+1,u,v,q);
  51.          if (!*q) tablero[u][v] = 0; /* borra el candidato */
  52.        }
  53.        else *q = 1; /* hay solucion */
  54.      }
  55.    }
  56.    k++;
  57.  } while (!*q && k < 8);
  58. }

MOD: etiquetas GeSHi


« Última modificación: 31 Octubre 2016, 01:53 am por MCKSys Argentina » En línea

neskky

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: juego del caballo
« Respuesta #1 en: 4 Noviembre 2016, 21:11 pm »

Prueba con esta función.

Código:
void Caballo(int tab[][N], int i, int pos_x, int pos_y, int *q) {

 int k,u,v;
 k=0;
 *q=0;
 
 do {
     u=pos_x + ejex[k];  v=pos_y + ejey[k];
     if(u>=0 && u<N && v>=0 && v< N)  {
        if (tab[u][v]==0) {
           tab[u][v]=i;
           if(i< N*N)  {
              Caballo(tab,i+1,u,v,q);
              if(!(*q)) tab[u][v]=0;
             }
           else *q=1;
         }
      }
    k++;
   } while(!(*q) && k<8);
}

también ->

Código:
void Caballo(int tab[][N], int i, int pos_x, int pos_y)  {
     int k,u,v;
     k=0;
  do{
     u=pos_x + ejex[k];  v=pos_y + ejey[k];
     if(u>=0 && u<N && v>=0 && v< N)
      {
        if (tab[u][v]==0)
         {
           tab[u][v]=i;
           if(i< N*N)
             Caballo (tab, i+1 ,u ,v);
           else
              ImprimeSol(tab);
           tab[u][v]=0;
        }
     }
     k++;
   } while(k<8);
}


« Última modificación: 4 Noviembre 2016, 21:14 pm por neskky » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Algoritmo movimiento caballo ajedrez
Programación C/C++
DarkItachi 6 25,865 Último mensaje 28 Noviembre 2011, 22:27 pm
por denix
Vaca pare un caballo! « 1 2 »
Foro Libre
ignorantev1.1 16 10,299 Último mensaje 1 Noviembre 2010, 15:40 pm
por [L]ord [R]NA
problema con caballo de ajedrez!!! « 1 2 »
Programación C/C++
danic++ 18 13,125 Último mensaje 8 Diciembre 2010, 17:44 pm
por Littlehorse
Caballo Ajedrez JAVA
Ejercicios
Kacoae 1 5,361 Último mensaje 17 Mayo 2013, 06:41 am
por Kacoae
Caballo del Ajedrez en JAVA
Ejercicios
Kacoae 2 17,433 Último mensaje 24 Febrero 2014, 14:47 pm
por gordo23
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines