Keresés

Új hozzászólás Aktív témák

  • #74220800

    törölt tag

    válasz #74220800 #9247 üzenetére

    Na az előző verzió majdnem jó. Valamiért néha sorokon vagy oszlopokon belül berakja egymás mellé a hajókat. Kiszedtem belőle egy kisebb reszt. Ez a hatodik sorba próbál berakni két darab 4es hajót véletlenül.
    Sajnos néha egymás mellé.. Valaki jöjjön plsssssssssss.

    public class Tesztsor{ //java Tesztsor

    public static void main(String[] args){

    int [] randomatrix ={0,1,2,3,4,5,6,7,8,9};

    boolean[][] hajok = new boolean [10][10];

    for(int j = 0; j < randomatrix.length; j++){

    int w = (int)(Math.random()*10);
    int g = randomatrix[w];
    randomatrix[w] = randomatrix[j];
    randomatrix[j] = g;
    }

    hajokatSorra(5, randomatrix, 4, hajok);
    hajokatSorra(5, randomatrix, 4, hajok);

    for(int i = 0; i < hajok.length; i++){
    for(int j = 0; j < hajok[i].length; j++){
    if (hajok[i][j])
    System.out.print("H");
    else
    System.out.print("-");
    }
    System.out.println();
    }


    }


    public static boolean hajokatSorra(int x, int[] arr, int size, boolean[][] hajok ){

    boolean shipreadyleft = false;

    boolean shipreadyright = false;

    for( int k = 0; k < arr.length; k++){

    int point = arr[k];

    for( int j = point; j >= 0; j--){

    if( hajok[x][j] ){

    if ( point - j >= 2 ) shipreadyleft =true;

    break;
    }

    if( hajok[ Math.max(0,x-1)][j] || hajok[ Math.min(9,x+1)][j] ){

    if (point - j >= 1 ) shipreadyleft =true;

    break;
    }

    if( j == 0 ) shipreadyleft =true;

    }

    if (shipreadyleft){

    for( int j = point; j < hajok.length; j++){

    if( hajok[x][j] ){

    if( j - point >= size + 1 ) shipreadyright =true;

    break;
    }

    if( hajok[ Math.max(0,x-1)][j] || hajok[ Math.min(9,x+1)][j] ){

    if ( j - point >= size ) shipreadyright =true;

    break;
    }

    if( j == hajok.length - 1 && hajok.length - 1 - point >= size - 1 ) shipreadyright =true;

    }
    }


    if ( shipreadyright ){

    for( int j = point; j - point + 1 <= size; j++){
    hajok[x][j] = true;
    }
    }

    if ( shipreadyright && shipreadyleft) break;

    }

    return shipreadyright && shipreadyleft;


    }

    }

Új hozzászólás Aktív témák