Advertisement
Guest User

Untitled

a guest
Apr 28th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.72 KB | None | 0 0
  1. import random as rn
  2. from IPython.display import Image
  3. from IPython.display import display
  4. import matplotlib.pyplot as plt
  5.  
  6. class Card():
  7.    
  8.     def __init__(self, suit, rank):
  9.         self._suit = suit
  10.         self._rank = rank
  11.         self.names_suit = {1:'Spades', 2:'Clubs', 3:'Hearts', 4:'Diamonds'}
  12.         self.names_rank = {1:'Ace', 2:'Two', 3:'Three', 4:'Four', 5:'Five', 6:'Six', 7:'Seven',\
  13.                            8:'Eight', 9:'Nine', 10:'Ten', 11:'Jack', 12:'Queen', 13:'King'}
  14.         self.sym_suit = {1:'♠', 2:'♣', 3:'♥', 4:'♦'}
  15.         self.fig_rank = {1:'A', 11:'J', 12:'Q', 13:'K'}
  16.         self._name = self.names_rank[self._rank]+' of '+self.names_suit[self._suit]
  17.         self._hidden = True
  18.         self._front = Image("../images/playing_cards/card_front/"+self._name+".png", width=50)
  19.         self._back = Image("../images/playing_cards/card_back/Blue Card Back.jpg", width=55)
  20.    
  21.     def show_name(self):
  22.         if self._rank in (1, 11, 12, 13):
  23.             print('|'+self.fig_rank[self._rank]+self.sym_suit[self._suit]+'| '+self._name+\
  24.                   ' |'+self.sym_suit[self._suit]+self.fig_rank[self._rank]+'|')
  25.         else:
  26.             print('|'+str(self._rank)+self.sym_suit[self._suit]+'| '+self._name+\
  27.                   ' |'+self.sym_suit[self._suit]+str(self._rank)+'|')
  28.  
  29.     def show_front(self):
  30.         return(self._front)
  31.    
  32.     def show_back(self):
  33.         return(self._back)
  34.  
  35. class Deck(Card):
  36.    
  37.     def __init__(self):
  38.         self._cardsIN = []
  39.         self._cardsOUT = []
  40.         for suit in range (1, 5):
  41.             for rank in range (1, 14):
  42.                 self._cardsIN.append(Card(suit, rank))
  43.    
  44.     def draw_card(self):
  45.         if len(self._cardsIN) != 0:
  46.             choice = int(rn.random()*len(self._cardsIN))
  47.             card = self._cardsIN[choice]
  48.             self._cardsOUT.append(card)
  49.             del self._cardsIN[choice]
  50.             return card
  51.         else:
  52.             return 0
  53.        
  54.     def draw_hand(self):
  55.         if len(self._cardsIN) >= 5:
  56.             return [self.draw_card(), self.draw_card(), self.draw_card(), self.draw_card(), self.draw_card()]
  57.         else:
  58.             return 0  
  59.        
  60.     def get_cardsIN(self):
  61.         for card in self._cardsIN:
  62.             card.show_name()
  63.        
  64.     def get_cardsOUT(self):
  65.         for card in self._cardsOUT:
  66.             card.show_name()
  67.  
  68. class Player(Deck):
  69.    
  70.     def __init__(self, Deck):
  71.         self._deck = Deck
  72.         self._hand = []
  73.    
  74.     def draw_card(self, num=1):
  75.         for draws in range(num):
  76.             card  = self._deck.draw_card()
  77.             self._hand.append(card)
  78.        
  79.     def draw_hand(self):
  80.         cards = self._deck.draw_hand()
  81.         self._hand = cards
  82.        
  83.     def return_card(self, cardname):
  84.         inhand = False
  85.         for card in self._hand:
  86.             if card._name.upper() == cardname.upper() and card._hidden == False: #not case sensitive
  87.                 self._hand.remove(card)
  88.                 self._deck._cardsOUT.remove(card)
  89.                 self._deck._cardsIN.append(card)
  90.                 inhand = True
  91.                 break    
  92.        
  93.         if inhand == False:
  94.             print("Can't see the ["+cardname+"] in the player's hand.\n")
  95.             return 0
  96.        
  97.     def return_hand(self):
  98.         for card in self._hand:
  99.             self._deck._cardsOUT.remove(card)
  100.             self._deck._cardsIN.append(card)
  101.         self._hand = []
  102.        
  103.     def flip_card(self, *cardnum):
  104.         for card in cardnum:
  105.             self._hand[card-1]._hidden = not self._hand[card-1]._hidden
  106.            
  107.     def flip_hand(self):
  108.         for card in self._hand:
  109.             card._hidden = not card._hidden
  110.    
  111.     def hide_hand(self):
  112.         for card in self._hand:
  113.             card._hidden = True
  114.            
  115.     def unhide_hand(self):
  116.         for card in self._hand:
  117.             card._hidden = False
  118.    
  119.     def display_hand(self, img=True, name=True):
  120.         for card in self._hand:
  121.             if img==True and name==True:
  122.                 if card._hidden == True:
  123.                     print("[?]")
  124.                     display(card.show_back())
  125.                 if card._hidden == False:
  126.                     card.show_name()
  127.                     display(card.show_front())
  128.             if img==True and name==False:
  129.                 if card._hidden == True:
  130.                     display(card.show_back())
  131.                 if card._hidden == False:
  132.                     display(card.show_front())
  133.             if img==False and name==True:
  134.                 if card._hidden == True:
  135.                     print("[?]")
  136.                 if card._hidden == False:
  137.                     card.show_name()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement