Foro de elhacker.net

Programación => Java => Mensaje iniciado por: andresach en 8 Agosto 2017, 05:51 am



Título: ¿Còmo cambio de valor en una matriz?
Publicado por: andresach en 8 Agosto 2017, 05:51 am
Estoy llevando un curso de Java en la Universidad y como proyecto final nos dejaron hacer un juego llamado Battleship (Undir la flota), he llegado a la parte de validar que en la matriz que uno quiere "colocar" la nave, no estè ya ocupada, lo cual no sé como hacerlo.
 Ya llené de ceros la matriz para así colocar las naves, pero no sé como hacer para verificar si ya está ocupado por algún otro número (que representan las otras naves) no lo coloque.

 Si alguien sabe por favor le agradecería un montón la ayuda. :D

PD: Ya lo coloqué diciendo:
 
if (fila != 0) {
System.out.print(tArea ya ocupada);
}


Título: Re: ¿Còmo cambio de valor en una matriz?
Publicado por: Serapis en 9 Agosto 2017, 00:47 am
Precisamente poner ceros, para indicar presencia, es un error... el '0' debe inbdicar 'ausencia, esto es 'AGUA', y cualquier otro valor 'un objeto' (incluso tierra)

Si tienes un submarino, por ejemplo desde D5 hasta D9, pués (también por ejemplo) pones D5=6, D6=6, D7=6, D8=6, D9=6, así los submarinos (internamente) los reconoces por el valor 6, las fragatas con 2, un portaviones con 7, un destructor con 5, etc....
Ejemplo de un mapa:


    0 1 2 3 4 5 6 7 8 9
   -----------------------
A | 0 0 0 0 0 0 0 0 2 0
B | 0 0 0 0 0 0 0 0 2 0
C | 7 5 5 5 5 5 0 0 0 0
D | 7 0 0 0 6 6 6 6 6 6 <--- aquí el submarino (pero hay más barcos en el mapa)
E | 7 0 0 2 2 2 2 0 0 0
F | 7 0 3 3 3 3 0 0 0 0
G | 7 0 3 0 0 4 0 0 0 0
H | 7 0 3 0 0 4 0 0 0 0
I | 7 0 0 0 0 4 0 0 0 2
J | 7 0 0 0 0 4 3 3 3 2


Por último fíjate que el valor númérico al mismo tiempo indica el 'tamaño' del barco. Si ocupa 2  casillas d elargo, el valor será 2, si ocupa 4 de largo, usará el valor 4. Esto es útil para distinguir por ejemplo, dos buques de 2 casillas con respecto a uno de 4, o dos de 3 con respecto de 1 de 6 (o 3 de dos). Incluso haciendo esquina uno de 3 con otro de 3, podría parecer (al adversdario) que se trata de uno de 2 y uno de 4)...

Si un mapa fuera tan gigante como 300 casillas, podría no ser necesariamente cuadrado (rectángular), y podrías rellenar como 'tierra' con valor 9.... Así el mapa de 'agua' de cada jugador tendría una forma irregular (incluso islotes). Basta acordar la misma cantidad de casillas 'tierra'.