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

  • #74220800

    törölt tag

    Najo hajotSorra() es a hajotOszlopra() metódusoknál elszámoltam magam.De meg mindig nem jő. Ha van aki velem számol (9244,9245 hozz), itt a frissitett verzio:

    public class torpedo {

    private final int rows;
    private final int cols;

    private final boolean[][] hits;
    private final boolean[][] ships;

    public torpedo (int numRows, int numCols) {
    this.rows = numRows;
    this.cols = numCols;

    this.hits = new boolean[rows][cols];
    this.ships = new boolean[rows][cols];
    }

    public void startGame() {

    placeShips();


    printfield();

    }

    private void placeShips() {

    int [] shiporder ={2,2,2,2,3,3,3,4,4,5};

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

    int n = (int)(Math.random()*10);
    int b = shiporder[n];
    shiporder[n] = shiporder[j];
    shiporder[j] = b;
    }


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

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

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

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

    int ship = shiporder[j];

    int e = (int)(Math.random()*2);

    if ( e == 0 && (hajotVizszintesre( randomarray, ship) ||hajotFuggolegesre( randomarray, ship ) ));
    if ( e == 1 && ( hajotFuggolegesre( randomarray, ship) || hajotVizszintesre( randomarray, ship ) ));

    }



    }

    public boolean hajotSorra(int x, int[] arr, int size){

    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( ships[x][j] ){

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

    break;
    }

    if( ships[ Math.max(0,x-1)][j] || ships[ 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 < ships.length; j++){

    if( ships[x][j] ){

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

    break;
    }

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

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

    break;
    }

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

    }
    }


    if ( shipreadyright ){

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

    if ( shipreadyright && shipreadyleft) break;

    }

    return shipreadyright && shipreadyleft;


    }


    public boolean hajotOszlopra (int y, int[] arr, int size){

    boolean shipreadyup = false;

    boolean shipreadydown = false;

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

    int point = arr[k];

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

    if( ships[j][y] ){

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

    break;
    }

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

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

    break;

    }


    if( j == 0 ) shipreadyup =true;

    }

    if (shipreadyup){

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

    if( ships[j][y]){

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

    break;
    }

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

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

    break;

    }

    if( j == ships.length - 1 && ships.length - 1 - point >= size - 1 ) shipreadydown =true;

    }
    }


    if ( shipreadydown ){

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

    if ( shipreadydown && shipreadyup ) break;

    }

    return shipreadydown && shipreadyup;


    }


    public boolean hajotVizszintesre(int[] arr, int size){


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

    int p1 = arr[k];

    if ( hajotSorra(p1, arr, size)) return true;
    }

    return false;

    }

    public boolean hajotFuggolegesre(int[] arr, int size){

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

    int p2 = arr[k];

    if ( hajotOszlopra(p2, arr, size )) return true;
    }

    return false;

    }

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


    }

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

Hirdetés