python模拟斗地主(@classmethod的用法)

1.代码如下:

import random

class Poke():

poke = [] # 扑克牌牌堆

p1 = [] # 玩家一牌堆

p2 = [] # 玩家二牌堆

p3 = [] # 玩家三牌堆

last = None # 底牌牌堆

def init(self,f,num): # 初始化牌堆

self.flower = f # 花色

self.num = num # 点数

def str(self):

return “%s%s” % (self.flower,self.num) # 返回牌值

@classmethod

def init(cls): # 定义牌堆

ph = (“♥”,“♠”,“♣”,“♦”) # 花色元组

pnum = (“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“J”,“Q”,“K”,“A”) # 点数元组

king = {“big”:“大王”,“small”:“小王”} # 大小王

for p in ph: # 循环遍历花色

for _nump in pnum: # 循环遍历点数

cls.poke.append(Poke(p,_nump)) # 装牌

cls.poke.append(Poke(king[“big”],"")) # 装大王

cls.poke.append(Poke(king[“small”],"")) # 装小王

@classmethod

def wash(cls): # 洗牌

random.shuffle(cls.poke)

@classmethod

def send(cls): # 发牌

for _ in range(0,17): # 三个人每人发17张牌

cls.p1.append(cls.poke.pop(0)) # 玩家一发牌

cls.p2.append(cls.poke.pop(0))

cls.p3.append(cls.poke.pop(0))

cls.last= tuple(cls.poke) # 最后三张牌做底牌

@classmethod

def show(cls): # 展示牌

print(“玩家1:”)

for pokes in cls.p1:

print(pokes,end = " “)

print()

print(“玩家2:”)

for pokes in cls.p2:

print(pokes, end=” “)

print()

print(“玩家3:”)

for pokes in cls.p3:

print(pokes, end=” “)

print()

print(“底牌:”)

for pokes in cls.last:

print(pokes, end=” ")

print()

Poke.init()

Poke.wash()

Poke.send()

Poke.show()

2.结果显示如下:

玩家1:

♠7 ♦J ♦A ♦6 ♥A ♦10 ♦K ♣2 ♣7 小王 ♣10 ♦3 ♥2 ♣A ♥8 ♥5 ♣4

玩家2:

♦4 ♠2 ♠3 ♠K ♦Q ♠4 ♠J ♣6 ♥9 ♦7 大王 ♠6 ♣Q ♥Q ♣9 ♥6 ♠10

玩家3:

♠A ♥4 ♠9 ♣3 ♦8 ♣J ♠Q ♠8 ♥K ♦5 ♥7 ♥3 ♣8 ♣K ♥J ♦9 ♥10

底牌:

♦2 ♣5 ♠5

此段代码来自七月在线习题讲解。

你可能感兴趣的:(python模拟斗地主(@classmethod的用法))