Ejemplo n.º 1
0
class Rules(Game):
	"""Rules for the game of 500"""
	def __init__(self):
		super(Rules, self).__init__()
		self.deckStyle = 'French'
		self.deck = Deck(self.deckStyle)
		print self.deck
		self.playerLimit = [4]
		self.gameLimit = 0
		self.roundLimit = 0
		self.handLimit = 0

	def deck(self):
		for cards in [(0,2),(1,2),(2,2),(3,2),(0,3),(1,3),(2,3),(3,3),(0,4),(1,4)]:
			card = Card(self.deckStyle, cards[0], cards[1])
			self.deck.remove(card)

	def dealing(self, players):
		for player in range(self.playerLimit):
			return player
Ejemplo n.º 2
0
class Rules(Game):
	"""Rules for the game of Oh Hell!"""
	def __init__(self):
		self.deckStyle = 'French'
		self.deck = Deck(self.deckStyle)
		self.playerLimit = [3,4,5,6,7]
		self.handLimit = [11,13,15,17,19,21,23]
		super(Rules, self).__init__()
		self.handCounter = 0
		self.hands = [Hand(n, self.handLimit) for n in range(self.handLimit)]
	
	def limitHands(self):
		i = 1
		while self.playerLimit * i < len(self.deck.cards):
			print i
			i = i + 1
			# pass
		self.handLimit = 'xx'

	def setupDeck(self):
		for cards in [(0,2),(1,2),(2,2),(3,2),(0,3),(1,3),(2,3),(3,3),(0,4),(1,4)]:
			card = Card(self.deckStyle, cards[0], cards[1])
			self.deck.remove(card)

	def deal(self):
		self.setupDeck()
		self.deck.shuffle()
		cards = self.deck.cards
		for player in self.players:
			for n in range(self.hands[self.handCounter].cardLimit):
				player.hand.append(cards.pop())

		for player in self.players:
			print str(player), ':'
			holding = u""
			for card in player.hand:
				holding = holding + card.__unicode__() + '  '
			print holding
		print '\n\n\n'
Ejemplo n.º 3
0
class Player():
    def __init__(self, name):
        self.name = name
        self.hand = Deck()
        self.pile = Deck()
        self.money = 0
        self.discard = Deck()
        self.startDeck()
        self.drawHand()
        self.actions = 1
        self.buys  = 1

    def endTurn(self):
        for card in reversed(self.hand.deck):
            self.discard.add(card)
            self.hand.remove(card)
        self.drawHand()
        self.actions = 1
        self.buys  = 1
        self.money = 0

    def emptyDiscard(self):
        for card in reversed(self.discard.deck):
            self.pile.add(card)
            self.discard.remove(card)
        self.pile.shuffle()

    def drawCardPile(self):
        if len(self.pile.deck) == 0:
            self.emptyDiscard()
        self.hand.add(self.pile.drawCard())

    def addMoney(self, value):
        self.money = self.money + value

    def drawHand(self):
        '''since you start with 10 cards you should never have less than 5 cards'''
        for _x in range(5):
            if len(self.pile.deck) == 0:
                self.emptyDiscard()
            self.drawCardPile()
        for card in self.hand.deck:
            if card.kind == "T":
                self.addMoney(card.value)
                
    
    def startDeck(self):

        '''Each player will start with 7 copper and 3 estates '''
        for _x in range(7):
            self.pile.add(copy.deepcopy(cards.copper))
        for _x in range(3):
            self.pile.add(copy.deepcopy(cards.estate))
        self.pile.shuffle()
    
    def finalScore(self):
        score = 0
        decks = [self.pile.deck, self.discard.deck, self.hand.deck]
        for pile in decks:
            for card in pile:
                if card.kind == "V":
                    if card.name == "Gardens":
                        score += int((self.pile.size + self.discard.size + self.hand.size)/10)
                    else:
                        score += card.value

        return score
Ejemplo n.º 4
0
import time
from cards import make_hand, Hand, Deck, best_score

start = time.clock()

h1 = make_hand("Qc, Qs, Td, 5c")
h2 = make_hand("Qh, Th, 7s, 2c")

base_deck = Deck()
for card in h1:
    base_deck.remove(card)
for card in h2:
    base_deck.remove(card)
base_cards = base_deck.cards
wins = 0
for i in range(10000):
    deck = Deck(initial=base_cards)
    board = Hand(
        [deck.deal(),
         deck.deal(),
         deck.deal(),
         deck.deal(),
         deck.deal()])
    if (best_score(h1, board) >= best_score(h2, board)):
        wins += 1
print(wins / 10000.0)

end = time.clock()
print("Completed in {}".format(end - start))