public void move (double xadd, double yadd)
    {
        //if (isColliding()) return;
        if (xadd != 0 && yadd != 0) { move(xadd, 0); move(0, yadd); return; }
        if (Math.abs(xadd) > 1) {
            for (int xa = 0; xa < Math.abs(xadd); xa++) move(Math.signum(xadd), 0);
            move(xadd % 1, 0);
            return;
        }
        if (Math.abs(yadd) > 1) {
            for (int ya = 0; ya < Math.abs(yadd); ya++) move(0, Math.signum(yadd));
            move(0, yadd % 1);
            return;
        }
        x += xadd;
        y += yadd;
        if (!isColliding()) return;
        x -= xadd;
        y -= yadd;
        return;
    }