import random
import cards
    
class Player:
    def __init__(self, name, hand):
        self.name = name
        self.hand = hand
        self.pile = []

    def playCard(self):
        if len(self.hand) == 0:
            return None
        else:
            card = self.hand[0]
            del self.hand[0]
            return card

    def __str__(self):
        return self.name
    
class Game:
    def __init__(self, player1, player2):
        self.player1 = player1
        self.player2 = player2
        self.pot = []

    def gameOver(self):
        return len(self.player1.hand)==0 or len(self.player2.hand) == 0

    def turn(self):
        done = False
        while not done:
            if self.gameOver():
                done = True
            else:
                card1 = self.player1.playCard()
                card2 = self.player2.playCard()
                print( "%s plays %s, %s plays %s" %(self.player1, card1, self.player2, card2))
                self.pot.append(card1)
                self.pot.append(card2)
                if card1 < card2:
                    print( "     %s wins" %self.player2)
                    done = True
                    for card in self.pot:
                        self.player2.pile.append(card)
                    self.pot = []
                elif card1 > card2:
                    print( "     %s wins" %self.player1)
                    done = True
                    for card in self.pot:
                        self.player1.pile.append(card)
                    self.pot = []

    def play(self):
        while not self.gameOver():
            self.turn()
        len1 = len(self.player1.pile)
        len2 = len(self.player2.pile)
        if len1 > len2:
            print( "%s wins %d to %d." %(self.player1, len1, len2))
        elif len1 < len2:
            print( "%s wins %d to %d." %(self.player2, len2, len1))
        else:
            print( "It is a tie %d to %d."%(len1, len2))
    
    
def main():
    d = cards.Deck()
    d.shuffle()
    hand1 = d.deal(26)
    hand2 = d.deal(26)
    p1 = Player("John", hand1)
    p2 = Player("Mary", hand2)
    g = Game(p1, p2)
    g.play()
    

main()
