@Override
    public void move(final Doodle.Coordinates coordinates) throws GameEndedException {
        final int iterations;
        final double iterationVelocity;


        iterations = Math.abs(hVelocity);
        iterationVelocity = (double) hVelocity / iterations;

        for (int i = 0; i < iterations; i++) {
            if (coordinates.getH() + iterationVelocity < 0 && Doodle.getInstance().getPrevH() <= PlayGround.getOneLineHeight()) {
                throw new GameEndedException();
            }
            if (coordinates.getH() + iterationVelocity < playHeight) {
                coordinates.changeH((int) iterationVelocity);
            }
        }
        procs--;
        if (procs == 0) {
            Doodle.getInstance().setMoveTactic(new Standard());
        }

        coordinates.changeX(xVelocity);
        if (coordinates.getX() < 0) {
            coordinates.setX(playWidth + coordinates.getX());
        }
        if (coordinates.getX() > playWidth) {
            coordinates.setX(coordinates.getX() - playWidth);
        }
    }