LLD || Snake Ladder Game || From where to learn LLD

I have been asked to design Snake ladder game for a single user in one of my interview. However i was rejected but i am not sure what improvment i can make and how to tackle such question more effeciently please review my solution.:-

package snakeLadderGame;

public class Board {
    Object[][] board=new Object[11][11];
    User currentUser;
    public Board(){
        board[0][9]=new Ladder(new int[]{9,7});
        board[9][8]=new Snake(new int[]{0,0});
        board[2][3]=new Ladder(new int[]{7,5});
        board[7][8]=new Snake(new int[]{2,4});
        board[4][5]=new Ladder(new int[]{7,7});
        board[5][4]=new Snake(new int[]{4,5});

        currentUser=new User();
    }
    public void startPlaying(){
        currentUser=new User();
        while(currentUser.pos[0]!=10 || currentUser.pos[1]!=10){
            currentUser.moveUser(currentUser.throwDice(),this);
            System.out.println("Player is at "+currentUser.pos[0]+" "+currentUser.pos[1]);
        }
        System.out.println("Player Won");

    }


}
package snakeLadderGame;

import java.util.Random;

public class User {
    int[] pos;

    public User() {
        pos = new int[]{0, 0};
    }

    public void moveUser(int moves, Board board) {
        if (pos[1] + moves >= board.board[0].length) {
            if(pos[0] + 1>=board.board.length){
                return;
            }
            pos[0] = pos[0] + 1 ;
            pos[1] = pos[1] + moves - board.board[0].length + 1;
        } else {
            pos[1] = pos[1] + moves;
        }
        if (board.board[pos[0]][pos[1]] != null && board.board[pos[0]][pos[1]].getClass() == Snake.class) {
            System.out.println("inside snake");
            int temp[] = new int[2];
            temp[0] = ((Snake) board.board[pos[0]][pos[1]]).target[0];
            temp[1] = ((Snake) board.board[pos[0]][pos[1]]).target[1];
            pos[0] = temp[0];
            pos[1] = temp[1];
        }
        if (board.board[pos[0]][pos[1]] != null && board.board[pos[0]][pos[1]].getClass() == Ladder.class) {
            System.out.println("inside ladder");
            int temp[] = new int[2];
            temp[0] = ((Ladder) board.board[pos[0]][pos[1]]).target[0];
            temp[1] = ((Ladder) board.board[pos[0]][pos[1]]).target[1];
            pos[0] = temp[0];
            pos[1] = temp[1];
        }
    }

    public int throwDice() {
        Random rand = new Random();
        int temp = rand.nextInt(6);
        System.out.println("Afer dice throw you get "+temp);
        return temp;
    }
}
package snakeLadderGame;

public class Snake {
    int[] target;
    public Snake(int[] target){
        this.target=target;
    }
}
package snakeLadderGame;

public class Ladder {
    int[] target;
    public Ladder(int[] target){
        this.target=target;
    }

}
package snakeLadderGame;

public class GameTes {
    public  static  void main(String args[]){
        Board board=new Board();
        board.startPlaying();
    }
}
Comments (0)