zoukankan      html  css  js  c++  java
  • Python 纸牌游戏

    纸牌游戏

    # 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()
    Resistance is Futile!
  • 相关阅读:
    [HDU6793] Tokitsukaze and Colorful Tree
    [NOI2020]命运
    [NOI2020]美食家
    模拟9
    晚测2
    模拟8
    联考4
    模拟7
    模拟6
    关于数论
  • 原文地址:https://www.cnblogs.com/noonjuan/p/10849414.html
Copyright © 2011-2022 走看看