Advertisement
Guest User

Poker Test - JL

a guest
Mar 23rd, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.19 KB | None | 0 0
  1. class Game:
  2. playerOnesHand = []
  3. playerTwosHand = []
  4. playerOneScore = 0
  5. playerTwoScore = 0
  6. result = 0
  7.  
  8. def __init__(self, cards):
  9. cards = cards.split()
  10. self.playerOnesHand = Hand(cards[0:5])
  11. self.playerTwosHand = Hand(cards[5:10])
  12. self.play();
  13.  
  14. def play(self):
  15. self.playerOneScore = self.playerOnesHand.getScore();
  16. self.playerTwosCore = self.playerTwosHand.getScore();
  17.  
  18.  
  19. if (self.playerOneScore > self.playerTwoScore):
  20. result = 1
  21. else:
  22. result = 2
  23.  
  24. class Hand:
  25. cards = []
  26. values = []
  27. def setValues(self):
  28. for card in self.cards:
  29. self.values.append(card.value)
  30. self.values.sort()
  31.  
  32. print len(self.values)
  33.  
  34. def isFlush(self):
  35. currentSuit = self.cards[0].suit
  36. for card in self.cards:
  37. if card.suit != currentSuit:
  38. return False
  39. currentSuit = card.suit
  40. return True
  41.  
  42. def isRoyalFlush(self):
  43. for card in self.cards:
  44. self.values.append(card.value)
  45.  
  46. low = min(self.values)
  47.  
  48. if low == 10 and (low + 1 in self.values) and (low + 2 in self.values) and (low + 3 in self.values) and (low + 4 in self.values):
  49. return True
  50. else:
  51. return False
  52.  
  53. def isFourOfAKind(self):
  54. cardOneCount = self.values.count(self.values[0])
  55. cardTwoCount = self.values.count(self.values[len(self.values) - 1])
  56.  
  57. if cardOneCount == 4 | cardTwoCount == 4:
  58. return True
  59. else:
  60. return False
  61.  
  62. def isThreeOfAKind(self):
  63. cardOneCount = self.values.count(self.values[0])
  64. cardTwoCount = self.values.count(self.values[len(self.values) - 1])
  65.  
  66. if cardOneCount == 3 | cardTwoCount == 3:
  67. return True
  68. else:
  69. return False
  70.  
  71. def isStraight(self):
  72. low = min(self.values)
  73.  
  74. if low == 10 and (low + 1 in self.values) and (low + 2 in self.values) and (low + 3 in self.values) and (low + 4 in self.values):
  75. return True;
  76.  
  77. def isFullHouse(self):
  78. self.values = []
  79. for card in self.cards:
  80. self.values.append(card.value)
  81.  
  82. self.values.sort()
  83. cardOneCount = self.values.count(self.values[0])
  84. cardTwoCount = self.values.count(self.values[len(self.values) - 1])
  85.  
  86. if (cardOneCount == 2 and cardTwoCount == 3 ) | (cardOneCount == 3 and cardTwoCount == 2):
  87. return True
  88. else:
  89. return False
  90.  
  91. def isTwoPair(self):
  92. cardOneCount = self.values.count(self.values[0])
  93. cardTwoCount = self.values.count(self.values[4])
  94. cardThreeCount = self.values.count(self.values[2])
  95.  
  96. if(cardOneCount == 2 and cardTwoCount == 2) | (cardOneCount == 2 and cardThreeCount == 2) | (cardTwoCount == 2 and cardThreeCount == 2):
  97. return True;
  98. return False;
  99.  
  100. def isPair(self):
  101. cardOneCount = self.values.count(self.values[0])
  102. cardTwoCount = self.values.count(self.values[4])
  103. cardThreeCount = self.values.count(self.values[2])
  104.  
  105. if(cardOneCount == 2 ^ cardTwoCount == 2 ^ cardTwoCount == 3):
  106. return True;
  107. return False;
  108.  
  109. def __init__(self, cards):
  110. for c in cards:
  111. self.cards.append(Card(c))
  112.  
  113. self.setValues()
  114.  
  115. def getScore(self):
  116. score = 0
  117. if self.isRoyalFlush(): score = 140000
  118. elif self.isFlush() and self.isStraight(): score = 130000
  119. elif self.isFourOfAKind(): score = 120000
  120. elif self.isFullHouse(): score = 110000
  121. elif self.isFlush(): score = 100000
  122. elif self.isStraight(): score = 90000
  123. elif self.isThreeOfAKind(): score = 80000
  124. elif self.isTwoPair(): score = 70000
  125. elif self.isTwoPair(): score = 60000
  126. else: score = 0
  127.  
  128. return score
  129.  
  130. class Card:
  131. # value = 0
  132. # suit = 0
  133. def __init__(self, card):
  134. self.value = self.determineValue(card[0])
  135. self.suit = card[1]
  136.  
  137. def determineValue(x,y):
  138. return {
  139. '2':2,
  140. '3':3,
  141. '4':4,
  142. '5':6,
  143. '6':6,
  144. '7':7,
  145. '8':8,
  146. '9':9,
  147. 'T':10,
  148. 'J':11,
  149. 'Q':12,
  150. 'K':13,
  151. 'A':14
  152. }.get(y)
  153.  
  154. def playGames():
  155. player1Score = 0;
  156. player2Score = 0;
  157. file = open("poker-small.txt")
  158.  
  159. for line in file:
  160. game = Game(line)
  161. if game.result == 1:
  162. player1Score += 1
  163. else:
  164. player2Score += 1
  165.  
  166. print "Player one has won " + str(player1Score) + " games! "
  167. print "Player two has won " + str(player2Score) + " games! "
  168. if (player1Score > player2Score):
  169. print "Player 1 wins!"
  170. else:
  171. print "Player 2 wins!"
  172.  
  173. def main():
  174. playGames();
  175.  
  176. if __name__ == "__main__":
  177. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement