Ejemplo n.º 1
0
def win_prob_turn(k, data_cards, data_ingame):
    data_probs = [0] * k

    s = 0

    p = 0

    data_cards1 = data_cards[:len(data_cards) - 1]

    data_cards1.append(-1)

    for j in range(1, 53):

        if j not in data_cards1:

            p += 1

            data_cards1[k * 2 + 4] = j

            for l in range(k):

                if data_ingame[l + 1] != 0:
                    data_probs[l] = winner(l + 1, data_cards1, k)

            if max(data_probs) == data_probs[0]:
                s += 1

            data_cards1[k * 2 + 4] = -1

    x = (s / p)

    return x
Ejemplo n.º 2
0
def after_reaver(data_pots, data_cards, data_chips, k_player):
    k_pots = 1

    for i in range(2, k_player + 1):

        if data_pots[i][0] == 0:
            break

        k_pots += 1

    for i in range(1, k_pots + 1):

        max = 0

        print(i)

        for j in range(1, k_player + 1):

            if (data_pots[i][j] == 1):

                if winner(j, data_cards, k_player) > max:
                    max = winner(j, data_cards, k_player)

        kol = 0

        for j in range(1, k_player + 1):

            if (data_pots[i][j] == 1):

                if winner(j, data_cards, k_player) == max:
                    kol += 1

        for j in range(1, k_player + 1):

            if (data_pots[i][j] == 1):

                if winner(j, data_cards, k_player) == max:
                    data_chips[j] += int(data_pots[i][0] / kol)

    return data_chips
Ejemplo n.º 3
0
def bot_reaver(card1, card2, data_reaver, bet, prev_bet, chips, last_move):
    data_card = []

    data_card.append(card1)

    data_card.append(card2)

    data_card.extend(data_reaver)

    if winner(1, data_card, 1) < 400000000000:

        r = random()

        if r < 0.9:

            return 0

        else:

            if r > 0.98:

                stavka = stavka = int(bet * (random() * 2 + 1)) + prev_bet

                if stavka > chips + last_move:

                    return chips + last_move

                else:

                    return stavka

            else:

                stavka = prev_bet

                if stavka > chips + last_move:

                    return chips + last_move

                else:

                    return stavka

    if winner(1, data_card, 1) < 700000000000:

        r = random()

        if r < 0.1:

            return 0

        else:

            if r > 0.7:

                stavka = stavka = int(bet * (random() * 2 + 1)) + prev_bet

                if stavka > chips + last_move:

                    return chips + last_move

                else:

                    return stavka

            else:

                stavka = prev_bet

                if stavka > chips + last_move:

                    return chips + last_move

                else:

                    return stavka

    if winner(1, data_card, 1) >= 700000000000:

        r = random()

        if r > 0.1:

            stavka = stavka = int(bet * (random() * 2 + 1)) + prev_bet

        else:

            stavka = prev_bet

        if stavka > chips + last_move:

            return chips + last_move

        else:

            return stavka
Ejemplo n.º 4
0
def bot_turn(card1, card2, data_turn, bet, prev_bet, chips, last_move):
    data_card = []

    data_card.append(card1)

    data_card.append(card2)

    data_card.extend(data_turn)

    f = False

    while f == False:

        f = True

        cardreaver = random() * 51 + 1

        if cardreaver in data_card:
            f = False

    data_card.append(cardreaver)

    if winner(1, data_card, 1) < 300000000000:

        r = random()

        if r < 0.9:

            return 0

        else:

            if r > 0.98:

                stavka = int(bet * (random() * 2 + 1)) + prev_bet

                if stavka > chips + last_move:

                    return chips + last_move

                else:

                    return stavka

            else:

                stavka = prev_bet

                if stavka > chips + last_move:

                    return chips + last_move

                else:

                    return stavka

    if winner(1, data_card, 1) < 600000000000:

        r = random()

        if r < 0.03:

            return 0

        else:

            if r > 0.7:

                stavka = int(bet * (random() * 2 + 1)) + prev_bet

                if stavka > chips:

                    return chips + last_move

                else:

                    return stavka

            else:

                stavka = prev_bet

                if stavka > chips:

                    return chips + last_move

                else:

                    return stavka

    if winner(1, data_card, 1) >= 600000000000:

        r = random()

        if r > 0.1:

            stavka = int(bet * (random() * 2 + 1)) + prev_bet

        else:

            stavka = prev_bet

        if stavka > chips:

            return chips + last_move

        else:

            return stavka
Ejemplo n.º 5
0
def bot_flop(card1, card2, data_flop, bet, prev_bet, chips, last_move):  # если никто не ставил, тогда bet = bigblind

    data_card = []

    data_card.append(card1)

    data_card.append(card2)

    data_card.extend(data_flop)

    f = False

    while f == False:

        f = True

        cardturn = random() * 51 + 1

        if cardturn in data_card:
            f = False

    f = False

    data_card.append(cardturn)

    while f == False:

        f = True

        cardreaver = random() * 51 + 1

        if cardreaver in data_card:
            f = False

    data_card.append(cardreaver)

    if winner(1, data_card, 1) < 200000000000:

        r = random()

        if r < 0.9:

            return 0

        else:

            if r > 0.98:

                stavka = int(bet * (random() * 2 + 1)) + prev_bet

                if stavka > chips + last_move:

                    return chips + last_move

                else:

                    return stavka

            else:

                stavka = prev_bet

                if stavka > chips + last_move:

                    return chips + last_move

                else:

                    return stavka

    if winner(1, data_card, 1) < 500000000000:

        r = random()

        if r < 0.1:

            return 0

        else:

            if r > 0.7:

                stavka = int(bet * (random() * 2 + 1)) + prev_bet

                if stavka > chips + last_move:

                    return chips + last_move

                else:

                    return stavka

            else:

                stavka = prev_bet

                if stavka > chips + last_move:

                    return chips + last_move

                else:

                    return stavka

    if winner(1, data_card, 1) >= 500000000000:

        r = random()

        if r > 0.1:

            stavka = int(bet * (random() * 2 + 1)) + prev_bet

        else:

            stavka = prev_bet

        if stavka > chips + last_move:

            return chips + last_move

        else:

            return stavka
Ejemplo n.º 6
0
def loop():
    prev_bet = 0
    global temporary
    temporary = -1

    bank_temp = 0

    def win_p_func():
        win_p.configure(
            text=(str(int(win_prob_flop(k, data_cards, data_ingame) * 100)) +
                  " %"))

    def win_p_func_turn():
        win_p.configure(
            text=(str(int(win_prob_turn(k, data_cards, data_ingame) * 100)) +
                  " %"))

    btn_raise = Button(window,
                       text="Raise",
                       bg="black",
                       fg="red",
                       font=("Arial Bold", 14),
                       command=lambda: player_bet(3))
    btn_call = Button(window,
                      text="Call",
                      bg="black",
                      fg="red",
                      font=("Arial Bold", 14),
                      command=lambda: player_bet(1))
    btn_check = Button(window,
                       text="Check/Fold",
                       bg="black",
                       fg="red",
                       font=("Arial Bold", 14),
                       command=lambda: player_bet(2))

    btn_raise.place(width=100, height=50, x=450, y=430)
    btn_call.place(width=100, height=50, x=340, y=430)
    btn_check.place(width=100, height=50, x=230, y=430)

    k = 9

    data_chips = [1000] * (k + 1)
    chips_cfg(data_chips)

    data_chips[0] = 0

    blind = 10

    dealer_pos = k

    data_ingame = [1] * (k + 1)

    data_ingame[0] = 0

    f1 = False

    g = 0
    while data_chips.count(0) < k:

        data_bets = []
        bank_temp = 0

        data_ingame = [0] * (k + 1)

        for i in range(1, k + 1):

            if data_chips[i] > 0:
                data_ingame[i] = 1

        data_pots = []

        for i in range(k + 1):

            data_pots.append([])

            for j in range(k + 1):
                data_pots[i].append(0)

        data_pots[0][0] = -1

        g += 1

        data_cards = new_hand(k)

        image_links = create_image_links(data_cards)
        image_links_f = create_image_links_f(len(data_cards))

        pilImage = Image.open(card_texture[data_cards[0]])
        image6 = ImageTk.PhotoImage(pilImage)
        imagesprite6 = c1.create_image(42, 53, image=image6)

        pilImage = Image.open(card_texture[data_cards[1]])
        image7 = ImageTk.PhotoImage(pilImage)
        imagesprite7 = c2.create_image(42, 53, image=image7)

        f = False

        while f == False:

            dealer_pos += 1

            if dealer_pos == k + 1:  # Передаем дилера следующему игроку

                dealer_pos = 1

            if data_chips[dealer_pos] != 0:
                f = True
        dealer.place(x=dealer_data[dealer_pos - 1][0],
                     y=dealer_data[dealer_pos - 1][1])

        data_bets = [0] * (k + 1)

        f = False

        next_move = dealer_pos

        while f == False:  # Ставим малый блайнд

            next_move = next_move + 1

            if next_move == k + 1:
                next_move = 1

            if data_chips[next_move] != 0:

                data_bets[next_move] = blind

                if data_chips[next_move] < blind:

                    data_bets[next_move] = data_chips[next_move]

                    data_chips[next_move] = 0

                    data_ingame[next_move] = 2

                else:

                    data_chips[next_move] -= blind

                f = True
                bets_cfg(data_bets)
                chips_cfg(data_chips)
                p_ch.configure(text="Your chips: " + str(data_chips[1]))
                p_bet.configure(text=str(data_bets[1]))

        f = False

        while f == False:  # Ставим большой блайнд

            next_move = next_move + 1

            if next_move == k + 1:
                next_move = 1

            if data_chips[next_move] != 0:

                data_bets[next_move] = blind * 2

                if data_chips[next_move] < blind * 2:

                    data_bets[next_move] = data_chips[next_move]

                    data_chips[next_move] = 0

                    data_ingame[next_move] = 2

                else:

                    data_chips[next_move] -= blind * 2

                f = True
                bets_cfg(data_bets)
                chips_cfg(data_chips)
                bank.configure(text="BANK: " + str(sum(data_bets)))
                p_ch.configure(text="Your chips: " + str(data_chips[1]))
                p_bet.configure(text=str(data_bets[1]))

        bet = 20  # Разница в ставках

        prev_bet = 20  # Предыдущая ставка

        f = False  # Цикл ставок, пока все не уровняют

        f1 = False

        s = 0

        s_players = data_ingame.count(1)

        slider.configure(from_=prev_bet * 2, to=data_chips[1])

        while f == False and f1 == False:

            f = True

            next_move = next_move + 1

            if next_move == k + 1:
                next_move = 1

            if data_ingame[next_move] == 1:

                s += 1

                if next_move != 1:
                    time.sleep(2)
                    t = bot_preflop(data_cards[next_move * 2 - 2],
                                    data_cards[next_move * 2 - 1], bet,
                                    prev_bet, data_chips[next_move],
                                    data_bets[next_move])

                    hand_links = create_hand_links()

                    if t == 0:
                        for j in range(1, k + 1):
                            if data_bets[j] > data_bets[next_move]:
                                data_ingame[next_move] = 0
                                a = hand_links[next_move * 2 - 3].create_image(
                                    18,
                                    26,
                                    image=image_links_f[next_move * 2 - 3])
                                b = hand_links[next_move * 2 - 4].create_image(
                                    18,
                                    26,
                                    image=image_links_f[next_move * 2 - 4])

                    else:

                        data_chips[next_move] -= (t - data_bets[next_move])

                        if t - prev_bet > 0:

                            if bet <= t - prev_bet:
                                bet = t - prev_bet

                            prev_bet = t

                        data_bets[next_move] = t

                        if data_chips[next_move] == 0:
                            data_ingame[next_move] = 2
                    bets_cfg(data_bets)
                    chips_cfg(data_chips)
                    bank.configure(text="BANK: " +
                                   str(sum(data_bets) + bank_temp))
                    p_ch.configure(text="Your chips: " + str(data_chips[1]))
                    p_bet.configure(text=str(data_bets[1]))

                if next_move == 1:
                    if prev_bet != 0 and data_chips[1] > prev_bet * 2:
                        slider.configure(from_=prev_bet * 2, to=data_chips[1])
                    elif data_chips[1] > prev_bet * 2:
                        slider.configure(from_=blind * 2, to=data_chips[1])
                    else:
                        slider.configure(from_=data_chips[1], to=data_chips[1])
                    ##t = int(input("Введите ставку "))
                    temporary = -1
                    t = temporary
                    while t == -1:
                        time.sleep(1)
                        t = temporary
                    temporary = -1
                    if t == -4:
                        if data_chips[1] <= prev_bet:
                            t = -2
                        else:
                            t = slider.get()
                    if t == -2:
                        if prev_bet < data_chips[1]:
                            t = prev_bet - data_bets[1]
                        else:
                            t = data_chips[1]

                    if t == -3:
                        for j in range(1, k + 1):
                            if data_bets[j] > data_bets[next_move]:
                                data_ingame[next_move] = 0
                    else:

                        data_chips[next_move] -= t

                        if t + data_bets[next_move] - prev_bet > 0:

                            if t + data_bets[next_move] - prev_bet >= bet:
                                bet = t + data_bets[next_move] - prev_bet

                            prev_bet = t + data_bets[next_move]

                        data_bets[next_move] += t

                        if data_chips[next_move] == 0:
                            data_ingame[next_move] = 2
                    bets_cfg(data_bets)
                    chips_cfg(data_chips)
                    bank.configure(text="BANK: " +
                                   str(sum(data_bets) + bank_temp))
                    p_ch.configure(text="Your chips: " + str(data_chips[1]))
                    p_bet.configure(text=str(data_bets[1]))
            temp = []

            for i in range(1, k + 1):

                if data_ingame[i] == 1:
                    temp.append(data_bets[i])

            temp.sort()

            if len(temp) > 1:

                if temp[0] != temp[-1] or temp[0] < prev_bet or temp[
                        -1] < prev_bet:
                    f = False

            if len(temp) == 1:

                if temp[0] < prev_bet:
                    f = False

            if s < s_players:
                f = False

            if data_ingame.count(1) < 2:

                if len(temp) > 0:

                    if temp[0] == prev_bet:
                        f1 = True

        bank_temp += sum(data_bets)
        data_pots = exchange(data_pots, data_bets, data_ingame, k)

        ################################ FLOP ###############################
        btn_win_prob = Button(window,
                              text="show win \n probability",
                              bg="black",
                              fg="red",
                              font=("Arial Bold", 14),
                              command=lambda: win_p_func())
        btn_win_prob.place(width=100, height=50, x=0, y=220)

        pilImage = Image.open(card_texture[data_cards[k * 2]])
        image1 = ImageTk.PhotoImage(pilImage)
        imagesprite1 = t1.create_image(42, 53, image=image1)

        pilImage = Image.open(card_texture[data_cards[k * 2 + 1]])
        image2 = ImageTk.PhotoImage(pilImage)
        imagesprite2 = t2.create_image(42, 53, image=image2)

        pilImage = Image.open(card_texture[data_cards[k * 2 + 2]])
        image3 = ImageTk.PhotoImage(pilImage)
        imagesprite3 = t3.create_image(42, 53, image=image3)
        for i in range(1, k + 1):
            data_ingame[i] = data_pots[0][i]

        data_flop = []

        data_flop.append(data_cards[k * 2])

        data_flop.append(data_cards[k * 2 + 1])

        data_flop.append(data_cards[k * 2 + 2])

        prev_bet = 0

        bet = blind * 2

        f = False

        next_move = dealer_pos

        data_bets = [0] * (k + 1)

        s = 0

        s_players = data_ingame.count(1)

        while f == False and f1 == False:

            f = True

            next_move = next_move + 1

            if next_move == k + 1:
                next_move = 1

            if data_ingame[next_move] == 1:

                s += 1

                if next_move != 1:
                    time.sleep(2)
                    t = bot_flop(data_cards[next_move * 2 - 2],
                                 data_cards[next_move * 2 - 1], data_flop, bet,
                                 prev_bet, data_chips[next_move],
                                 data_bets[next_move])

                    if t == 0:
                        for j in range(1, k + 1):
                            if data_bets[j] > data_bets[next_move]:
                                data_ingame[next_move] = 0
                                a = hand_links[next_move * 2 - 3].create_image(
                                    18,
                                    26,
                                    image=image_links_f[next_move * 2 - 3])
                                b = hand_links[next_move * 2 - 4].create_image(
                                    18,
                                    26,
                                    image=image_links_f[next_move * 2 - 4])

                    else:

                        data_chips[next_move] -= (t - data_bets[next_move])

                        if t - prev_bet > 0:

                            if t - prev_bet >= bet:
                                bet = t - prev_bet

                            prev_bet = t

                        data_bets[next_move] = t

                        if data_chips[next_move] == 0:
                            data_ingame[next_move] = 2
                    bets_cfg(data_bets)
                    chips_cfg(data_chips)
                    bank.configure(text="BANK: " +
                                   str(sum(data_bets) + bank_temp))
                    p_ch.configure(text="Your chips: " + str(data_chips[1]))
                    p_bet.configure(text=str(data_bets[1]))

                if next_move == 1:
                    if prev_bet != 0 and data_chips[1] > prev_bet * 2:
                        slider.configure(from_=prev_bet * 2, to=data_chips[1])
                    elif data_chips[1] > prev_bet * 2:
                        slider.configure(from_=blind * 2, to=data_chips[1])
                    else:
                        slider.configure(from_=data_chips[1], to=data_chips[1])

                    temporary = -1

                    t = temporary
                    while t == -1:
                        time.sleep(1)
                        t = temporary
                    temporary = -1
                    if t == -4:
                        if data_chips[1] <= prev_bet:
                            t = -2
                        else:
                            t = slider.get()
                    if t == -2:
                        if prev_bet < data_chips[1]:
                            t = prev_bet - data_bets[1]
                        else:
                            t = data_chips[1]

                    if t == -3:
                        for j in range(1, k + 1):
                            if data_bets[j] > data_bets[next_move]:
                                data_ingame[next_move] = 0

                    else:

                        data_chips[next_move] -= t

                        if t + data_bets[next_move] - prev_bet > 0:

                            if bet <= t + data_bets[next_move] - prev_bet:
                                bet = t + data_bets[next_move] - prev_bet

                            prev_bet = t + data_bets[next_move]

                        data_bets[next_move] += t

                        if data_chips[next_move] == 0:
                            data_ingame[next_move] = 2
                    bets_cfg(data_bets)
                    chips_cfg(data_chips)
                    bank.configure(text="BANK: " +
                                   str(sum(data_bets) + bank_temp))
                    p_ch.configure(text="Your chips: " + str(data_chips[1]))
                    p_bet.configure(text=str(data_bets[1]))

            temp = []

            for i in range(1, k + 1):

                if data_ingame[i] == 1:
                    temp.append(data_bets[i])

            temp.sort()

            if len(temp) > 1:

                if temp[0] != temp[-1] or temp[0] < prev_bet or temp[
                        -1] < prev_bet:
                    f = False

            if len(temp) == 1:

                if temp[0] < prev_bet:
                    f = False

            if s < s_players:
                f = False

            if data_ingame.count(1) < 2:

                if len(temp) > 0:

                    if temp[0] == prev_bet:
                        f1 = True

        bank_temp += sum(data_bets)
        data_pots = exchange(data_pots, data_bets, data_ingame, k)

        ############################# TURN #########################
        btn_win_prob_turn = Button(window,
                                   text="show win \n probability",
                                   bg="black",
                                   fg="red",
                                   font=("Arial Bold", 14),
                                   command=lambda: win_p_func_turn())
        btn_win_prob.destroy()
        btn_win_prob_turn.place(width=100, height=50, x=0, y=220)
        bank_temp += sum(data_bets)

        pilImage = Image.open(card_texture[data_cards[k * 2 + 3]])
        image4 = ImageTk.PhotoImage(pilImage)
        imagesprite4 = t4.create_image(42, 53, image=image4)

        for i in range(1, k + 1):
            data_ingame[i] = data_pots[0][i]
        data_turn = []

        data_turn.extend(data_flop)

        data_turn.append(data_cards[k * 2 + 3])

        prev_bet = 0

        bet = blind * 2

        f = False

        next_move = dealer_pos

        data_bets = [0] * (k + 1)

        s = 0

        s_players = data_ingame.count(1)

        while f == False and f1 == False:

            f = True

            next_move = next_move + 1

            if next_move == k + 1:
                next_move = 1

            if data_ingame[next_move] == 1:

                s += 1

                if next_move != 1:
                    time.sleep(2)
                    t = bot_turn(data_cards[next_move * 2 - 2],
                                 data_cards[next_move * 2 - 1], data_turn, bet,
                                 prev_bet, data_chips[next_move],
                                 data_bets[next_move])

                    if t == 0:
                        for j in range(1, k + 1):
                            if data_bets[j] > data_bets[next_move]:
                                data_ingame[next_move] = 0
                                a = hand_links[next_move * 2 - 3].create_image(
                                    18,
                                    26,
                                    image=image_links_f[next_move * 2 - 3])
                                b = hand_links[next_move * 2 - 4].create_image(
                                    18,
                                    26,
                                    image=image_links_f[next_move * 2 - 4])

                    else:

                        data_chips[next_move] -= (t - data_bets[next_move])

                        if t - prev_bet > 0:

                            if t - prev_bet >= bet:
                                bet = t - prev_bet

                            prev_bet = t

                        data_bets[next_move] = t

                        if data_chips[next_move] == 0:
                            data_ingame[next_move] = 2
                    bets_cfg(data_bets)
                    chips_cfg(data_chips)
                    bank.configure(text="BANK: " +
                                   str(sum(data_bets) + bank_temp))
                    p_ch.configure(text="Your chips: " + str(data_chips[1]))
                    p_bet.configure(text=str(data_bets[1]))

                if next_move == 1:
                    if prev_bet != 0 and data_chips[1] > prev_bet * 2:
                        slider.configure(from_=prev_bet * 2, to=data_chips[1])
                    elif data_chips[1] > prev_bet * 2:
                        slider.configure(from_=blind * 2, to=data_chips[1])
                    else:
                        slider.configure(from_=data_chips[1], to=data_chips[1])
                    temporary = -1
                    t = temporary
                    while t == -1:
                        time.sleep(1)
                        t = temporary

                    temporary = -1
                    if t == -4:
                        if data_chips[1] <= prev_bet:
                            t = -2
                        else:
                            t = slider.get()
                    if t == -2:
                        if prev_bet < data_chips[1]:
                            t = prev_bet - data_bets[1]
                        else:
                            t = data_chips[1]
                    if t == -3:
                        for j in range(1, k + 1):
                            if data_bets[j] > data_bets[next_move]:
                                data_ingame[next_move] = 0

                    else:

                        data_chips[next_move] -= t

                        if t + data_bets[next_move] - prev_bet > 0:

                            if t + data_bets[next_move] - prev_bet >= bet:
                                bet = t + data_bets[next_move] - prev_bet

                            prev_bet = t + data_bets[next_move]

                        data_bets[next_move] += t

                        if data_chips[next_move] == 0:
                            data_ingame[next_move] = 2
                    bets_cfg(data_bets)
                    chips_cfg(data_chips)
                    bank.configure(text="BANK: " +
                                   str(sum(data_bets) + bank_temp))
                    p_ch.configure(text="Your chips: " + str(data_chips[1]))
                    p_bet.configure(text=str(data_bets[1]))

            temp = []

            for i in range(1, k + 1):

                if data_ingame[i] == 1:
                    temp.append(data_bets[i])

            temp.sort()

            if len(temp) > 1:

                if temp[0] != temp[-1] or temp[0] < prev_bet or temp[
                        -1] < prev_bet:
                    f = False

            if len(temp) == 1:

                if temp[0] < prev_bet:
                    f = False

            if s < s_players:
                f = False

            if data_ingame.count(1) < 2:

                if len(temp) > 0:

                    if temp[0] == prev_bet:
                        f1 = True

        bank_temp += sum(data_bets)
        data_pots = exchange(data_pots, data_bets, data_ingame, k)

        ############################# RIVER #########################

        btn_win_prob_turn.destroy()
        bank_temp += sum(data_bets)
        pilImage = Image.open(card_texture[data_cards[k * 2 + 4]])
        image5 = ImageTk.PhotoImage(pilImage)
        imagesprite5 = t5.create_image(42, 53, image=image5)

        for i in range(1, k + 1):
            data_ingame[i] = data_pots[0][i]

        data_reaver = []

        data_reaver.extend(data_turn)

        data_reaver.append(data_cards[k * 2 + 3])

        prev_bet = 0
        win_p.configure(text="hidden")
        bet = blind * 2

        f = False

        next_move = dealer_pos

        data_bets = [0] * (k + 1)

        s = 0

        s_players = data_ingame.count(1)

        while f == False and f1 == False:

            f = True

            next_move = next_move + 1

            if next_move == k + 1:
                next_move = 1

            if data_ingame[next_move] == 1:

                s += 1

                if next_move != 1:
                    time.sleep(2)
                    t = bot_reaver(data_cards[next_move * 2 - 2],
                                   data_cards[next_move * 2 - 1], data_reaver,
                                   bet, prev_bet, data_chips[next_move],
                                   data_bets[next_move])

                    if t == 0:
                        for j in range(1, k + 1):
                            if data_bets[j] > data_bets[next_move]:
                                data_ingame[next_move] = 0
                                a = hand_links[next_move * 2 - 3].create_image(
                                    18,
                                    26,
                                    image=image_links_f[next_move * 2 - 3])
                                b = hand_links[next_move * 2 - 4].create_image(
                                    18,
                                    26,
                                    image=image_links_f[next_move * 2 - 4])

                    else:

                        data_chips[next_move] -= (t - data_bets[next_move])

                        if t - prev_bet > 0:

                            if t - prev_bet >= bet:
                                bet = t - prev_bet

                            prev_bet = t

                        data_bets[next_move] = t

                        if data_chips[next_move] == 0:
                            data_ingame[next_move] = 2
                    bets_cfg(data_bets)
                    chips_cfg(data_chips)
                    bank.configure(text="BANK: " +
                                   str(sum(data_bets) + bank_temp))
                    p_ch.configure(text="Your chips: " + str(data_chips[1]))

                if next_move == 1:
                    if prev_bet != 0 and data_chips[1] > prev_bet * 2:
                        slider.configure(from_=prev_bet * 2, to=data_chips[1])
                    elif data_chips[1] > prev_bet * 2:
                        slider.configure(from_=blind * 2, to=data_chips[1])
                    else:
                        slider.configure(from_=data_chips[1], to=data_chips[1])

                    t = temporary
                    temporary = -1
                    while t == -1:
                        time.sleep(1)
                        t = temporary
                    if t == -4:
                        if data_chips[1] <= prev_bet:
                            t = -2
                        else:
                            t = slider.get()
                    if t == -2:
                        if prev_bet < data_chips[1]:
                            t = prev_bet - data_bets[1]
                        else:
                            t = data_chips[1]

                    if t == -3:
                        for j in range(1, k + 1):
                            if data_bets[j] > data_bets[next_move]:
                                data_ingame[next_move] = 0

                    else:

                        data_chips[next_move] -= t

                        if t + data_bets[next_move] - prev_bet > 0:

                            if t + data_bets[next_move] - prev_bet >= bet:
                                bet = t + data_bets[next_move] - prev_bet

                            prev_bet = t + data_bets[next_move]

                        data_bets[next_move] += t

                        if data_chips[next_move] == 0:
                            data_ingame[next_move] = 2
                    bets_cfg(data_bets)
                    chips_cfg(data_chips)
                    bank.configure(text="BANK: " +
                                   str(sum(data_bets) + bank_temp))
                    p_ch.configure(text="Your chips: " + str(data_chips[1]))

            temp = []

            for i in range(1, k + 1):

                if data_ingame[i] == 1:
                    temp.append(data_bets[i])

            temp.sort()

            if len(temp) > 1:

                if temp[0] != temp[-1] or temp[0] < prev_bet or temp[
                        -1] < prev_bet:
                    f = False

            if len(temp) == 1:

                if temp[0] < prev_bet:
                    f = False

            if s < s_players:
                f = False

            if data_ingame.count(1) < 2:

                if len(temp) > 0:

                    if temp[0] == prev_bet:
                        f1 = True

        bank_temp += sum(data_bets)
        data_pots = exchange(data_pots, data_bets, data_ingame, k)

        data_pots = after_exchange(data_pots, data_bets, data_ingame, k)

        hand_links = create_hand_links()

        for i in range(len(hand_links)):
            if data_pots[0][i // 2 + 2] != 0:
                imagesprite228 = hand_links[i].create_image(
                    20, 25, image=image_links[i])

        time.sleep(10)

        for i in range(len(hand_links)):
            hand_links[i] = card_texture_small[0]

        data_win = [0]

        for i in range(1, k + 1):
            data_win.append(winner(i, data_cards, k))

        k_pots = 0

        for i in data_pots[1:]:

            kk = 0

            if i.count(0) < k:

                m = 0

                for j in range(1, k + 1):

                    if i[j] == 1:

                        if data_win[j] > m:
                            m = data_win[j]

                for j in range(1, k + 1):

                    if i[j] == 1:

                        if data_win[j] == m:
                            kk += 1

                for j in range(1, k + 1):

                    if i[j] == 1:

                        if data_win[j] == m:
                            data_chips[j] += i[0] // kk

                            t = "Player " + str(j) + " wins " + str(
                                i[0] // kk) + " chips!!!"

        pilImage = Image.open(card_texture[0])
        image1 = ImageTk.PhotoImage(pilImage)
        imagesprite1 = t1.create_image(42, 53, image=image1)

        pilImage = Image.open(card_texture[0])
        image2 = ImageTk.PhotoImage(pilImage)
        imagesprite2 = t2.create_image(42, 53, image=image2)

        pilImage = Image.open(card_texture[0])
        image3 = ImageTk.PhotoImage(pilImage)
        imagesprite3 = t3.create_image(42, 53, image=image3)

        pilImage = Image.open(card_texture[0])
        image4 = ImageTk.PhotoImage(pilImage)
        imagesprite4 = t4.create_image(42, 53, image=image4)

        pilImage = Image.open(card_texture[0])
        image5 = ImageTk.PhotoImage(pilImage)
        imagesprite5 = t5.create_image(42, 53, image=image5)