def move(m)
      begin
        expand = expand_move(m)
        if expand[:from]
          move2(expand[:from], expand[:to], expand[:promotion])
        else
          super(expand[:name], expand[:dis], expand[:to], expand[:promotion])
        end
      rescue IllegalMoveError
        if ENV['DEBUG']
          raise IllegalMoveError.new("Illegal move '#{m}'\nStatus: #{self.status}\nPlayer turn #{self.active_player}\n#{self.to_s}")
        else
          raise IllegalMoveError.new("Illegal move '#{m}'")
        end
      end
    end
def move(m)
      begin
        expand = expand_move(m)
        if expand[:from]
          move2(expand[:from], expand[:to], expand[:promotion])
        else
          super(expand[:name], expand[:dis], expand[:to], expand[:promotion])
        end
      rescue IllegalMoveError
        if ENV['DEBUG']
          raise IllegalMoveError.new("Illegal move '#{m}'\nStatus: #{self.status}\nPlayer turn #{self.active_player}\n#{self.to_s}")
        else
          raise IllegalMoveError.new("Illegal move '#{m}'")
        end
      end
    end
Make a move.
 @note This add a new {Board} in the {Game}.
 @param [String] m Represents the short algebraic chess notation string of
   the move. `m` can be also _from_square_ plus _to_square_ _('e2e4', ...,
   'b1c3')_ (coordinate chess notation).
 @return [String] Returns a string that represents the short algebraic
   chess notation of the move.

 @raise {IllegalMoveError} if the move is illegal.
 @raise {BadNotationError} if the short algebraic chess notation is
   malformed.