Esempio n. 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)
Esempio n. 2
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)
Esempio n. 3
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)