Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random as rn
- from IPython.display import Image
- from IPython.display import display
- import matplotlib.pyplot as plt
- class Card():
- def __init__(self, suit, rank):
- self._suit = suit
- self._rank = rank
- self.names_suit = {1:'Spades', 2:'Clubs', 3:'Hearts', 4:'Diamonds'}
- self.names_rank = {1:'Ace', 2:'Two', 3:'Three', 4:'Four', 5:'Five', 6:'Six', 7:'Seven',\
- 8:'Eight', 9:'Nine', 10:'Ten', 11:'Jack', 12:'Queen', 13:'King'}
- self.sym_suit = {1:'♠', 2:'♣', 3:'♥', 4:'♦'}
- self.fig_rank = {1:'A', 11:'J', 12:'Q', 13:'K'}
- self._name = self.names_rank[self._rank]+' of '+self.names_suit[self._suit]
- self._hidden = True
- self._front = Image("../images/playing_cards/card_front/"+self._name+".png", width=50)
- self._back = Image("../images/playing_cards/card_back/Blue Card Back.jpg", width=55)
- def show_name(self):
- if self._rank in (1, 11, 12, 13):
- print('|'+self.fig_rank[self._rank]+self.sym_suit[self._suit]+'| '+self._name+\
- ' |'+self.sym_suit[self._suit]+self.fig_rank[self._rank]+'|')
- else:
- print('|'+str(self._rank)+self.sym_suit[self._suit]+'| '+self._name+\
- ' |'+self.sym_suit[self._suit]+str(self._rank)+'|')
- def show_front(self):
- return(self._front)
- def show_back(self):
- return(self._back)
- class Deck(Card):
- def __init__(self):
- self._cardsIN = []
- self._cardsOUT = []
- for suit in range (1, 5):
- for rank in range (1, 14):
- self._cardsIN.append(Card(suit, rank))
- def draw_card(self):
- if len(self._cardsIN) != 0:
- choice = int(rn.random()*len(self._cardsIN))
- card = self._cardsIN[choice]
- self._cardsOUT.append(card)
- del self._cardsIN[choice]
- return card
- else:
- return 0
- def draw_hand(self):
- if len(self._cardsIN) >= 5:
- return [self.draw_card(), self.draw_card(), self.draw_card(), self.draw_card(), self.draw_card()]
- else:
- return 0
- def get_cardsIN(self):
- for card in self._cardsIN:
- card.show_name()
- def get_cardsOUT(self):
- for card in self._cardsOUT:
- card.show_name()
- class Player(Deck):
- def __init__(self, Deck):
- self._deck = Deck
- self._hand = []
- def draw_card(self, num=1):
- for draws in range(num):
- card = self._deck.draw_card()
- self._hand.append(card)
- def draw_hand(self):
- cards = self._deck.draw_hand()
- self._hand = cards
- def return_card(self, cardname):
- inhand = False
- for card in self._hand:
- if card._name.upper() == cardname.upper() and card._hidden == False: #not case sensitive
- self._hand.remove(card)
- self._deck._cardsOUT.remove(card)
- self._deck._cardsIN.append(card)
- inhand = True
- break
- if inhand == False:
- print("Can't see the ["+cardname+"] in the player's hand.\n")
- return 0
- def return_hand(self):
- for card in self._hand:
- self._deck._cardsOUT.remove(card)
- self._deck._cardsIN.append(card)
- self._hand = []
- def flip_card(self, *cardnum):
- for card in cardnum:
- self._hand[card-1]._hidden = not self._hand[card-1]._hidden
- def flip_hand(self):
- for card in self._hand:
- card._hidden = not card._hidden
- def hide_hand(self):
- for card in self._hand:
- card._hidden = True
- def unhide_hand(self):
- for card in self._hand:
- card._hidden = False
- def display_hand(self, img=True, name=True):
- for card in self._hand:
- if img==True and name==True:
- if card._hidden == True:
- print("[?]")
- display(card.show_back())
- if card._hidden == False:
- card.show_name()
- display(card.show_front())
- if img==True and name==False:
- if card._hidden == True:
- display(card.show_back())
- if card._hidden == False:
- display(card.show_front())
- if img==False and name==True:
- if card._hidden == True:
- print("[?]")
- if card._hidden == False:
- card.show_name()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement