Autor
|
Tema: juego del caballo (Leído 1,413 veces)
|
jonathan1099
Desconectado
Mensajes: 4
|
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 #include <stdio.h> #define N 7 #define ncuad N*N void mover(int tablero[][N], int i, int pos_x, int pos_y, int *q); const int ejex[8] = { -1,-2,-2,-1, 1, 2, 2, 1 }, ejey[8] = { -2,-1, 1, 2, 2, 1,-1,-2 }; int main(void) { int tablero[N][N]; /* tablero del caballo. */ int i,j,q; /* inicializa el tablero a cero */ for (i = 0; i < N; i++) for (j = 0; j < N; j++) tablero[i][j] = 0; /* pone el primer movimiento */ tablero[0][0] = 1; mover(tablero,2,0,0,&q); if (q) { /* hay solucion: la muestra. */ for (i = 0; i < N; i++) { for (j = 0; j < N; j++) printf("%3d ", tablero [i ][j ]); } } else printf("\nNo existe solucion\n"); return 0; } void mover(int tablero[][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]; /* seleccionar candidato */ if (u >= 0 && u < N && v >= 0 && v < N) { /* esta dentro de los limites? */ if (tablero[u][v] == 0) { /* es valido? */ tablero[u][v] = i; /* anota el candidato */ if (i < ncuad) { /* llega al final del recorrido? */ mover(tablero,i+1,u,v,q); if (!*q) tablero[u][v] = 0; /* borra el candidato */ } else *q = 1; /* hay solucion */ } } k++; } while (!*q && k < 8); }
MOD: etiquetas GeSHi
|
|
« Última modificación: 31 Octubre 2016, 01:53 am por MCKSys Argentina »
|
En línea
|
|
|
|
neskky
Desconectado
Mensajes: 1
|
Prueba con esta función. 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 -> 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Algoritmo movimiento caballo ajedrez
Programación C/C++
|
DarkItachi
|
6
|
25,929
|
28 Noviembre 2011, 22:27 pm
por denix
|
|
|
Vaca pare un caballo!
« 1 2 »
Foro Libre
|
ignorantev1.1
|
16
|
10,373
|
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,200
|
8 Diciembre 2010, 17:44 pm
por Littlehorse
|
|
|
Caballo Ajedrez JAVA
Ejercicios
|
Kacoae
|
1
|
5,398
|
17 Mayo 2013, 06:41 am
por Kacoae
|
|
|
Caballo del Ajedrez en JAVA
Ejercicios
|
Kacoae
|
2
|
17,509
|
24 Febrero 2014, 14:47 pm
por gordo23
|
|