• Inicio
  • Buscar
  • Ingresar
  • Registrarse

    Starfield: el juego que revolucionará el espacio y la tecnología

    • Hack x Crack - Comunidad de Seguridad informática »
    • Programación »
    • Java y Android »
    • Necesito ayuda con un proyecto de hundir la flota en java
    • Imprimir
    Páginas: [1]   Ir Abajo

    Autor Tema: Necesito ayuda con un proyecto de hundir la flota en java  (Leído 4443 veces)

    Desconectado byrench

    • { L0 } Ñuub
    • Mensajes: 1
      • Ver Perfil
    Necesito ayuda con un proyecto de hundir la flota en java
    « en: Abril 22, 2018, 11:51:12 am »
    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]);
        }
    }
    En línea

    • Imprimir
    Páginas: [1]   Ir Arriba
    • Hack x Crack - Comunidad de Seguridad informática »
    • Programación »
    • Java y Android »
    • Necesito ayuda con un proyecto de hundir la flota en java
     

    • SMF | SMF © 2013, Simple Machines
    • XHTML
    • RSS
    • WAP2
    Va un mudo y le dice a un sordo: Hack x Crack usa cookies. Pues eso... Learn more