Пример #1
0
    def testDealHand(self):
	"""Test basic dealing to a single hand."""
	hand = Hand()
	deck = Deck()
	deck.shuffle()
	deck.deal(hand,5)
	self.assertEquals(len(hand), 5)
Пример #2
0
    def testCreateHands(self):
	"""Test creating multiple hands."""
	deck = Deck()
	deck.shuffle()
	hands = deck.createHands(8, handClass=HoldEm.Hand)
	self.assertEquals(len(hands), 8)
	for hand in hands:
	    self.assertEquals(len(hand), 2)
Пример #3
0
    def testDealHands(self):
	"""Test dealing to multiple hands."""
	hands = [Hand(), Hand(), Hand(), Hand()]
	deck = Deck()
	deck.shuffle()
	deck.deal(hands, 5)
	for hand in hands:
	    self.assertEquals(len(hand), 5)
Пример #4
0
def evaluateHand(hand, numDeals, numHands):
    handRank = HoldEmStartingHandRanker.rankHand(hand)
    betterThan = [ 0 ] * numHands
    for deal in range(numDeals):
	deck = Deck()
	deck.removeCards(hand)
	deck.shuffle()
	hands = []
	for h in range(numHands):
	    hands.append(HoldEm.Hand())
	deck.dealHands(hands)
	for h in range(numHands):
	    rank = HoldEmStartingHandRanker.rankHand(hands[h])
	    if handRank > rank:
		betterThan[h] += 1
	    else:
		break
    return betterThan
Пример #5
0
def main(argv=None):
    if argv is None:
        argv = sys.argv

    usage = "usage: %prog [<options>] Card1 Card2 Card3 Card4"
    version = "%prog version 1.0"
    parser = OptionParser(usage=usage, version=version)
    parser.add_option("-n", "--numDeals", type="int", dest="numDeals",
                      default=1000,
                      help="number of deals to simulate (Default is 100)")
    parser.add_option("-N", "--numHands", type="int", dest="numHands",
                      default=8, help="number of Hands (Default is 8)")
    parser.add_option("-p", "--showProgress", action="store_true",
                      dest="showProgress", default=False, help="show progress")
    (options, args) = parser.parse_args()

    total = 0
    pointOpeningHands = 0
    pointRaisingHands = 0
    pointReraisingHands = 0
    maxPointOpeners = 0
    openingHands = 0

    for deal in xrange(options.numDeals):
        deck = Deck()
        deck.shuffle()
        hands = deck.createHands(options.numHands, handClass = Omaha.Hand)
        dealOpeners = 0
        for h in hands:
            value = h.pointValue()
            total += value
            if value > 25:
                dealOpeners += 1
                pointOpeningHands += 1
            if value > 40:
                pointRaisingHands += 1
            if value > 50:
                pointReraisingHands += 1
            if h.openingHand():
                openingHands += 1
        if dealOpeners > maxPointOpeners:
            maxPointOpeners = dealOpeners
        # Update progress if so requested
        if options.showProgress and (deal % 20 == 0):
            sys.stdout.write(".")
            sys.stdout.flush()

    if options.showProgress:
        print

    totalHands = options.numDeals * options.numHands

    avg = total/totalHands

    print "Average point value: %d" % avg
    print "\tOpeners: %5.2f%% Raisers: %5.2f%% Reraisers: %5.2f%%" % (
        percent(pointOpeningHands, totalHands),
        percent(pointRaisingHands, totalHands),
        percent(pointReraisingHands, totalHands))
    print "\tOpeners in a deal: Average %4.1f Max %d" % (
        1.0 * pointOpeningHands / options.numDeals,
        maxPointOpeners)
    print "Opening Hands by Krieger method: %5.2f%%" % percent(openingHands,
                                                               totalHands)
Пример #6
0
    def testDesk(self):
	"""Test basic deck construction and shuffling."""
	deck = Deck()
        self.assertEqual(len(deck), 52, "Deck has %d cards!" % len(deck))
	deck.shuffle()
	deck.reset()
Пример #7
0
def main(argv=None):
    if argv is None:
        argv = sys.argv

    usage = "usage: %prog [<options>]"
    version = "%prog version 1.0"
    parser = OptionParser(usage=usage, version=version)
    parser.add_option("-n", "--numDeals", type="int", dest="numDeals",
                      default=1000,
                      help="number of deals to simulate (Default is 100)")
    parser.add_option("-p", "--showProgress", action="store_true",
                      dest="showProgress", default=False, help="show progress")
    (options, args) = parser.parse_args()

    print "Testing for %d deals" % options.numDeals

    lowDraw = 0
    lowDrawCompleted = 0
    floppedLow = 0
    lowPossible = 0
    backdoorLow = 0

    for deal in range(options.numDeals):
        deck = Deck()
        deck.shuffle()
        board = Board()
        # Deal out flop and count low cards
        deck.deal(board, 3)
        flopLowCount = board.countEightOrLower()
        if flopLowCount == 2:
            lowDraw += 1
        # Finish dealing turn and river
        deck.deal(board, 2)
        # Analyze
        lowCount = board.countEightOrLower()
        if lowCount > 2:
            lowPossible += 1
            if flopLowCount == 3:
                # Flopped a low
                floppedLow += 1
            elif flopLowCount == 2:
                # Completed a draw
                lowDrawCompleted += 1
            else:
                # Backdoor low
                backdoorLow += 1
        # Update progress if so requested
        if options.showProgress and (deal % 20 == 0):
            sys.stdout.write(".")
            sys.stdout.flush()

    if options.showProgress:
        print

    statStr = lambda name, value: "%-30s %5d (%5.2f%%)" % (name.capitalize() + ":", value, 100.0 * value / options.numDeals)

    print statStr("eight-low possible", lowPossible)
    print statStr("flopped low", floppedLow)
    print statStr("flopped low draw", lowDraw)
    print statStr("completed draw", lowDrawCompleted)
    print statStr("backdoor low", backdoorLow)