• Jueves 14 de Noviembre de 2024, 08:13

Autor Tema:  Ayuda Para Ir Completando Esto  (Leído 2498 veces)

Getta

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Ayuda Para Ir Completando Esto
« en: Sábado 15 de Mayo de 2004, 20:18 »
0
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(?).*/

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Ayuda Para Ir Completando Esto
« Respuesta #1 en: Sábado 15 de Mayo de 2004, 22:06 »
0
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!!!!!

Getta

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Ayuda Para Ir Completando Esto
« Respuesta #2 en: Domingo 16 de Mayo de 2004, 00:00 »
0
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

Rataman

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Ayuda Para Ir Completando Esto
« Respuesta #3 en: Domingo 16 de Mayo de 2004, 01:22 »
0
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...

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Ayuda Para Ir Completando Esto
« Respuesta #4 en: Domingo 16 de Mayo de 2004, 01:52 »
0
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!!!!!

Getta

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Ayuda Para Ir Completando Esto
« Respuesta #5 en: Domingo 16 de Mayo de 2004, 12:02 »
0
en el main hago un scanf("%d %d",fila,columna), depues llamo a la funcion siguiente:
void Disparo(){

   int fila,columna;
   

   if(Matriz[fila][columna]==1){
      printf("\nTocado");
   }else{
      printf("\nFallaste");
   }

}
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?

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Ayuda Para Ir Completando Esto
« Respuesta #6 en: Domingo 16 de Mayo de 2004, 17:22 »
0
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:

void Disparo(int fila, int columna)
{

if ( (fila < CANTIDADFILAS) && (columna < CANTIDADCOLUMNAS) )
{
  if(Matriz[columna][fila]==1)
    printf("\nTocado");
  else
    printf("\nFallaste");
}
}

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!!!!!

Getta

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Ayuda Para Ir Completando Esto
« Respuesta #7 en: Domingo 16 de Mayo de 2004, 17:49 »
0
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.

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Ayuda Para Ir Completando Esto
« Respuesta #8 en: Domingo 16 de Mayo de 2004, 20:19 »
0
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!!!!!

Getta

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Ayuda Para Ir Completando Esto
« Respuesta #9 en: Domingo 16 de Mayo de 2004, 20:42 »
0
Código: Text
  1.  
  2. void Matrix(){
  3.  
  4.   int i,j;
  5.   for(i=0;i&#60;6;i++){
  6.     for(j=0;j&#60;6;j++){
  7.       Matriz[i][j]=0;
  8.     }
  9.   }
  10. }
  11.  
  12.  
  13. void Muestra(){
  14.  
  15.   int i,j;
  16.   for(i=0;i&#60;6;i++){
  17.     for(j=0;j&#60;6;j++){
  18.       printf(&#34;%d&#34;,Matriz[i][j]);
  19.     }
  20.     printf(&#34;&#092;n&#34;);
  21.   }
  22. }
  23.  

Getta

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Ayuda Para Ir Completando Esto
« Respuesta #10 en: Lunes 17 de Mayo de 2004, 15:57 »
0
Como haria ahora para detectar si el barco esta cerca de la casilla que yo le paso