Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- import sys
- class Card:
- def __init__(self, rank, suit, value):
- self.rank = rank
- self.suit = suit
- self.value = value
- self.name = str(self.rank) + " of " + self.suit
- class War:
- def wincards(self, winner, deck):
- i = 0
- n = len(deck)
- while i < n:
- winner.append(deck[0])
- deck.remove(deck[0])
- i = i + 1
- def playcards(self, player1, player2, deck):
- if random.randint(1,2) == 1:
- deck.append(player2[0])
- deck.append(player1[0])
- else:
- deck.append(player1[0])
- deck.append(player2[0])
- def comparecards(self, deck):
- if deck[0] > deck[1]:
- return 0
- if deck[0] < deck[1]:
- return 2
- if deck[0] == deck[1]:
- return 1
- def create_deck(self):
- suit = ['Spades', 'Hearts', 'Clubs', 'Diamonds']
- rank = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King', 'Ace']
- deck = []
- num = 2
- for i in suit:
- for x in rank:
- deck.append(Card(x, i, num))
- num = num + 1
- num = 2
- return sorted(deck, key=lambda k: random.random())
- def deal_cards(self, deck):
- x = 0
- i = 0
- player1 = []
- player2 = []
- while i < len(deck):
- if x == 0:
- player1.append(deck[i])
- x = 1
- else:
- player2.append(deck[i])
- x = 0
- i += 1
- return player1, player2
- def game(self):
- pl1wins = 0
- pl2wins = 0
- turnspl1 = []
- turnspl2 = []
- while (pl1wins + pl2wins) < 100:
- deck = self.create_deck()
- players = self.deal_cards(deck)
- player1 = players[0]
- player2 = players[1]
- player1 = sorted(player1, key=lambda card: card.value, reverse = True)
- war = []
- turns = 0
- while len(player1) > 0 and len(player2) > 0:
- turns = turns + 1
- if (len(player1) + len(player2)) > 52:
- print "Oh NO!"
- sys.exit()
- war = []
- self.playcards(player1, player2, war)
- player1.remove(player1[0])
- player2.remove(player2[0])
- result = self.comparecards(war)
- if result == 0:
- warGame.wincards(player1, war)
- elif result == 2:
- warGame.wincards(player2, war)
- elif result == 1:
- if len(player1) == 0:
- player1.append(war[0])
- war.remove(war[0])
- if player1[0].value == player2[0].value:
- player1[0].value = 0
- if len(player2) == 0:
- player2.append(war[1])
- war.remove(war[1])
- if player1[0].value == player2[0].value:
- player2[0].value = 0
- while len(war) > 0:
- i = 0
- for i in range(3):
- if len(player1) > 1:
- war.append(player1[0])
- player1.remove(player1[0])
- if len(player2) > 1:
- war.append(player2[0])
- player2.remove(player2[0])
- if player1[0].value > player2[0].value:
- self.playcards(player1, player2, war)
- self.wincards(player1, war)
- elif player1[0].value < player2[0].value:
- self.playcards(player1, player2, war)
- self.wincards(player2, war)
- if len(player1) != 0:
- pl1wins = pl1wins + 1
- turnspl1.append(turns)
- elif len(player2) != 0:
- pl2wins = pl2wins + 1
- turnspl2.append(turns)
- print str(pl1wins) + " versus " + str(pl2wins)
- print str(average(turnspl1)) + " versus " + str(average(turnspl2))
- print str(average(turnspl1 + turnspl2))
- def average(array):
- a = 0
- for i in array:
- a = a + i
- average = a/len(array)
- return average
- warGame = War()
- warGame.game()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement