Programación General => C/C++ => Mensaje iniciado por: Getta en Sábado 15 de Mayo de 2004, 20:18
Título: Ayuda Para Ir Completando Esto
Publicado por: Getta en Sábado 15 de Mayo de 2004, 20:18
He de hacer este ejercicio y lo he empezado pero me hay muchas cosas que no se como hacer que salgan. De momento he hecho la matriz y pongo un 1(posicion del barco) en ella aleatpriamente. ahora viene lo que no se como hacer que es leer unas cordenadas y buscarlas en la matriz para decir si ha sido tocado o no, o si ha sido en las casillas exteriores al barco
/*juego de los barcos Matriz de 6*6 donde hay que posicionar un barco de una sola casilla, que sera marcada por un uno, se tendran que introducir las coordenadas y indicar si se ha acertado(2), ,se ha fallado o si el disparo ha dado en una de las casillas exteriores al barco(?).*/
Título: Re: Ayuda Para Ir Completando Esto
Publicado por: nicokiki en Sábado 15 de Mayo de 2004, 22:06
Hola!!!!!!
Mira, no entiendo q es lo q queres. Queres a partir de unas coordenadas ver el contenido de la matriz en ellas??? Si es eso es facil: if ( Matriz[columna][fila] == 1 ) cout << "Le pegaste" << endl; else cout << "Le erraste" << endl;
No se si era eso,
Salu2!!!!!
Título: Re: Ayuda Para Ir Completando Esto
Publicado por: Getta en Domingo 16 de Mayo de 2004, 00:00
lo k necesitaria primero es al k si hago un scanf de unas coordenadas x e y como hago para saber si he dado en el blanco, si he fallado he he dado en las casillas de alrededor
Título: Re: Ayuda Para Ir Completando Esto
Publicado por: Rataman en Domingo 16 de Mayo de 2004, 01:22
Yo hize un juego de hundir la flota, y en vez de usar dos estados (1 y 0), usaba tres estados, puede usar 0 para las vacias, 1 para las casillas de alrededor del "barco" y 2 para el barco en cuestion, asi es muxho mas facil controlar lo k creo que pretendes hacer...
Título: Re: Ayuda Para Ir Completando Esto
Publicado por: nicokiki en Domingo 16 de Mayo de 2004, 01:52
Hola de nuevo!!!
Lo primero q deberias hacer para no mandarte en una de meterte en memoria fuera de los limites y q el resultado sea inesperado, es checkear q tanto x como y sean menores o iguales q la dimension de la matriz (CANTIDADCOLUMNAS, CANTIDADFILAS). Una vez q cumple con esto, estas seguro de estar en el rango de coordenadas de la matriz. Luego, con esas coordenadas haces lo q te dije antes:
if ( Matriz[columna][fila] == 1 ) cout << "Le pegaste" << endl; else cout << "Le erraste" << endl;
Donde columna y fila son las coordenadas ingresadas por el usuario.
Salu2!!!!!
Título: Re: Ayuda Para Ir Completando Esto
Publicado por: Getta en Domingo 16 de Mayo de 2004, 12:02
en el main hago un scanf("%d %d",fila,columna), depues llamo a la funcion siguiente: void Disparo(){
} Pero haciendo esto no funciona Ademas otra cosa la matrix que hago de [6][6] al introducir las coordenadas es de 1-6 o de 0-5?
Título: Re: Ayuda Para Ir Completando Esto
Publicado por: nicokiki en Domingo 16 de Mayo de 2004, 17:22
Hola de nuevo!!
Los arreglos en C/C++ se empiezan a contar desde cero asi q va de 0-5 para referenciarlos. En cuanto a por q no te anda, yo calculo porque las matrices en C/C++ se referencian primero por la columna y despues por la fila, o sea, deberias hacer esto:
Lo q estas haciendo mal es q en esta funcion tuya no estaba recibiendo lo q ingresaba el usuario, o sea, no le pasabas la fila y la columna por parametro. Estas declarando dos variables locales fila y columna y luego verificabas la matriz en esas coordenadas q es exactamente lo mismo q hacer esto Matriz[0][0] ya q las variables locales son automaticamente inicializadas en cero (supuestamente).
Espero q te sirva
Salu2!!!!!
Título: Re: Ayuda Para Ir Completando Esto
Publicado por: Getta en Domingo 16 de Mayo de 2004, 17:49
Lo que tengo ahora es esto pero no se como poner si las coordenadas que le paso son las mismas que donde esta el numero 2 que se supone que es el barco, i si fallo que me marque con otro simbolo si el barco esta en una casilla esterior a donde se ha disparado.
Título: Re: Ayuda Para Ir Completando Esto
Publicado por: nicokiki en Domingo 16 de Mayo de 2004, 20:19
Hola!!!!!!
Seguis haciendo mal lo q te dije q estaba malllllllllll. Estas llamando a una funcion sin parametros y pretendes ver q hay en una posicion de la matriz, pero NUNCA le decis en q posicion mirar, SIEMPRE mira en la mismaaaaaaaaaa. A parte locx y locy no son globales a tu archivo, asi q no se q estas haciendo cuando en la funcion disparo comparas la matriz en esas posiciones.
Tu prototipo de disparo debe ser asi:
void Disparo(int fila, int columna);
Y haces lo q te dije antes en la implementacion.
Salu2!!!!!!!
P.D.: responde si lo q te decimos sirve o no, porque cada cosa q escribi no la hiciste entonces me estas haciendo escribir no se para q. Media pila!!!!!
Título: Re: Ayuda Para Ir Completando Esto
Publicado por: Getta en Domingo 16 de Mayo de 2004, 20:42
Código: Text
void Matrix(){
int i,j;
for(i=0;i<6;i++){
for(j=0;j<6;j++){
Matriz[i][j]=0;
}
}
}
void Muestra(){
int i,j;
for(i=0;i<6;i++){
for(j=0;j<6;j++){
printf("%d",Matriz[i][j]);
}
printf("\n");
}
}
Título: Re: Ayuda Para Ir Completando Esto
Publicado por: Getta en Lunes 17 de Mayo de 2004, 15:57
Como haria ahora para detectar si el barco esta cerca de la casilla que yo le paso