Create player according to chosen difficulty I am coding a 2D board game. I let the user choose the difficulty level in the beginning, which influences the skills points of the player. 

Here is the code I wrote for the Player class:

package model;

public class Player {

    // VARIABLES ---------------------------

    private Position position;
    private int score = 0;
    private int stepsLeft;
    private int fightingSkill;
    private int jokingSkill;
    private int visionScope = 2;
    private String skillChoice;


    // CONSTRUCTOR --------------------------

    public Player(Position position, int difficultyLevel) {
        this.position = position;

        switch(difficultyLevel) {
        case 1: 
            this.stepsLeft = 150; 
            this.fightingSkill = 5; 
            this.jokingSkill = 5;

        case 2: 
            this.stepsLeft = 150; 
            this.fightingSkill = 2; 
            this.jokingSkill = 2;

        case 3: 
            this.stepsLeft = 100; 
            this.fightingSkill = 2; 
            this.jokingSkill = 2;

        case 4: 
            this.stepsLeft = 10; 
            this.fightingSkill = 1; 
            this.jokingSkill = 1;
        }
    }


    public Player(int stepsLeft, int fightingSkill, int jokingSkill) {
        this.stepsLeft = stepsLeft; 
        this.fightingSkill = fightingSkill; 
        this.jokingSkill = jokingSkill;
        this.position = new Position(1,1);
        this.score = 0;
    }

    // METHODS ------------------------------

    public void move(Position destination) {
        setPosition(destination);
        stepsLeft -= 1;
    }

    public void increaseScore(int bonus) {
        score += bonus;
    }

    public void increaseStepsLeft(int bonus) {
        stepsLeft+= bonus;
    }

    public void increaseFightingSkill(int bonus) {
        fightingSkill += bonus;
    }

    public void increaseJokingSkill(int bonus) {
        jokingSkill += bonus;
    }

    // GETTERS 

    public Position getPosition() {
        return position;
    }

    public int getXPosition() {
        return position.getX();
    }

    public int getYPosition() {
        return position.getY();
    }

    public int getScore() {
        return score;
    }

    public int getStepsLeft() {
        return stepsLeft;
    }

    public int getFightingSkill() {
        return fightingSkill;
    }

    public int getJokingSkill() {
        return jokingSkill;
    }

    public String getSkillChoice() {
        return skillChoice;
    }

    public int getVisionScope() {
        return visionScope;
    }

    // SETTERS

    public void setPosition(Position position) {
        this.position = position;
    }

    public void setSkillChoice(int choice) {
        switch(choice) {
        case 0:
            this.skillChoice = "joke";
            break;
        case 1:
            this.skillChoice = "fight";
            break;
        case 2:
            this.skillChoice = "magic";
            break;
        default:
            ;
        }
    }

    public String toString() {
        return "play \t"+position+"\t"+stepsLeft+"\t"+jokingSkill+"\t"+score+"\n";
    }
}


My questions


I chose to use a switch statement in the constructor, to create my player with features according to the difficulty level. I have the feeling that is maybe not the good practice to have such a switch in a constructor but can't really say why, and don't find a better way. Is there a better way to do this? 
Any other comments about that class? I've programmed scientific code but am quite new to OOP and Java. Any comment is welcome.
There are several things that can be improved, in my opinion:


Whitespaces around operators make the code more readable (you use them almost everywhere except this method):

public String toString() {
    return "play \t" + position + "\t" + stepsLeft + "\t"
           + jokingSkill + " \t" + score + "\n";
} 

Comments like // VARIABLES ---------- or // METHODS ---------- are useless (they do not contain any additional information). Adding comments for each individual method explaining what it does (especially for public ones) or what a field is used for is a good practice.  
An alternative for using switch statement is creating an array of constants. It can look like this:

private static int[] stepsLeftForLevel = new int[]{150, 150, 100, 10};

...

public Player(Position position, int difficultyLevel) {
    ...
    stepsLeft = stepsLeftForLevel[difficultyLevel];
    ...
}


It makes the code more readable in my opinion because all "magic" numbers are located in one place (and the code becomes more concise). 
There is no need to use this in a constructor unless the name of the field is shadowed by a parameter (that is, I would recommend using this only when it is necessary).