def move_piece_to(self, input_move, move_to_col, move_to_line, col_filter = None, line_filter = None):
        if cm.is_castling(input_move):
            if cm.is_short_castling(input_move):
                return self.board.castler(self.player,'short')
            else:
                return self.board.castler(self.player,'long')

        kind = input_parser.input_to_kind(input_move)
        
        if kind is None:
            return False
        if input_parser.piece_eats(input_move):
            return self.board.piece_eater(kind, move_to_col,move_to_line,self.player, orig_col_filter = col_filter, orig_line_filter = line_filter)
        else:
            return self.board.piece_mover(kind, move_to_col,move_to_line,self.player, orig_col_filter = col_filter, orig_line_filter = line_filter)
def is_user_move_valid(input_move):
    if len(input_move) <= 1:
        print 'wrong input try again'
        return False

    if cm.is_check(input_move):
        print "CHECK"
        input_move = input_move[:-1]

    if cm.is_castling(input_move):
        return True

    if cm.is_special_case(input_move):
        return True

    if not cm.is_pawn(input_move) and not cm.is_main_piece(input_move):
        print 'case not valid, not a chess piece'
        return False

    if validate_eat_case(input_move):
        print 'valid eat input'
        return True

    if validate_move_case(input_move):
        print 'valid move input'
        return True

    promotion,input_move,promoted_to = cm.is_promotion(input_move)

    if promotion:
        if not is_valid_promotion(input_move,promoted_to):
            return False
        else:
            return True

    print 'wrong input, try again'
    return False
    def print_move(self, input_move, move_to_col, move_to_line):
        out_str  = ""

        if cm.is_short_castling(input_move):
            out_str = "Short castling for %s" % self.player
        
        elif cm.is_long_castling(input_move):
            out_str = "long castling for %s" % self.player

        elif cm.is_pawn(input_move):
            out_str = "Move %s pawn" % self.player

        elif cm.is_bishop(input_move):
            out_str = "Move %s bishop" % self.player
        
        elif cm.is_knight(input_move):
            out_str = "Move %s knight" % self.player
        
        elif cm.is_rook(input_move):
            out_str = "Move %s rook" % self.player
        
        elif cm.is_king(input_move):
            out_str = "Move %s king" % self.player
        
        elif cm.is_queen(input_move):
            out_str = "Move %s queen" % self.player
        else:
            out_str = "not supported move. Merry Xmas"

        if not cm.is_castling(input_move):
            if input_parser.piece_eats(input_move):
                out_str = out_str + " and capture piece at (%s,%s)" % (move_to_col,move_to_line)
            else: 
                out_str = out_str + " to (%s,%s)" % (move_to_col, move_to_line)

        print("Your move is : " + input_move + '. ' + out_str)