improve isBlocked() and canMove(x, y)