Advertisement
Guest User

Untitled

a guest
Jul 29th, 2015
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.43 KB | None | 0 0
  1. import random
  2. import sys
  3.  
  4. class Card:
  5. def __init__(self, rank, suit, value):
  6. self.rank = rank
  7. self.suit = suit
  8. self.value = value
  9. self.name = str(self.rank) + " of " + self.suit
  10.  
  11. class War:
  12. def wincards(self, winner, deck):
  13. i = 0
  14. n = len(deck)
  15. while i < n:
  16. winner.append(deck[0])
  17. deck.remove(deck[0])
  18. i = i + 1
  19.  
  20. def playcards(self, player1, player2, deck):
  21. if random.randint(1,2) == 1:
  22. deck.append(player2[0])
  23. deck.append(player1[0])
  24. else:
  25. deck.append(player1[0])
  26. deck.append(player2[0])
  27.  
  28. def comparecards(self, deck):
  29. if deck[0] > deck[1]:
  30. return 0
  31. if deck[0] < deck[1]:
  32. return 2
  33. if deck[0] == deck[1]:
  34. return 1
  35.  
  36. def create_deck(self):
  37. suit = ['Spades', 'Hearts', 'Clubs', 'Diamonds']
  38. rank = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King', 'Ace']
  39. deck = []
  40. num = 2
  41. for i in suit:
  42. for x in rank:
  43. deck.append(Card(x, i, num))
  44. num = num + 1
  45. num = 2
  46. return sorted(deck, key=lambda k: random.random())
  47.  
  48. def deal_cards(self, deck):
  49. x = 0
  50. i = 0
  51. player1 = []
  52. player2 = []
  53. while i < len(deck):
  54. if x == 0:
  55. player1.append(deck[i])
  56. x = 1
  57. else:
  58. player2.append(deck[i])
  59. x = 0
  60. i += 1
  61. return player1, player2
  62.  
  63. def game(self):
  64. pl1wins = 0
  65. pl2wins = 0
  66. turnspl1 = []
  67. turnspl2 = []
  68. while (pl1wins + pl2wins) < 100:
  69. deck = self.create_deck()
  70. players = self.deal_cards(deck)
  71. player1 = players[0]
  72. player2 = players[1]
  73.  
  74. player1 = sorted(player1, key=lambda card: card.value, reverse = True)
  75. war = []
  76.  
  77. turns = 0
  78. while len(player1) > 0 and len(player2) > 0:
  79. turns = turns + 1
  80. if (len(player1) + len(player2)) > 52:
  81. print "Oh NO!"
  82. sys.exit()
  83.  
  84. war = []
  85. self.playcards(player1, player2, war)
  86.  
  87. player1.remove(player1[0])
  88. player2.remove(player2[0])
  89. result = self.comparecards(war)
  90. if result == 0:
  91. warGame.wincards(player1, war)
  92. elif result == 2:
  93. warGame.wincards(player2, war)
  94.  
  95. elif result == 1:
  96. if len(player1) == 0:
  97. player1.append(war[0])
  98. war.remove(war[0])
  99. if player1[0].value == player2[0].value:
  100. player1[0].value = 0
  101. if len(player2) == 0:
  102. player2.append(war[1])
  103. war.remove(war[1])
  104. if player1[0].value == player2[0].value:
  105. player2[0].value = 0
  106. while len(war) > 0:
  107. i = 0
  108. for i in range(3):
  109. if len(player1) > 1:
  110. war.append(player1[0])
  111. player1.remove(player1[0])
  112.  
  113. if len(player2) > 1:
  114. war.append(player2[0])
  115. player2.remove(player2[0])
  116.  
  117. if player1[0].value > player2[0].value:
  118. self.playcards(player1, player2, war)
  119. self.wincards(player1, war)
  120.  
  121. elif player1[0].value < player2[0].value:
  122. self.playcards(player1, player2, war)
  123. self.wincards(player2, war)
  124.  
  125. if len(player1) != 0:
  126. pl1wins = pl1wins + 1
  127. turnspl1.append(turns)
  128. elif len(player2) != 0:
  129. pl2wins = pl2wins + 1
  130. turnspl2.append(turns)
  131. print str(pl1wins) + " versus " + str(pl2wins)
  132. print str(average(turnspl1)) + " versus " + str(average(turnspl2))
  133. print str(average(turnspl1 + turnspl2))
  134.  
  135. def average(array):
  136. a = 0
  137. for i in array:
  138. a = a + i
  139.  
  140. average = a/len(array)
  141. return average
  142.  
  143. warGame = War()
  144. warGame.game()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement