def test_deal(): deck = [r + s for r in "23456789TJQKA" for s in "SHDC"] dealt_hands = deal(3, n=5, deck=deck) assert len(dealt_hands) == 3 assert len(dealt_hands[0]) == 5
def randomSimulation(n =700000): counts=[0]*9 for i in range(n): for hand in poker.deal(10): ranking = poker.handRank(hand)[0] counts[ranking]+=1 for i in reversed(range(9)): print "%14s: %d %6.3f %%" %(i, counts[i], (100.*counts[i])/(n*10)) print(sum(counts))
def dealCard(s): global players_ready; if playerHands.get(s) == None: #player has no cards hands = poker.deal(1) cards = ' '.join(str(x) for x in hands[0]) #playerHands.update({s:cards}); #give cards to player playerHands.update({s:hands[0]}); message_queues[s].put("Welcome!\nYour hand: "+cards+"\n"); # add message to queue outputs.append(s); #send to player players_ready+=1; #one more player is ready #broadcast that player joined broadcast(playerNames.get(s)+"Is ready to play!\n"); else : #player already has cards cards = ' '.join(str(x) for x in playerHands.get(s)) message_queues[s].put("You already joined!\nYour hand: "+cards); outputs.append(s);
def hand_percentages(n=700 * 1000): """ Sample n random hands and print a table of percentages for each hand. """ counts = [0] * 9 for i in range(n // 10): for hand in deal(10): ranking = hand_rank(hand)[0] counts[ranking] += 1 hand_names = [ "Straight Flush", "4 Kind", "Full House", "Flush", "Straight", "3 Kind", "2 Pair", "Pair", "High Card", ] for i in reversed(range(9)): print(f"{hand_names[i]}: {round(counts[i]/n * 100, 2)}%")
def dipper(self): pokers = poker.getTotalPokers() sortpokers = poker.deal(pokers) self.pokers = [[m[1], [poker.rewash(sortpokers[i]), []]] for i, m in enumerate(self.menbers)] self.landlord = [None, sortpokers[3]]
#message_queues[s].put(data) if numberOfPlayers == 5: print >>sys.stderr, " maks antall spillere ble nådd" errir = "for mange spillere" message_queues[s].put(error) else: board.append (s.getpeername()) numberOfPlayers += 1 joined = "%d av %d spillere tilkoblet" % (numberOfPlayers) message_queues[s].put(joined) if data == "Deal\n": if numberOfPlayers == 5: hands = poker.deal(5) play = dict(zip(board, hands)) dealSuccess = "kortene ble utdelt" message_queues[s].put(dealSuccess) else: error = "Mangler %d spillere" % (5 - numberOfPlayers) message_queues[s].put(joined) if data == "GETHAND\n": hand = play.get(s.getpeername()) handString = str(hand) message_queues[s].put(handString) # Legg til UT-kanalen for responsen
# Et grunnlag er programmeringsmiljø som man kan bruke for å gjøre "beregninger" / implementere "systemer" # select module gir tilgang til platform-spesifikke INN/UT monitorerings-funksjoner # select() er en POSIX funksjon som det finnes gode implementasjoner for i både UNIX- og Windows miljøer # POSIX er et forsøk på å standardisere et operativsystem import select import socket import sys import Queue import poker # Her er data for pokerspillet # For enkelhets skyld deler vi ut kort i det vi starter server # Dette bør skje på forespørsel fra en klient i neste versjon av programmet hands = poker.deal(3) handsdelt = 0 # Vi trenger en variabel som holder styr på hvor mange hender er delt ut # Lage en TCP/IP socket server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.setblocking(0) # Binde socketen på lokalmaskinen til porten 10000 server_address = ('localhost', 10000) print >>sys.stderr, 'starter socket på %s og port %s' % server_address server.bind(server_address) # Høre / vente på innkommende forbindelser server.listen(5) # Med select() kan man følge med på mer enn en forbindelse av gangen
import poker hand = poker.deal(5) print hand
# Et grunnlag er programmeringsmiljø som man kan bruke for å gjøre "beregninger" / implementere "systemer" # select module gir tilgang til platform-spesifikke INN/UT monitorerings-funksjoner # select() er en POSIX funksjon som det finnes gode implementasjoner for i både UNIX- og Windows miljøer # POSIX er et forsøk på å standardisere et operativsystem import select import socket import sys import Queue import poker # Her er data for pokerspillet # For enkelhets skyld deler vi ut kort i det vi starter server # Dette bør skje på forespørsel fra en klient i neste versjon av programmet hender = poker.deal(5) handsdeling = 0 # Vi trenger en variabel som holder styr på hvor mange hender er delt ut # Lage en TCP/IP socket server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.setblocking(0) # Binde socketen på lokalmaskinen til porten 10000 server_address = ('localhost', 10000) print >>sys.stderr, 'starter socket på %s og port %s' % server_address server.bind(server_address) # Høre / vente på innkommende forbindelser server.listen(5) # Med select() kan man følge med på mer enn en forbindelse av gangen
def handlePokerMsg(self, msg, client_id, room): """handles poker messages; for now, it just checks the gameSelected and if 357 sends a 357 button set, otw a 5cd button set, plus cards""" # needs to, for now, switch on 357, seven, or five # send back cards, admin (stattus msg), and buttons # cards just drawn from a deck # will need to have logic for who bets first, etc. if (msg['subtype'] == 'dealerchoice'): adeck = poker.getDeck() cr_info = self.getClientRoomInfo(client_id, room) if (msg['gameSelected'] in ["357_25", "357_5", "357_5_nw"]): ncards = 3 buttons = [self.makeButton(x) for x in ['drop', 'hold']] status = 'Game is set to ' + msg[ 'gameSelected'] + ' and dealer is ' + cr_info['nick'] elif (msg['gameSelected'] in ['5cp', '5cd']): ncards = 5 buttons = [ self.makeButton(x) for x in ['fold', 'check', 'call'] ] buttons.append(self.makeButton('raise', True)) status = 'Game is set to ' + msg[ 'gameSelected'] + ' and dealer is ' + cr_info['nick'] elif (msg['gameSelected'] in ['7cp']): ncards = 7 buttons = [ self.makeButton(x) for x in ['fold', 'check', 'call'] ] buttons.append(self.makeButton('raise', True)) status = 'Game is set to ' + msg[ 'gameSelected'] + ' and dealer is ' + cr_info['nick'] else: print('game selected is not one we know: ' + msg.gameSelected) # Now, loop over the players and send them their specific messages #here hands = poker.deal(adeck, len(self.room_info[room]), ncards) for idx, ci in enumerate(self.room_info[room]): cmsg = { 'msgtype': 'poker', 'subtype': 'cards', 'cards': hands[idx] } print('cmsg is ' + str(cmsg)) smsg = { 'msgtype': 'poker', 'subtype': 'admin', 'game_status': status } print('smsg is ' + str(smsg)) bmsg = { 'msgtype': 'poker', 'subtype': 'buttons', 'buttons': buttons } print('bmsg is ' + str(bmsg)) conn = ci['wsconn'] conn.write_message(cmsg) conn.write_message(smsg) conn.write_message(bmsg) else: print('Not yet implemented: ' + msg.subtype)