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