纸牌游戏
# card.py from random import shuffle class Card: # 黑桃,红桃,方块,梅花 suits = ['spades', 'hearts', 'diamonds', 'clubs'] values = [None, None, '2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King', 'Ace'] def __init__(self, v, s): """suits和value的值都为整型数(index)""" self.value = v self.suit = s def __lt__(self, c2): """less than""" if self.value < c2.value: return True if self.value == c2.value: if self.suit < c2.suit: return True else: return False return False def __gt__(self, c2): """greater than""" if self.value > c2.value: return True if self.value == c2.value: if self.suit > c2.value: return True else: return False return False def __repr__(self): v = self.values[self.value] + ' of ' + self.suits[self.suit] return v class Deck: def __init__(self): # 将52张牌都添加到cards列表中 self.cards = [] for i in range(2, 15): for j in range(4): self.cards.append(Card(i, j)) # 调用shuffle方法洗牌(随机排列cards) shuffle(self.cards) def rm_card(self): # 抽牌 if len(self.cards) == 0: return return self.cards.pop() class Player: def __init__(self, name): self.wins = 0 self.card = None self.name = name class Game: def __init__(self): name1 = input('p1 name ') name2 = input('p2 name ') self.deck = Deck() self.p1 = Player(name1) self.p2 = Player(name2) def wins(self, winner): print("{} wins this round".format(winner)) def draw(self, p1n, p1c, p2n, p2c): print("{} drew {}; {} drew {}".format(p1n, p1c, p2n, p2c)) def play_game(self): cards = self.deck.cards print('beginning War!') while len(cards) >= 2: response = input('q to quit. Any key to play:') if response.lower() =='q': break p1c = self.deck.rm_card() p2c = self.deck.rm_card() p1n = self.p1.name p2n = self.p2.name self.draw(p1n, p1c, p2n, p2c) if p1c > p2c: self.p1.wins += 1 self.wins(self.p1.name) else: self.p2.wins += 1 self.wins(self.p2.name) win = self.winner(self.p1, self.p2) print('War is over. {} wins'.format(win)) def winner(self, p1, p2): if p1.wins > p2.wins: return p1.name if p1.wins < p2.wins: return p2.name return 'It was a tie!' if __name__ == '__main__': game = Game() game.play_game()