예제 #1
0
    def setUp(self):
        # get a deck with no cards to test scoring
        self.score_deck = Deck()
        self.score_deck.cards = []

        # get a regular deck
        self.deck = Deck()

        # get a Hand
        self.hand = Hand(self.deck)
예제 #2
0
 def deal_start(self):
     """
     deals the cards for the start of the game
     @return: tuple( hand:3Card deck table: 4 card Deck)
     """
     hand = Deck([])
     table = Deck([])
     for i in range(0, 3):
         hand.cards.append(self.draw_pile.draw())
     for i in range(0, 4):
         table.cards.append(self.draw_pile.draw())
     return (hand, table)
예제 #3
0
    def play(self):
        poker_players = []

        num_players = input("How many players? ")
        for i in range(int(num_players)):
            player_name = input("Name of poker player {}? ".format(i + 1))
            poker_player = PokerPlayer(player_name)
            poker_players.append(poker_player)

        print("Dealing cards")
        deck = Deck()
        deck.shuffle()
        for i in range(7):
            for poker_player in poker_players:
                poker_player.add_card(deck.deal())
                print(poker_player)

            if (i < 6):
                dealmore = input("Deal more card(y or n)? ")
                if (dealmore.lower() == 'n'):
                    return

        for poker_player in poker_players:
            poker_player.review_all_fiver_hands()
            poker_score = poker_player.get_top_poker_score()
            print(poker_player.name.center(30, '-'))
            print(poker_score)
 def __init__(self, num_players=2):
     self.deck = Deck()
     self.hands = []
     self.community_cards = []
     self.num_players = num_players
     self.pot = 0
     self.bet_amt = 0
예제 #5
0
    def __init__(self):
        deck = Deck()

        deck.shuffle()

        deck = deck.get_cards()

        piles: List[List[Card]] = []

        for i in range(Game.PILES):
            piles.append([])
            pile_len = i + 1

            for j in range(pile_len):
                card = deck.pop()

                if not j == pile_len - 1:
                    card.visible = False

                piles[i].append(card)

        hand: List[Card] = []

        self.varInput = VarInput()

        self.deck = deck
        self.hand = hand
        self.piles = piles
        self.finished = [0] * len(Card.SUITS)
예제 #6
0
    def __init__(self):
        self._deck = Deck()
        self._deck.shuffle()

        # Pass the player and dealer two cards each
        self._player = Player([self._deck.deal(), self._deck.deal()])
        self._dealer = Dealer([self._deck.deal(), self._deck.deal()])
예제 #7
0
    def __init__(self, game_type: str) -> None:
        self.players: List[Player] = []
        self.deck: Deck = Deck()
        self.playthrough: int = 0
        self.discards: Deck = Deck()
        self.current_player_index: int = 0
        self.status: str = 'Awaiting'  # Awaiting, Running, Completed
        self.id: str = str(uuid.uuid4())[:6]
        self.stage_index: int = 0
        self.market: List[Card] = []
        self.trades: List[Trade] = []
        self.winner = None
        self.game_type: str = game_type
        self.last_updates: List[Dict] = []

        self.deck.build_deck()
        self.deck.shuffle()
예제 #8
0
 def __init__(self, verbose=False):
     self.verbose = verbose
     if verbose:
         deck = Deck()
         deck.cards.sort(key=self.undesirability)
         self.say('Card undesirability: ')
         for card in deck.cards:
             self.say('{}: {}', card, self.undesirability(card))
예제 #9
0
    def shuffle_and_deal(self):
        self.deck = Deck()
        self.deck.shuffle()

        for seat in self.seats:
            seat.set_card_1(self.deck.deal())

        for seat in self.seats:
            seat.set_card_2(self.deck.deal())
예제 #10
0
 def draw(
     player: 'Player',
     deck: Deck,
     num: int=1
 ) -> typing.Tuple['Player', Deck]:
     if num not in range(1, len(deck) + 1):
         return player, deck
     return (
         Player(player.name(), hand=player.hand() + Cards(deck[:num])),
         Deck(deck[num:]))
예제 #11
0
    def get_remaining_cards(self, hand_cards):
        deck = Deck()

        remaining_cards = []
        for c in deck.cards:
            for pc in hand_cards + self.seen_cards:
                if c == pc:
                    break
            else:
                remaining_cards.append(c)

        return remaining_cards
예제 #12
0
   def __init__(self):
      self._players_nb = None
      self._blend = None
      self._max_game = 100000
      self._deck = Deck(6)

      strat_simple = Simple()
      strat_base = Base()

      self._dealer = Player(10000, 1, strat_simple, 'dealer')

      self._players = []
      self._players.append(Player(0, 0, strat_base, 'guest'))
예제 #13
0
    def __init__(self, players, verbose=False):
        """
        players is a list of four players
        """
        self.verbose = verbose
        if len(players) != 4:
            raise ValueError('There must be four players.')
        self.players = players

        # Invariant: the union of these lists makes up exactly one deck of cards
        deck = Deck()
        self._player_hands = tuple(deck.deal())
        self._cards_taken = ([], [], [], [])
예제 #14
0
    def __init__(self):
        self.state = None
        self.state_history = []
        self.width = 1300
        self.height = 700
        self.window = None
        self.clock = None  # used for fps
        self.game_over = False  # true when game is over
        self.title_image = None  # title image
        self.empty_table = None  # empty table image

        self.cards = Deck()
        self.cards.shuffle()  # O(n)
        self.table = Table()
        self.player = Player('p')
        self.bot = Bot()
예제 #15
0
    def __init__(self,
                 gameid,
                 draw_pile=None,
                 players=[],
                 game_board=[],
                 prev_turn=[]):
        if not draw_pile:
            self.draw_pile = Deck()
            self.draw_pile.shuffle()
        else:
            self.draw_pile = draw_pile

        self.players = players
        self.game_board = game_board
        self.id = gameid
        self.prev_turn = prev_turn
예제 #16
0
    def play_card(self, game, other_info={}, simulation_time_limit=1):
        for player_idx, suits in other_info.get("lacking_info", {}).items():
            for suit in suits:
                game.lacking_cards[player_idx][suit] = True

            self.say("Player-{} may lack of {} suit({}, {})", player_idx, suit,
                     game.lacking_cards[player_idx], other_info)

        self.say("Player-{}, the information of lacking_card is {}", \
            self.position, [(player_idx, k) for player_idx, info in enumerate(game.lacking_cards) for k, v in info.items() if v])

        hand_cards = [[] if player_idx != self.position else
                      game._player_hands[player_idx]
                      for player_idx in range(4)]

        remaining_cards = Deck().cards
        for card in self.seen_cards + hand_cards[self.position]:
            remaining_cards.remove(card)

        taken_cards = []
        for player_idx, cards in enumerate(game._cards_taken):
            taken_cards.append(card_to_bitmask(cards))

        init_trick = [[None, game.trick]]

        void_info = {}
        for player_idx, info in enumerate(game.lacking_cards):
            if player_idx != self.position:
                void_info[player_idx] = info

        must_have = self.transfer_cards

        selection_func = expert_choose
        self.say("proactive_mode: {}, selection_func={}, num_of_cpu={}",
                 self.proactive_mode, selection_func, self.num_of_cpu)

        played_card = run_one_step(
            game.trick_nr + 1, self.position, self.num_hand_cards,
            copy.deepcopy(init_trick), hand_cards, game.is_heart_broken,
            [2 if player.expose else 1
             for player in game.players], remaining_cards, taken_cards, None,
            selection_func, must_have, void_info)

        self.say("pick {} card", played_card)

        return played_card
예제 #17
0
    def play():
        print('********************')
        print('* Blackjack')

        dealer = Player(name='Dealer')
        guest = Player(name='Guest')
        deck = Deck().shuffle().shuffle()

        for _ in range(2):
            dealer, deck = Player.draw(dealer, deck)
            guest, deck = Player.draw(guest, deck)

        print('')
        print(f"{dealer.name()}'s 1st card: " + str(dealer.hand()[0]))

        print('')
        print(f"* {guest.name()}'s turn *")
        Blackjack._show_hand(guest)
        while not BlackjackRule.busts(guest):
            decision = GuestDecision.decide()
            if decision is GuestDecision.STAND:
                break
            if decision is GuestDecision.HIT:
                guest, deck = Player.draw(guest, deck)
                Blackjack._show_hand(guest)
        else:
            print('Bust!')
            Blackjack._result(dealer=dealer, guest=guest)
            return

        print('')
        print(f"* {dealer.name()}'s turn *")
        Blackjack._show_hand(dealer)
        while not BlackjackRule.busts(dealer):
            if BlackjackRule.point(dealer) >= 17:
                break
            else:
                dealer, deck = Player.draw(dealer, deck)
                Blackjack._show_hand(dealer)
        else:
            print('Bust!')
            Blackjack._result(dealer=dealer, guest=guest)
            return

        Blackjack._result(dealer=dealer, guest=guest)
예제 #18
0
    def __init__(self, verbose=False):
        self.seen_cards = []
        self.freeze_cards = []
        self.transfer_cards = {}

        self.name = None
        self.position = None
        self.expose = False
        self.proactive_mode = set()

        self.void_info = {
            0: {
                Suit.spades: False,
                Suit.hearts: False,
                Suit.diamonds: False,
                Suit.clubs: False
            },
            1: {
                Suit.spades: False,
                Suit.hearts: False,
                Suit.diamonds: False,
                Suit.clubs: False
            },
            2: {
                Suit.spades: False,
                Suit.hearts: False,
                Suit.diamonds: False,
                Suit.clubs: False
            },
            3: {
                Suit.spades: False,
                Suit.hearts: False,
                Suit.diamonds: False,
                Suit.clubs: False
            }
        }
        self.remaining_cards = set(Deck().cards)
        self.num_hand_cards = {0: 13, 1: 13, 2: 13, 3: 13}

        self.verbose = verbose
예제 #19
0
    def reset(self):
        self.trick_nr = 0

        self.current_player_idx = 0

        self.trick = []
        self.trick_cards = []
        for _ in range(13):
            self.trick_cards.append([None, None, None, None])

        self.player_scores = [0, 0, 0, 0]
        self.player_action_pos = [[0] * 13, [0] * 13, [0] * 13, [0] * 13]

        self.expose_info = [1, 1, 1, 1]
        self.take_pig_card = False
        self.is_heart_broken = False
        self.is_shootmoon = False

        for i in range(4):
            self.players[i].set_position(i)
            self.players[i].reset()

        deck = Deck()

        self._player_hands = list(deck.deal())
        self._cards_taken = ([], [], [], [])
        self._b_cards_taken = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0],
                               [0, 0, 0, 0]]
        self._temp_score = [0, 0, 0, 0]

        self.lacking_cards = []
        for _ in range(4):
            self.lacking_cards.append({
                Suit.spades: False,
                Suit.hearts: False,
                Suit.diamonds: False,
                Suit.clubs: False
            })
예제 #20
0
파일: ttk.py 프로젝트: smsamMG/test_project
    def __init__(self):
        """Sets up the window and widgets."""
        Frame.__init__(self)
        self.master.title("Card Demo")
        self.grid()
        self._deck = Deck()
        self._backImage = PhotoImage(file=Card.BACK_NAME)
        self._cardImage = None
        self._imageLabel = Label(self, image=self._backImage)
        self._imageLabel.grid(row=0, column=0, rowspan=3)
        self._textLabel = Label(self, text="")
        self._textLabel.grid(row=3, column=0)

        # DealButton
        self._dealButton = Button(self, text="Deal", command=self._deal)
        self._dealButton.grid(row=0, column=1)
        # ShuffleButton
        self._shuffleButton = Button(self,
                                     text="Shuffle",
                                     command=self._shuffle)
        self._shuffleButton.grid(row=1, column=1)
        # newButton
        self._newButton = Button(self, text="New Deck", command=self._new)
        self._newButton.grid(row=2, column=1)
예제 #21
0
 def __init__(self):
     self.deck = Deck(double=True)
     self.player_list = {}
예제 #22
0
 def setUp(self):
     self.deck = Deck()
     self.deck_multiple = Deck(10)
예제 #23
0
	def __init__(self, document, canv):
		'''Store the main window, create the Board and Deck models;
		create all the buttons and labels to allow the user to manipulate the game.
		'''

		self._doc = document
		self._canv = canv	# fabric Canvas object

		self._canv.on("mouse:up", self.onCardClick)

		self.loadCardMoveSound()
		self.loadCardInPlaceSound()
		self.loadEndOfRoundSound()
		self.loadFanfareSound()
		self._playSounds = True

		self._board = Board()
		self._deck = Deck()
		self._deck.addAllCards()
		self._copyOfDeck = self._deck.makeCopy()

		# We'll fill this in when we remove the aces from the board.
		self._removedAces = []

		# keeps track of cards that can be moved: each item is a tuple:
		# (card, row, col)
		self._moveableCards = []

		# A mapping from card object to CardImg object.  We do it this way
		# so that the card object (in the model) remains agnostic of the view
		# being used on it.
		self._card2ImgDict = {}

		self._score = 0
		# a list of templates of high scores we can update when high scores
		# change, so the screen changes immediately
		self._score_val = []
		self._storage = local_storage.storage
		self.loadSettingsFromStorage()

		# count of cards correctly placed, per round. 1st round is in
		# index 0, and initialized to 0 cards placed.
		self._cardsPlacedPerRound = [0]

		self._roundNum = 1

		# 2 rows of info about the game.
		self._game_info_elem = html.DIV(Class="game-info")
		self._doc <= self._game_info_elem
		self._game_info2_elem = html.DIV(Class="game-info")
		self._doc <= self._game_info2_elem

		self._next_round_btn = html.BUTTON(
			"Next Round", Class="button", disabled=True)
		self._next_round_btn.bind('click', self.nextRound)
		self._game_info_elem <= self._next_round_btn

		self._round_info_elem = \
			html.SPAN("Round: {roundNum}",
					  Class="info-text", id="round_num")
		self._game_info_elem <= self._round_info_elem
		self._round_num_val = template.Template(self._round_info_elem)
		self.updateRoundNum()

		self._cardsInPlace = self._board.countCardsInPlace()
		self._cards_in_place_elem = html.SPAN(
			"Cards in place: {cardsInPlace}", Class="info-text")
		self._game_info_elem <= self._cards_in_place_elem
		self._cardsInPlace_val = template.Template(self._cards_in_place_elem)
		self.updateCardsInPlace()

		self._score_info_elem = html.SPAN(
			"Score: {score}", Class="info-text")
		self._game_info_elem <= self._score_info_elem
		self._scoreInfo_val = template.Template(self._score_info_elem)

		self._pts_per_card_info_elem = html.SPAN(
			"Pts per card: {ptsPerCard}", Class="info-text")
		self._game_info_elem <= self._pts_per_card_info_elem
		self._ptsPerCardInfo_val = template.Template(
			self._pts_per_card_info_elem)
		self.updateScore()

		self._new_game_btn = html.BUTTON(
			"New Game", Class="button", disabled=True)
		self._new_game_btn.bind('click', self.newGameClickHandler)
		self._game_info_elem <= self._new_game_btn

		self._repeat_game_btn = html.BUTTON(
			"Repeat Game", Class="button")
		self._repeat_game_btn.bind('click', self.repeatGameClickHandler)
		self._game_info_elem <= self._repeat_game_btn

		self._messageDiv = self.createMessageDiv()

		switch_button = html.BUTTON ('Switch Deck', Class = 'button')
		switch_button.bind ('click', switch_card_sources)
		self._game_info_elem <= switch_button

		self._status_elem = html.SPAN("{status}")
		self._game_info2_elem <= self._status_elem
		self._status_val = template.Template(self._status_elem)
		self.setStatus("Cards placed this round: 0")

		self._playSoundsSpan = html.SPAN()
		self._game_info2_elem <= self._playSoundsSpan
		self._playSoundsLabel = html.LABEL("Play sounds: ")
		self._playSoundsSpan <= self._playSoundsLabel
		self._playSoundsCheckBox = html.INPUT(
			type="checkbox", checked=self._playSounds)
		self._playSoundsCheckBox.bind('click', self.togglePlaySounds)
		self._playSoundsSpan <= self._playSoundsCheckBox

		# A mapping from Card object to CardImg object.  This is needed so
		# that we map a card in the board layout to the CardImg, which should
		# then be placed at a certain location.  (We don't keep a reference to
		# the CardImg in Card because it just shouldn't know how it is displayed.)
		cards = self._deck.getCards()
		for card in cards:
			cardimg = CardImg(card, self._canv)
			self._card2ImgDict[id(card)] = cardimg

		self._boardGui = BoardGui(self._board, self._canv, self._card2ImgDict)

		self.loadHighScores()

		self.initNewGame()
예제 #24
0
        self.hand.sort(key=partial(card_func_key, valueby='rank'))

    def card_count(self):
        return len(self.hand)

    def has_empty_hand(self):
        return not self.hand


if __name__ == '__main__':
    from card import Deck
    """Reference: Implementing an Unordered List: Linked Lists
    http://interactivepython.org/courselib/static/pythonds/BasicDS/ImplementinganUnorderedListLinkedLists.html
    """

    deck = Deck()
    deck.shuffle()

    john = Player('John')
    jane = Player('Jane')
    jess = Player('Jess')
    june = Player('June')
    jack = Player('Jack')

    player_list = ActivePlayer(john, jane, jess, june)
    # player_list.in_control(june)
    # player_list.remove(june)
    # print(player_list.next_turn())
    # print(player_list.next_turn())
    # print(player_list.next_turn())
    # print(player_list.next_turn())
예제 #25
0
 def test_initializer(self):
     deck = Deck()
     self.assertEqual(52, len(deck.get_cards()))
예제 #26
0
    def setUp(self):
        self.full_deck = Deck()
        self.empty_deck = Deck()

        while len(self.empty_deck.get_cards()) > 0:
            self.empty_deck.remove_random_card()
예제 #27
0
 def __init__(self, name='dealer', cash_balance=100, number_of_decks=1):
     self.name = name
     self.cash_balance = cash_balance
     self.number_of_decks = number_of_decks
     self.deck = Deck(self.number_of_decks)
     self.hand = Hand()
예제 #28
0
def deck():
    return Deck(PKCard)
예제 #29
0
    def test_have_all_cards(self):
        full_deck = Deck()

        self.assertTrue(full_deck.have_all_cards())
        full_deck.remove_random_card()
        self.assertFalse(full_deck.have_all_cards())
예제 #30
0
파일: ttk.py 프로젝트: smsamMG/test_project
 def _new(self):
     """Returns the program to its initial state."""
     self._deck = Deck()
     self._cardImage = None
     self._imageLabel["image"] = self._backImage
     self._textLabel["text"] = ""