예제 #1
0
def check_is_call_valid(screen_area, hand_value, element, stack_collection,
                        db):
    try:
        cur_stack = current_stack.search_current_stack(screen_area,
                                                       stack_collection, db)
        bank_size = current_stack.search_bank_stack(screen_area, db)
        call_size = image_processing.search_last_opponent_action(
            screen_area, db)
        if not isinstance(call_size, str):
            call_size = call_size['alias']
        else:
            call_size = current_stack.search_allin_stack(screen_area, db)
        if call_size == '0.5':
            call_size = float(call_size)
        elif call_size == 'check':
            call_size = 0.1
        else:
            call_size = int(call_size)
        current_pot_odds = round(bank_size / call_size, 1)
        if cur_stack <= call_size:
            element = 'river'
        necessary_pot_odds = db_query.get_pot_odds(hand_value, element, db)
        if int(current_pot_odds) >= int(necessary_pot_odds):
            return True
        else:
            return False
    except Exception as e:
        error_log.error_log('check_is_call_valid', str(e))
예제 #2
0
def check_is_action_buttons(screen_area, stack_collection, db):
    current_stack.get_actual_game_data(screen_area, stack_collection, db)
    row = session_log.get_last_row_from_log_session(screen_area, db)
    try:
        reaction_to_opponent = get_reaction_to_opponent(row, db)
        if not isinstance(reaction_to_opponent, str):
            reaction_to_opponent = 'fold'
    except:
        reaction_to_opponent = 'fold'
    last_opponnet_action = image_processing.search_last_opponent_action(screen_area, db)
    if not isinstance(last_opponnet_action, str):
        hand = row[0]['hand']
        hand = hand_converting(hand)
        bb_count = last_opponnet_action['alias']
        if reaction_to_opponent == 'fold' and bb_count in ('1', '2') and \
                int(row[0]['current_stack']) >= 17 and hand in available_hand_to_call_min3bet():
            reaction_to_opponent = 'call'
    if reaction_to_opponent == 'push':
        keyboard.press('q')
    elif reaction_to_opponent == 'call':
        keyboard.press('c')
    else:
        keyboard.press('f')
    session_log.update_action_log_session(reaction_to_opponent, str(screen_area), db)
    return True
예제 #3
0
def get_opponent_flop_reaction(screen_area, stack_collection, db):
    hand_value = session_log.get_hand_value(screen_area, db)
    combination_value = db_query.get_combination_value('flop', hand_value, db)
    stack = session_log.get_last_row_from_log_session(screen_area, db)[0][1]
    if hand_value is None:
        return False
    opponent_reaction = image_processing.search_last_opponent_action(
        screen_area, db)
    if not isinstance(opponent_reaction, str):
        opponent_reaction = opponent_reaction['alias']
    if opponent_reaction in ('1', '2', '3') and combination_value in ('draw', 'other', 'composite') \
            and int(stack) <= 13 and current_stack.search_current_stack(screen_area, stack_collection, db) <= 13:
        keyboard.press('q')
        session_log.update_action_log_session('push', str(screen_area), db)
    elif combination_value == 'draw' and pot_odds.check_is_call_valid(
            screen_area, hand_value, 'turn', stack_collection, db):
        keyboard.press('c')
        session_log.update_action_log_session('cc_postflop', str(screen_area),
                                              db)
    elif opponent_reaction in ('1', '2') and hand_value not in (
            'trash', 'gutshot', 'bottom_pair',
            'over_cards') and combination_value != 'draw':
        keyboard.press('c')
        session_log.update_action_log_session('cc_postflop', str(screen_area),
                                              db)
    elif opponent_reaction == 'check':
        keyboard.press('h')
        session_log.update_action_log_session('cc_postflop', str(screen_area),
                                              db)
    else:
        keyboard.press('f')
        session_log.update_action_log_session('fold', str(screen_area), db)
    return True
예제 #4
0
def check_is_call_after_opponent_river_agression(screen_area, hand_value,
                                                 stack_collection, action, db):
    try:
        cur_stack = current_stack.search_current_stack(screen_area,
                                                       stack_collection, db)
        bank_size = current_stack.search_bank_stack(screen_area, db)
        call_size = image_processing.search_last_opponent_action(
            screen_area, db)
        if not isinstance(call_size, str):
            call_size = call_size['alias']
        else:
            call_size = 5
        if call_size == '0.5':
            call_size = float(call_size)
        elif call_size == 'check':
            call_size = 0
        else:
            call_size = int(call_size)
        if action == 'river_cbet' and cur_stack > bank_size and call_size not in ('0.5', '1', '2', '3', '4') \
                and hand_value in ('low_two_pairs', 'two_pairs', 'top_pair', 'low_top_pair'):
            print(hand_value)
            return False
        elif action == 'river_cbet' and cur_stack > bank_size and call_size in ('0.5', '1', '2', '3', '4') \
                and hand_value in ('low_two_pairs', 'two_pairs', 'top_pair', 'low_top_pair'):
            return True
        else:
            return None
    except Exception as e:
        error_log.error_log('check_is_call_after_opponent_river_agression',
                            str(e))
예제 #5
0
def make_river_decision(screen_area, hand, stack, action, stack_collection, db):
    opponent_reaction = image_processing.search_last_opponent_action(screen_area, db)
    hand_value = flop.get_hand_value(hand, screen_area, db)
    combination_value = db_query.get_combination_value('river', hand_value, db)
    if not isinstance(opponent_reaction, str):
        opponent_reaction = opponent_reaction['alias']
    if river_action(screen_area, hand_value, combination_value, stack, action, opponent_reaction, hand, stack_collection, db):
        return True
예제 #6
0
def check_is_raise_cbet(screen_area, stack_collection, db):
    hand_value = session_log.get_hand_value(screen_area, db)
    combination_value = db_query.get_combination_value('flop', hand_value, db)
    opponent_reaction = image_processing.search_last_opponent_action(screen_area, db)
    stack = session_log.get_last_row_from_log_session(screen_area, db)[0]['current_stack']
    if not isinstance(opponent_reaction, str):
        opponent_reaction = opponent_reaction['alias']
    if raise_cbet_action(screen_area, hand_value, combination_value, opponent_reaction, stack, stack_collection, db):
        return True
예제 #7
0
def check_is_raise_river_value_bet(screen_area, db):
    opponent_reaction = image_processing.search_last_opponent_action(screen_area, db)
    if opponent_reaction in ('1', '2'):
        keyboard.press('c')
        session_log.update_action_log_session('end', str(screen_area), db)
    else:
        keyboard.press('f')
        session_log.update_action_log_session('fold', str(screen_area), db)
    return True
예제 #8
0
def check_conditions_before_insert(hand, screen_area, stack_collection, image_name, folder_name, db):
    try:
        position = str(determine_position.seacrh_blind_chips(screen_area, image_name, folder_name, db))
        opponent_data = current_stack.processing_opponent_data(screen_area, stack_collection, db)
        is_headsup = opponent_data[0]
        stack = opponent_data[1]
        if position == 'button':
            is_headsup = 0
        stack = current_stack.convert_stack(stack)
        if position == 'big_blind' or (position == 'small_blind' and is_headsup == 0):
            last_opponent_action = image_processing.search_last_opponent_action(screen_area, db)
            last_opponent_action = get_last_opponent_action(position, last_opponent_action)
        else:
            last_opponent_action = None
        session_log.insert_into_log_session(screen_area, hand, db, position, str(stack), is_headsup=is_headsup,
                                            last_opponent_action=last_opponent_action)
    except Exception as e:
        error_log.error_log('checkConditionsBeforeInsert', str(e))
        print(e)
예제 #9
0
def make_flop_decision(screen_area, hand, image_name, folder_name, stack,
                       action, is_headsup, flop_deck, stack_collection, db):
    try:
        save_flop_image(screen_area, image_name, folder_name, db)
        flop_area = db_query.get_flop_area(screen_area, db)
        flop_card = image_processing.search_cards(str(flop_area), flop_deck, 6,
                                                  db)
        hand = hand + flop_card
        opponent_reaction = image_processing.search_last_opponent_action(
            screen_area, db)
        if not isinstance(opponent_reaction, str):
            opponent_reaction = opponent_reaction['alias']
        session_log.update_hand_after_flop(str(screen_area), hand, db)
        hand_value = get_hand_value(hand, screen_area, db)
        combination_value = db_query.get_combination_value(
            'flop', hand_value, db)
        flop_action(screen_area, action, hand_value, combination_value, stack,
                    is_headsup, opponent_reaction, stack_collection, db)
    except Exception as e:
        error_log.error_log('makeFlopDecision' + action, str(e))
        print(e)