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
Example #2
0
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))
Example #3
0
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)}%")
Example #5
0
 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]]
Example #6
0
				#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
Example #7
0
# 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
Example #9
0
# 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)