Advertisement
dmesticg

Untitled

Jun 17th, 2018
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.35 KB | None | 0 0
  1. import collections
  2. import random
  3.  
  4. def Occur(cards):
  5. scorelist = [2,4,8]
  6. counter = collections.Counter(cards)
  7. largest = [0,0]
  8. largest2 = [0,0]
  9. for key in counter:
  10. occur = counter[key]
  11. if occur > largest2[1]:
  12. if occur > largest[1]:
  13. largest2 = largest
  14. largest = [key,occur]
  15. else:
  16. largest2 = [key,occur]
  17. num = max([largest[0],largest2[0]])
  18. if largest[1] == 3 and largest2[1] == 2:
  19. return(7,largest[0])
  20. elif largest[1] == largest2[1]:
  21. return(3,num)
  22. elif largest[1] in [2,3,4]:
  23. return(scorelist[[2,3,4].index(largest[1])],num )
  24. return(1,num)
  25.  
  26. def bubbleSort(arr):
  27. isSorted = False
  28. while not(isSorted):
  29. for i in range(len(arr) - 1):
  30. for j in range(len(arr) - 1 - i):
  31. if arr[j] > arr[j+1]:
  32. arr[j], arr[j+1] = arr[j+1],arr[j]
  33. else:
  34. isSorted = True
  35.  
  36. def Flush(cards):
  37. counter = collections.Counter(cards)
  38. if len(counter) == 1:
  39. return(True,max(cards))
  40. return(False,max(cards))
  41.  
  42. def Straight(cards):
  43. if cards[4] - cards[0] == 4:
  44. return(True,max(cards))
  45. return(False,max(cards))
  46.  
  47. def Royal(cards):
  48. royal = [0,9,10,11,12]
  49. if cards == royal:
  50. return(True,13)
  51. return(False,13)
  52.  
  53. def getScore(hand):
  54. suit = bubbleSort([i[1] for i in hand])
  55. value = bubbleSort([i[0] for i in hand])
  56. occurances = Occur(value)
  57. if occurances == 2:
  58. if Flush(suit) == 5:
  59. if Straight(value):
  60. return(9)
  61. if Royal(value):
  62. return(10)
  63. return(6)
  64. if Straight(value):
  65. return(5)
  66. return(1)
  67. return(occurances)
  68.  
  69. class Player:
  70. def __init__(self,startBalance,name,hand,game):
  71. self.balance = startBalance
  72. self.name = name
  73. self.game = game
  74. self.hand = hand
  75. self.score = getScore(self.hand)
  76. print(self.score)
  77.  
  78. def bet(self,betAmount):
  79. if betAmount <= self.balance:
  80. self.balance -= betAmount
  81. self.game.currentPot += betAmount
  82. else:
  83. print("Not enough money")
  84.  
  85.  
  86.  
  87.  
  88. class Poker:
  89. def __init__(self):
  90. self.checkCounter = 0
  91. self.turn = 0
  92. self.currentPot = 0
  93. self.previousBet = 0
  94. self.raised = False
  95. def addPlayers(self,playerList):
  96. self.playerList = playerList
  97. def Check(self):
  98. if self.raised == False:
  99. if self.checkCounter < 1:
  100. self.checkCounter += 1
  101. else:
  102. Poker.checkWinner(self)
  103. else:
  104. print("You have to raise buddy")
  105. def Fold(self,player):
  106. Poker.newRound(self,self.playerList[(self.turn + 1) % 2])
  107. def Raise(self,player,betAmount):
  108. self.raised = True
  109. self.previousBet = betAmount
  110. player.bet(betAmount)
  111. def Call(self,player):
  112. if self.raised:
  113. self.raised = False
  114. player.bet(self.previousBet)
  115. else:
  116. print("There is nothing to call, retard")
  117. def checkWinner(self):
  118. if self.playerList[0].score[0] > self.playerList[1].score[0]:
  119. winner = self.playerList[0]
  120. elif self.playerList[0].score[0] < self.playerList[1].score[0]:
  121. winner = self.playerList[1]
  122. else:
  123. if self.playerList[0].score[1] > self.playerList[1].score[1]:
  124. winner = self.playerList[0]
  125. elif self.playerList[0].score[1] < self.playerList[1].score[1]:
  126. winner = self.playerList[1]
  127. else:
  128. winner = 0
  129. Poker.newRound(self,winner)
  130. def newRound(self,winner):
  131. if winner != 0:
  132. winner.balance += self.currentPot
  133. print("The winner of the round is "+ winner.name)
  134. Poker()
  135. else:
  136. print("its a tie")
  137. self.playerList[0]
  138. Poker()
  139.  
  140. class Deck: #!
  141. def __init__(self,numsuit,numcard):
  142. self.numsuit = numsuit
  143. self.numcard = numcard
  144. self.deck = [[True] * numsuit for i in range (numcard)]
  145.  
  146. def createCard(self): #!
  147. if self.deck.count:
  148. suitval = random.randint(0,self.numsuit-1)
  149. cardval = random.randint(0,self.numcard-1)
  150. while self.deck[cardval][suitval] == False:
  151. suitval = random.randint(0,self.numsuit-1)
  152. cardval = random.randint(0,self.numcard-1)
  153. self.deck[cardval][suitval] = False
  154. return((cardval,suitval))
  155.  
  156. def createHand(self,handSize):
  157. cards = []
  158. for i in range(handSize):
  159. card = Deck.createCard(self)
  160. cards.append(card)
  161. return(cards)
  162.  
  163. def changeHand(self,hand,indexList):
  164. print(self.deck)
  165. for i in range(len(indexList)):
  166. hand[indexList[i]] = Deck.createCard(self)
  167. return(hand)
  168.  
  169. print(getScore([(5, 0), (3, 0), (7, 1), (4, 1), (9, 2)]))
  170. theDeck = Deck(4,13)
  171. Game = Poker()
  172. ##hand1 = theDeck.createHand(5)
  173. ##hand2 = theDeck.createHand(5)
  174. Sina = Player(1000,"Sina",[(7, 2), (3, 2), (12, 2), (1, 3), (1, 1)],Game)
  175. Varun = Player(1000,"Varun",[(5, 0), (3, 0), (7, 1), (4, 1), (9, 2)],Game)
  176. Game.addPlayers([Sina,Varun])
  177. Game.Check()
  178. Game.Check()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement