《python无师自通》第十五章 综合练习

战争(存在问题)





from random import shuffle

#卡牌

class Card:
    suits = ["spades",#表示花色
             "hearts",
             "diamonds",
             "clubs"]

    values = [None,None,"2","3",#两个空值是为了数字2对应索引2
              "4","5","6","7",
              "8","9","10",
              "Jack","Queen",
              "King","Ace"]

    def __init__(self,v,s):
        """suit 和 value 的值都为整数型"""
        self.value = v
        self.suit = s


    def __it__(self,c2):#魔法方法
        if self.value < c2.value:
            return True
        if self.value == c2.value:
            if self.suit < c2.suit:
                return True
        else:
            return False

    def __qt__(self,c2):#魔法方法
        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 __repr__(self):
        v = self.value[self.value] + "of" \
            + self.suit[self.suit]
        return v

class Deck:
    def __init__(self):
        self.cards = []
        for i in range(2,15):
            for j in range (4):
                self.cards.append(Card(i,j))
            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):
        w = "{} win this round"
        w = w.format(winner)
        print(w)

    def draw(self,p1n,p1c,p2n,p2c):
        d = "{} drew {} {} drew {}"
        d = d.format(p1n,p1c,p2n,p2c)
        print(d)

    def play_game(self):
        cards = self.deck.cards
        print("beginning War!")
        while len(cards) >= 2:
            m = "q to quit.Any" + "key to play:"
            response = input(m)
            if response == "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.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!"

game = Game()
game.play_game()

    

        

    

        

发布了42 篇原创文章 · 获赞 0 · 访问量 169

猜你喜欢

转载自blog.csdn.net/qq_43169516/article/details/104005497
今日推荐