扑克牌游戏-比大小(类学习)
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): # suit和value值都为整数型 self.value=v self.suit=s def __lt__(self,c2): #比较2张牌的方法,覆盖类Object小于方法 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): #比较2张牌的方法,大于 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.values[self.value]+" of "+self.suits[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 #牌堆里没有牌则返回None 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="{} wins this round.".format(winner) print(w) def draw(self,p1n,p1c,p2n,p2c): d="{} drew {} {} drew {}".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.p1.name) else: self.p2.wins+=1 self.wins(self.p2.name) win=self.winner(self.p1,self.p2) if win=="It was a tie!": print(win) else: 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()