Ejemplo n.º 1
0
 def test_get_face_up_card_AND_get_face_down_card(self):
     d = Dealer()
     empty_cc = CardCollection()
     dest_cc = CardCollection()
     d.add_card_to_hand(3)
     self.assertEqual(d.get_face_up_card(), 3)
     d.add_card_to_hand(4)
     self.assertEqual(d.get_face_down_card(), 4)
Ejemplo n.º 2
0
 def __init__(self, num_player=1, player_tokens=1000,
              min_bet=10, max_bet=500,
              ndecks=6, shuffle_lim=10,
              sleep_time=0.7):
     # self.players = [Player.Player(ntokens=player_tokens) for _ in range(num_player)]
     self.player = Player(ntokens=player_tokens)
     self.dealer = Dealer()
     self.draw_count = 0  # keeps track of number of draws - first two counts as one
     self.min_bet = min_bet
     self.max_bet = max_bet
     self.current_bet = 0
     self.sleep_time = sleep_time
     self.deck = Deck(ndecks, shuffle_lim)
Ejemplo n.º 3
0
 def test_add_card_to_hand_AND_move_all_card(self):
     d = Dealer()
     empty_cc = CardCollection()
     dest_cc = CardCollection()
     d.add_card_to_hand(3)
     d.add_card_to_hand(4)
     d.add_card_to_hand(10)
     self.assertEqual(empty_cc, dest_cc)
     d.move_all_cards(dest_cc)
     self.assertEqual(empty_cc, d.hand)
     expected_dest = CardCollection()
     expected_dest[3] = 1
     expected_dest[4] = 1
     expected_dest[10] = 1
     self.assertEqual(dest_cc, expected_dest)
 def __init__(self):
     self.deck_of_cards = DeckOfCards()
     self.dealer = Dealer(self)
     self.player = HumanPlayer(self, 10000) #The human player starts with 10000 coins
 def __init__(self):
     self.deck_of_cards = DeckOfCards()
     self.dealer = Dealer(self)
     self.player = Player(self, 10) #The human player starts with 10 coins
     self.start_game()
Ejemplo n.º 6
0
 def __init__(self, *players):
     self.dealer = Dealer()
     self.shoe = Shoe()
     if not players:
         raise ValueError("No players entered.")
     self.players = [Player(player) for player in players]
Ejemplo n.º 7
0
def game(player):
    """
    Данная функция управляет логикой игры, благодаря ней можно будет
    запускать несколько игр в разных потоках
    """
    in_out.rules(player)
    card_deck = CardDeck()
    dealer = Dealer(player.resource)
    while True:
        try:
            # Вначале игры все карты возвращаются в колоду, даже
            # в начале игры, когда карты не розданы это не повредит
            # это сделано чтобы излишне не усложнять код
            card_deck.take_cards(player.return_cards())
            card_deck.take_cards(dealer.return_cards())

            card_deck.shuffle()

            # Переменные указывающие на наличие комбинации Блекджек у игрока
            # и диллера
            player_blackjack = False
            dealer_blackjack = False

            # Определить, есть ли деньги у игрока, если нет, то игра завершена
            # Также уточняется хочет ли пользователь играть
            if player.money < 1 or not in_out.start_game(player):
                in_out.finish(player)

            # Предложить сделать ставку, указав, что минимальная ставка
            # 1 доллар
            player.make_bet()
            # Сдается две карты игроку
            for _ in range(2):
                player.take_card(card_deck.give_card())
            # Сдается одна карта дилеру
            dealer.take_card(card_deck.give_card())
            # Показываются карты дилера
            in_out.player_info(dealer, 'Диллера')
            # Показываются карты игрока
            in_out.player_info(player, 'Ваши')
            # Если у игрока блекджек (на руках две карты, количество очков -
            # 21), то задается соответствующая переменная, иначе берется карта
            if player.points != 21:
                player.make_move(card_deck)
            else:
                player_blackjack = True
            # Проверка наличия блекджека у диллера
            dealer.take_card(card_deck.give_card())
            if dealer.points != 21:
                dealer.make_move(card_deck)
            else:
                dealer_blackjack = True

            # Если у пользователя на руках блекджек и у диллера блекджека нет,
            # то пользователь выигрывает 3 к 1
            if player_blackjack and not dealer_blackjack:
                player.money += player.bet * 2.5
                in_out.print_message(
                    player, 'Вы выиграли {:} $\
                                             \n'.format(
                        round(player.bet * 1.5, 2)))
                continue

            if player.points > 21:
                in_out.print_message(player, 'Вы проиграли, сожалеем.\n')
                continue

            in_out.player_info(dealer, 'Диллера')

            if player.points < dealer.points and dealer.points <= 21:
                in_out.print_message(player, 'Вы проиграли, сожалеем.\n')
            elif player.points > dealer.points or dealer.points > 21:
                player.money += player.bet * 2.0
                in_out.print_message(
                    player, 'Вы выиграли {:} $\
                                      \n'.format(round(player.bet, 2)))
            else:
                player.money += player.bet
                in_out.print_message(player, 'Вы сыграли в ничью\n')
        except KeyboardInterrupt:
            in_out.finish(player)
Ejemplo n.º 8
0
                    if not hand.burn_flag and not self.dealer.hand.burn_flag:  # hand isn't burned, dealer isn't burned

                        if hand.black_jack and not self.dealer.hand.black_jack:  # winning scenarios
                            hand.win_black(player)
                            continue
                        if hand.value > self.dealer.hand.value:
                            hand.win(player)
                            continue

                        if self.dealer.hand.value == hand.value:  # draw with dealer
                            hand.tie(player)
                            hand.win(player)
                            continue
        print("End of Game!")


deck = Deck()
active_players = []
g1 = Gambler("Ben", deck)
g2 = Gambler("Gil", deck)
dealer = Dealer()
win = GraphicGame(deck, dealer, [g1, g2])
win.geometry("1200x700")
win.title('Black Jack')
main = MainGame(win, [g1, g2])
thread = threading.Thread(target=main.start_game)
# make loop terminate when the user exits the window
thread.daemon = True
thread.start()
win.mainloop()
Ejemplo n.º 9
0
    def __init__(self, num_shuffles=1):
        self.num_shuffles = num_shuffles

        self.dealer = Dealer(name='Dealer')
        self.player = Player(name='1')
        self.game_over = False
Ejemplo n.º 10
0
 def setup(self, player, deck):
     self.player = [Player(),
                    Dealer()]
     self.deck = deck