Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import collections
- import random
- def Occur(cards):
- scorelist = [2,4,8]
- counter = collections.Counter(cards)
- largest = [0,0]
- largest2 = [0,0]
- for key in counter:
- occur = counter[key]
- if occur > largest2[1]:
- if occur > largest[1]:
- largest2 = largest
- largest = [key,occur]
- else:
- largest2 = [key,occur]
- num = max([largest[0],largest2[0]])
- if largest[1] == 3 and largest2[1] == 2:
- return(7,largest[0])
- elif largest[1] == largest2[1]:
- return(3,num)
- elif largest[1] in [2,3,4]:
- return(scorelist[[2,3,4].index(largest[1])],num )
- return(1,num)
- def bubbleSort(arr):
- isSorted = False
- while not(isSorted):
- for i in range(len(arr) - 1):
- for j in range(len(arr) - 1 - i):
- if arr[j] > arr[j+1]:
- arr[j], arr[j+1] = arr[j+1],arr[j]
- else:
- isSorted = True
- def Flush(cards):
- counter = collections.Counter(cards)
- if len(counter) == 1:
- return(True,max(cards))
- return(False,max(cards))
- def Straight(cards):
- if cards[4] - cards[0] == 4:
- return(True,max(cards))
- return(False,max(cards))
- def Royal(cards):
- royal = [0,9,10,11,12]
- if cards == royal:
- return(True,13)
- return(False,13)
- def getScore(hand):
- suit = bubbleSort([i[1] for i in hand])
- value = bubbleSort([i[0] for i in hand])
- occurances = Occur(value)
- if occurances == 2:
- if Flush(suit) == 5:
- if Straight(value):
- return(9)
- if Royal(value):
- return(10)
- return(6)
- if Straight(value):
- return(5)
- return(1)
- return(occurances)
- class Player:
- def __init__(self,startBalance,name,hand,game):
- self.balance = startBalance
- self.name = name
- self.game = game
- self.hand = hand
- self.score = getScore(self.hand)
- print(self.score)
- def bet(self,betAmount):
- if betAmount <= self.balance:
- self.balance -= betAmount
- self.game.currentPot += betAmount
- else:
- print("Not enough money")
- class Poker:
- def __init__(self):
- self.checkCounter = 0
- self.turn = 0
- self.currentPot = 0
- self.previousBet = 0
- self.raised = False
- def addPlayers(self,playerList):
- self.playerList = playerList
- def Check(self):
- if self.raised == False:
- if self.checkCounter < 1:
- self.checkCounter += 1
- else:
- Poker.checkWinner(self)
- else:
- print("You have to raise buddy")
- def Fold(self,player):
- Poker.newRound(self,self.playerList[(self.turn + 1) % 2])
- def Raise(self,player,betAmount):
- self.raised = True
- self.previousBet = betAmount
- player.bet(betAmount)
- def Call(self,player):
- if self.raised:
- self.raised = False
- player.bet(self.previousBet)
- else:
- print("There is nothing to call, retard")
- def checkWinner(self):
- if self.playerList[0].score[0] > self.playerList[1].score[0]:
- winner = self.playerList[0]
- elif self.playerList[0].score[0] < self.playerList[1].score[0]:
- winner = self.playerList[1]
- else:
- if self.playerList[0].score[1] > self.playerList[1].score[1]:
- winner = self.playerList[0]
- elif self.playerList[0].score[1] < self.playerList[1].score[1]:
- winner = self.playerList[1]
- else:
- winner = 0
- Poker.newRound(self,winner)
- def newRound(self,winner):
- if winner != 0:
- winner.balance += self.currentPot
- print("The winner of the round is "+ winner.name)
- Poker()
- else:
- print("its a tie")
- self.playerList[0].balance += self.currentPot/2
- self.playerList[1].balance += self.currentPot/2
- Poker()
- class Deck: #!
- def __init__(self,numsuit,numcard):
- self.numsuit = numsuit
- self.numcard = numcard
- self.deck = [[True] * numsuit for i in range (numcard)]
- def createCard(self): #!
- if self.deck.count:
- suitval = random.randint(0,self.numsuit-1)
- cardval = random.randint(0,self.numcard-1)
- while self.deck[cardval][suitval] == False:
- suitval = random.randint(0,self.numsuit-1)
- cardval = random.randint(0,self.numcard-1)
- self.deck[cardval][suitval] = False
- return((cardval,suitval))
- def createHand(self,handSize):
- cards = []
- for i in range(handSize):
- card = Deck.createCard(self)
- cards.append(card)
- return(cards)
- def changeHand(self,hand,indexList):
- print(self.deck)
- for i in range(len(indexList)):
- hand[indexList[i]] = Deck.createCard(self)
- return(hand)
- print(getScore([(5, 0), (3, 0), (7, 1), (4, 1), (9, 2)]))
- theDeck = Deck(4,13)
- Game = Poker()
- ##hand1 = theDeck.createHand(5)
- ##hand2 = theDeck.createHand(5)
- Sina = Player(1000,"Sina",[(7, 2), (3, 2), (12, 2), (1, 3), (1, 1)],Game)
- Varun = Player(1000,"Varun",[(5, 0), (3, 0), (7, 1), (4, 1), (9, 2)],Game)
- Game.addPlayers([Sina,Varun])
- print(Sina.hand)
- print(Varun.hand)
- Game.Check()
- Game.Check()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement