Hola a todos tengo mi proyecto de hundir la flota casi terminado pero tengo un problema al generar los barcos enemigos de manera aleatoria, y es que hay veces que estos coinciden con otras posiciones de barcos ya creados. He intentado arreglar esto comparando los arrays (tengo un array para cada barco donde guardo cada posicion) con el random generado. pero aún así coinciden. (elimino el método portaaviones porque al ser el primero no es necesario comparar nada)
lo siento por el código que ocupa casi 1800 lineas espero respuesta y gracias.
public static int[] posiciones = new int[10]; public Creador_Barcos_Enemigos(){ portaviones(); submarino(); destructor(); fragata(); } /** * */
public void submarino(){ int comprovador = 0;
int posi_submarino = (int) (Math.random()*100); for (int i = 0; i < 7; i++) { while(posi_submarino==posiciones){ posi_submarino = (int) (Math.random()*101); } } do{ if(posi_submarino==0||posi_submarino==2||posi_submarino==3||posi_submarino==4||posi_submarino==5|| posi_submarino==6||posi_submarino==7|posi_submarino==10||posi_submarino==20|| posi_submarino==30||posi_submarino==40||posi_submarino==50||posi_submarino==60||posi_submarino==70|| posi_submarino==80||posi_submarino==90||posi_submarino==91||posi_submarino==92||posi_submarino==92|| posi_submarino==93||posi_submarino==94||posi_submarino==95||posi_submarino==96|| posi_submarino==81){ for (int i = 0; i < 7; i++) { if(posi_submarino+1==posiciones || posi_submarino+2 ==posiciones){ comprovador =1; }else{ posiciones[4]= posi_submarino; posiciones[5]= posi_submarino+1; posiciones[6]= posi_submarino+2; break; } }
Hola a todos tengo mi proyecto de hundir la flota casi terminado pero tengo un problema al generar los barcos enemigos de manera aleatoria, y es que hay veces que estos coinciden con otras posiciones de barcos ya creados. He intentado arreglar esto comparando los arrays (tengo un array para cada barco donde guardo cada posicion) con el random generado. pero aún así coinciden. (elimino el método portaaviones porque al ser el primero no es necesario comparar nada)
lo siento por el código que ocupa casi 1800 lineas espero respuesta y gracias.
public static int[] posiciones = new int[10];
public Creador_Barcos_Enemigos(){
portaviones();
submarino();
destructor();
fragata();
}
/**
*
*/
public void submarino(){
int comprovador = 0;
int posi_submarino = (int) (Math.random()*100);
for (int i = 0; i < 7; i++) {
while(posi_submarino==posiciones){
posi_submarino = (int) (Math.random()*101);
}
}
do{
if(posi_submarino==0||posi_submarino==2||posi_submarino==3||posi_submarino==4||posi_submarino==5||
posi_submarino==6||posi_submarino==7|posi_submarino==10||posi_submarino==20||
posi_submarino==30||posi_submarino==40||posi_submarino==50||posi_submarino==60||posi_submarino==70||
posi_submarino==80||posi_submarino==90||posi_submarino==91||posi_submarino==92||posi_submarino==92||
posi_submarino==93||posi_submarino==94||posi_submarino==95||posi_submarino==96||
posi_submarino==81){
for (int i = 0; i < 7; i++) {
if(posi_submarino+1==posiciones || posi_submarino+2 ==posiciones){
comprovador =1;
}else{
posiciones[4]= posi_submarino;
posiciones[5]= posi_submarino+1;
posiciones[6]= posi_submarino+2;
break;
}
}
}else if( posi_submarino==8||posi_submarino==9||posi_submarino==19||posi_submarino==29||posi_submarino==39||posi_submarino==49||
posi_submarino==59||posi_submarino==69||posi_submarino==79||posi_submarino==82||posi_submarino==89||
posi_submarino==83||posi_submarino==84||posi_submarino==85||posi_submarino==86||posi_submarino==97||posi_submarino==99||
posi_submarino==87||posi_submarino==98||posi_submarino==88){
for (int i = 0; i < 7; i++) {
if(posi_submarino-1==posiciones || posi_submarino-2==posiciones){
comprovador =1;
}else{
posiciones[4]= posi_submarino;
posiciones[5]= posi_submarino-1;
posiciones[6]= posi_submarino-2;
break;
}
}
}else{
for (int i = 0; i < 7; i++) {
if(posi_submarino+10==posiciones || posi_submarino+20==posiciones){
comprovador =1;
}else{
posiciones[4]= posi_submarino;
posiciones[5]= posi_submarino+10;
posiciones[6]= posi_submarino+20;
break;
}
}
}
for (int i = 4; i < 7; i++) {
System.out.println("submarino " + posiciones);
}
}while(posiciones[4]==0 || posiciones[5]==0 || posiciones[6]==0 || comprovador == 1);
}
public void destructor(){
int comprovador =0;
int posi_destructor = (int) (Math.random()*100);
for (int i = 0; i < 7; i++) {
while(posi_destructor==posiciones){
posi_destructor = (int) (Math.random()*101);
}
}
do{
if(posi_destructor==0||posi_destructor==2||posi_destructor==3||posi_destructor==4||posi_destructor==5||
posi_destructor==6||posi_destructor==7|posi_destructor==10||posi_destructor==20||
posi_destructor==30||posi_destructor==40||posi_destructor==50||posi_destructor==60||posi_destructor==70||
posi_destructor==80||posi_destructor==90||posi_destructor==91||posi_destructor==92||posi_destructor==92||
posi_destructor==93||posi_destructor==94||posi_destructor==95||posi_destructor==96||
posi_destructor==98||posi_destructor==81){
for (int i = 0; i < 8; i++) {
if(posi_destructor+1==posiciones){
comprovador =1;
}else{
posiciones[7]= posi_destructor;
posiciones[8]= posi_destructor+1;
break;
}
}
}else if( posi_destructor==8||posi_destructor==9||posi_destructor==19||posi_destructor==29||posi_destructor==39||posi_destructor==49||
posi_destructor==59||posi_destructor==69||posi_destructor==79||posi_destructor==82||posi_destructor==89||
posi_destructor==83||posi_destructor==84||posi_destructor==85||posi_destructor==86||posi_destructor==97||posi_destructor==99||
posi_destructor==87||posi_destructor==88){
for (int i = 0; i < 8; i++) {
if(posi_destructor-1==posiciones){
comprovador =1;
}else{
posiciones[7]= posi_destructor;
posiciones[8]= posi_destructor-1;
break;
}
}
}else{
for (int i = 0; i < 8; i++) {
if(posi_destructor+10==posiciones){
comprovador =1;
}else{
posiciones[7]= posi_destructor;
posiciones[8]= posi_destructor+10;
break;
}
}
}
for (int i = 7; i < 9; i++) {
System.out.println("destructor " + posiciones);
}
}while(posiciones[7]==0 || posiciones[8]==0 || comprovador==1);
}
public void fragata(){
int posi_fragata = (int) (Math.random()*100);
for (int i = 0; i < 9; i++) {
while(posi_fragata==posiciones){
posi_fragata = (int) (Math.random()*101);
}
}
posiciones[9] = posi_fragata;
System.out.println("fragata "+posiciones[9]);
}
}