Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from Card import Card
- from random import shuffle
- from CQ import Queue
- class Table:
- def __init__(self):
- #TODO
- self.shoe = 0
- self.player_card = 0
- self.dealer_card = 0
- self.discard = Queue()
- self.bet = 0
- def resolve_round(self, srrank, orrank):
- print("Player shows "+srrank+", Dealer shows "+orrank)
- if srrank > orrank:
- print("Player wins!\n")
- return 1
- elif srrank < orrank:
- print("Dealer wins!\n")
- return -1
- elif srrank == orrank:
- print("War!")
- return 0
- def set_bet(self, bet):
- self.bet = bet
- def get_bet(self):
- return self.bet
- def clear(self):
- self.discard.enqueue(self.player_card)
- self.discard.enqueue(self.dealer_card)
- self.dealer_card = 0
- self.player_card = 0
- def create_deck(self):
- suits = ["S","H","D","C"]
- ranks = ["2","3","4","5","6","7","8","9","T","J","Q","K","A"]
- temp = []
- for i in suits:
- for j in ranks:
- temp.append(j+i)
- return temp
- def validate_deck(self, deck):
- #validation for the cards and their format
- suits = ["S","H","D","C"]
- ranks = ["2","3","4","5","6","7","8","9","T","J","Q","K","A"]
- if len(deck) != 52:
- raise Exception("Total number of cards have to be 52")
- duplicate = []
- for card in deck:
- if card[0] not in ranks:
- raise Exception("Invalid rank")
- if card[1] not in suits:
- raise Exception("Invalid suit")
- if len(card) != 2:
- raise Exception("Card Format Error")
- if card not in duplicate:
- duplicate.append(card)
- else:
- raise Exception("Card duplicated")
- return True
- def make_shoe(self):
- decks = []
- for i in range(6):
- decks.append(self.create_deck())
- for j in decks:
- vald = self.validate_deck(j)
- if not vald :
- raise Exception("Not valid")
- for k in decks:
- shuffle(k)
- q1 = Queue()
- q2 = Queue()
- q3 = Queue()
- for deck in decks:
- for card in deck:
- q1.enqueue(card)
- if q1.size() == 156:
- break
- for deck in decks[3:6]:
- for card in deck:
- q2.enqueue(card)
- if q2.size() == 156:
- break
- for j in range(6):
- temp = []
- for i in range(26):
- temp.append(q1.dequeue())
- temp.append(q2.dequeue())
- shuffle(temp)
- for i in temp:
- q3.enqueue(i)
- return q3
- def set_shoe(self, shoe):
- self.shoe = shoe
- def deal(self):
- self.player_card = self.shoe.dequeue()
- self.dealer_card = self.shoe.dequeue()
- def reset_shoe(self):
- if self.shoe.size() < 52:
- for i in range(self.shoe.size()):
- self.discard.enqueue(self.shoe.dequeue())
- q1 = Queue()
- q2 = Queue()
- q3 = Queue()
- while (not self.discard.isEmpty()):
- q1.enqueue(self.discard.dequeue())
- q2.enqueue(self.discard.dequeue())
- for j in range(6):
- temp = []
- for i in range(26):
- temp.append(q1.dequeue())
- temp.append(q2.dequeue())
- shuffle(temp)
- for i in temp:
- q3.enqueue(i)
- self.shoe = q3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement