首页 > 编程语言 > 详细

Python 纸牌游戏

时间:2019-05-11 17:56:24      阅读:371      评论:0      收藏:0      [点我收藏+]

纸牌游戏

# 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()

 

Python 纸牌游戏

原文:https://www.cnblogs.com/noonjuan/p/10849414.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!