public class GraphicalDot {
    private static final int SIZE = 50;
    private static final int MAX_STEP = 5;
    
    private static Die die = new Die(GraphicalDot.MAX_STEP);
    private static int nextDotNumber = 0;
    
    private String dotColor;
    private int dotPosition;   
    private Circle dotImage;
    private int distanceToDraw;
    
    public GraphicalDot(String color) {
        this.dotColor = color;
        this.dotPosition= 0;
        this.dotPosition = 0;
                 
        this.dotImage = new Circle();
        this.dotImage.changeColor(color);
        this.dotImage.changeSize(GraphicalDot.SIZE);
        this.dotImage.moveVertical(GraphicalDot.SIZE*(GraphicalDot.nextDotNumber));
        this.dotImage.makeVisible();
        
        GraphicalDot.nextDotNumber++;
    }

    public int getPosition() {
        return this.dotPosition;
    }

    public String getColor() {
        return this.dotColor;
    }    

    public void step() {
        int distance = GraphicalDot.die.roll();
        this.dotPosition += distance;
        this.distanceToDraw += distance;
    }
    
    public void reset() {
        this.dotImage.moveHorizontal(-this.dotPosition);
        this.dotPosition = 0;
        this.distanceToDraw = 0;
    }
    
    public void showPosition() {
        this.dotImage.slowMoveHorizontal(this.distanceToDraw);
        this.distanceToDraw = 0;
    }
}
