dimanche 10 novembre 2019

Two-dimensional array, checking elements close to a position

I'm doing an exercise that asks me if the mine is close to warn the user. So I used a lot of if-elseif, it's my first using these arrays and I wanted something more efficient, even if this works.

        if((mineX > 0 && mineY > 0) && (mineX < 4 && mineY < 4)) {
            if(quadrant[x][y] == quadrant[mineX-1][mineY-1] || quadrant[x][y] == quadrant[mineX+1][mineY+1] || quadrant[x][y] == quadrant[mineX-1][mineY] || quadrant[x][y] == quadrant[mineX][mineY-1] || quadrant[x][y] == quadrant[mineX+1][mineY] || quadrant[x][y] == quadrant[mineX][mineY+1]) {
                System.out.println("Warning! Mine in the surroundings!");
            }
        } else if(mineX == 0) {
            if(quadrant[x][y] == quadrant[mineX][mineY-1] || quadrant[x][y] == quadrant[mineX+1][mineY+1] || quadrant[x][y] == quadrant[mineX+1][mineY] || quadrant[x][y] == quadrant[mineX][mineY+1]) {
                System.out.println("Warning! Mine in the surroundings!");
            }
        } else if(mineY == 0) {
            if(quadrant[x][y] == quadrant[mineX-1][mineY] || quadrant[x][y] == quadrant[mineX+1][mineY+1] || quadrant[x][y] == quadrant[mineX+1][mineY] || quadrant[x][y] == quadrant[mineX][mineY+1]) {
                System.out.println("Warning! Mine in the surroundings!");
            }
        } else if(mineX == 3) {
            if(quadrant[x][y] == quadrant[mineX-1][mineY-1] || quadrant[x][y] == quadrant[mineX][mineY+1] || quadrant[x][y] == quadrant[mineX-1][mineY] || quadrant[x][y] == quadrant[mineX][mineY-1]) {
                System.out.println("Warning! Mine in the surroundings!");
            }
        } else if(mineY == 3) {
            if(quadrant[x][y] == quadrant[mineX-1][mineY-1] || quadrant[x][y] == quadrant[mineX+1][mineY] || quadrant[x][y] == quadrant[mineX-1][mineY] || quadrant[x][y] == quadrant[mineX][mineY-1]) {
                System.out.println("Warning! Mine in the surroundings!");
            }
        } else if(mineX == 0 && mineY == 0) {
            if(quadrant[x][y] == quadrant[mineX+1][mineY+1] || quadrant[x][y] == quadrant[mineX+1][mineY] || quadrant[x][y] == quadrant[mineX][mineY+1]) {
                System.out.println("Warning! Mine in the surroundings!");
            }
        } else if(mineY == 3 && mineX == 3) {
            if(quadrant[x][y] == quadrant[mineX-1][mineY-1] || quadrant[x][y] == quadrant[mineX-1][mineY] || quadrant[x][y] == quadrant[mineX][mineY-1]) {
                System.out.println("Warning! Mine in the surroundings!");
            }
        }

It is possible doing this code more efficient/simple?

The 'board' it's 4x4 (0 - 1 - 2 - 3)

Aucun commentaire:

Enregistrer un commentaire