from OOCard import * def whoGoesFirst(): deck = Deck() deck.shuffle() deck.cut() while True: player1card = deck.deal() player2card = deck.deal() print player1card, player2card if player1card > player2card: return "Player 1 goes first!" elif player1card < player2card: return "Player 2 goes first!" def war(): theDeck = Deck() theDeck.shuffle() theDeck.cut() player1 = Hand() player2 = Hand() # hand out all cards for each in range(26): player1.take(theDeck.deal()) player2.take(theDeck.deal()) pile = Hand() keepPlaying = True autoPlay = False report(player1, player2, pile) #print while keepPlaying: player1sCard = player1.discard() player2sCard = player2.discard() # print "***************************" # print "***************************" print "Player1:", player1sCard, "vs.", print "Player2:", player2sCard pile.take(player1sCard) pile.take(player2sCard) report(player1, player2, pile) if player1sCard > player2sCard: print "Player 1 gets the pile\n" player1.pickup(pile) elif player1sCard < player2sCard: print "Player 2 gets the pile\n" player2.pickup(pile) elif player1sCard == player2sCard and \ (player1.count() >= 4 and \ player2.count() >= 4): # war, since cards are equal & have enough # cards to do it. print "war" # player1 adds 3 cards to pile face down pile.take(player1.discard()) pile.take(player1.discard()) pile.take(player1.discard()) # player2 adds 3 cards to pile face down pile.take(player2.discard()) pile.take(player2.discard()) pile.take(player2.discard()) elif player1sCard == player2sCard: # but not enough cards keepPlaying = False if player1.count() == 0 or player2.count() == 0: keepPlaying = False # report(player1, player2, pile) if not autoPlay: ans = raw_input("more? (y/n/a) ") if ans == "n": keepPlaying = False elif ans == "a": autoPlay = True # end of playing while looping # Game over. Now see who won. declareWinner(player1, player2) def report(player1, player2, pile): msg = "cards: player 1: %d " % player1.count() msg += "player 2: %d " %player2.count() msg += "pile: %d " % pile.count() print "(cards: player1: %d player2: %d pile: %d)"\ % (player1.count(), player2.count(), \ pile.count()) def declareWinner(player1, player2): if player1.count() > player2.count(): print "Player 1 wins!" elif player1.count() < player2.count(): print "Player 2 wins!" elif player1.count() == player2.count(): print "Players tie!"