Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.91 KB | None | 0 0
  1. from Card import Card
  2. from random import shuffle
  3. from CQ import Queue
  4.  
  5.  
  6. class Table:
  7.     def __init__(self):
  8.         #TODO
  9.         self.shoe = 0
  10.         self.player_card = 0
  11.         self.dealer_card = 0
  12.         self.discard = Queue()
  13.         self.bet = 0
  14.  
  15.     def resolve_round(self, srrank, orrank):
  16.         print("Player shows "+srrank+", Dealer shows "+orrank)
  17.         if srrank > orrank:
  18.             print("Player wins!\n")
  19.             return 1
  20.         elif srrank < orrank:
  21.             print("Dealer wins!\n")
  22.             return -1
  23.         elif srrank == orrank:
  24.             print("War!")
  25.             return 0
  26.    
  27.    
  28.     def set_bet(self, bet):
  29.         self.bet = bet
  30.    
  31.     def get_bet(self):
  32.         return self.bet
  33.    
  34.    
  35.     def clear(self):
  36.         self.discard.enqueue(self.player_card)
  37.         self.discard.enqueue(self.dealer_card)
  38.         self.dealer_card = 0
  39.         self.player_card = 0
  40.    
  41.    
  42.     def create_deck(self):
  43.         suits = ["S","H","D","C"]
  44.         ranks = ["2","3","4","5","6","7","8","9","T","J","Q","K","A"]
  45.         temp = []
  46.         for i in suits:
  47.             for j in ranks:
  48.                 temp.append(j+i)
  49.         return temp
  50.        
  51.  
  52.     def validate_deck(self, deck):
  53.         #validation for the cards and their format
  54.         suits = ["S","H","D","C"]
  55.         ranks = ["2","3","4","5","6","7","8","9","T","J","Q","K","A"]
  56.         if len(deck) != 52:
  57.             raise Exception("Total number of cards have to be 52")
  58.         duplicate = []
  59.         for card in deck:
  60.             if card[0] not in ranks:
  61.                 raise Exception("Invalid rank")
  62.             if card[1] not in suits:
  63.                 raise Exception("Invalid suit")
  64.             if len(card) != 2:
  65.                 raise Exception("Card Format Error")
  66.             if card not in duplicate:
  67.                 duplicate.append(card)
  68.             else:
  69.                 raise Exception("Card duplicated")
  70.         return True
  71.  
  72.  
  73.  
  74.     def make_shoe(self):
  75.         decks = []
  76.         for i in range(6):
  77.             decks.append(self.create_deck())
  78.         for j in decks:
  79.             vald = self.validate_deck(j)
  80.             if not vald :
  81.                 raise Exception("Not valid")
  82.         for k in decks:
  83.             shuffle(k)
  84.         q1 = Queue()
  85.         q2 = Queue()
  86.         q3 = Queue()
  87.         for deck in decks:
  88.             for card in deck:
  89.                 q1.enqueue(card)
  90.             if q1.size() == 156:
  91.                 break
  92.         for deck in decks[3:6]:
  93.             for card in deck:
  94.                 q2.enqueue(card)
  95.             if q2.size() == 156:
  96.                 break
  97.         for j in range(6):
  98.             temp = []
  99.             for i in range(26):
  100.                 temp.append(q1.dequeue())
  101.                 temp.append(q2.dequeue())
  102.             shuffle(temp)
  103.  
  104.             for i in temp:
  105.                 q3.enqueue(i)
  106.         return q3
  107.    
  108.     def set_shoe(self, shoe):
  109.         self.shoe = shoe
  110.  
  111.     def deal(self):
  112.         self.player_card = self.shoe.dequeue()
  113.         self.dealer_card = self.shoe.dequeue()
  114.  
  115.     def reset_shoe(self):
  116.         if self.shoe.size() < 52:
  117.             for i in range(self.shoe.size()):
  118.                 self.discard.enqueue(self.shoe.dequeue())
  119.             q1 = Queue()
  120.             q2 = Queue()
  121.             q3 = Queue()
  122.             while (not self.discard.isEmpty()):
  123.                 q1.enqueue(self.discard.dequeue())
  124.                 q2.enqueue(self.discard.dequeue())
  125.             for j in range(6):
  126.                 temp = []
  127.                 for i in range(26):
  128.                     temp.append(q1.dequeue())
  129.                     temp.append(q2.dequeue())
  130.                 shuffle(temp)
  131.  
  132.                 for i in temp:
  133.                     q3.enqueue(i)
  134.             self.shoe = q3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement