猜牌游戏的python代码_python打牌游戏的发牌程序

本文介绍了使用Python编程实现猜牌游戏的类设计,包括Card类(表示牌)、Hand类(表示牌手)、Poke类(表示一副牌)。Card类包含了牌的大小、花色和翻面状态,Hand类用于存储和展示牌,Poke类负责发牌。通过调用相关类的方法,完成牌的初始化、洗牌和发牌过程。
摘要由CSDN通过智能技术生成

定义牌的类

class Card():

""" A Playing Card """

ranks=["A","2","3","4","5","6","7","8","9","10","J","Q","K"]

suits=["梅","红","方","黑"]

def __init__(self,rank,suit,face_up=True):

self.rank=rank #牌的大小

self.suit=suit #牌的花色

self.is_face_up=face_up #牌是否翻面

def __str__(self):

if self.is_face_up:

rep=self.suit+self.rank

else:

rep="XX" #表示牌现在是盖着的

return rep

def flip(self):

self.is_face_up=not self.is_face_up

def pic_order(self): #记录牌的顺序

if self.rank=="A":

faceNum=1

elif self.rank=="J":

faceNum=11

elif self.rank=="Q":

faceNum=12

elif self.rank=="K":

faceNum=13

else:

faceNum=int(self.rank)

if self.suit=="方":

Suit=1

elif self.suit=="红":

Suit=2

elif self.suit=="黑":

Suit=3

else:

Suit=4

return (Suit-1)*13+faceNum

定义牌手类

class Hand():

""" A Hand Of Playing Cards """

def __init__(self):

self.cards=[]

def __str__(self):

if self.cards:

rep=""

for card in self.cards:

rep += str(card)+"\t"

else:

rep="无牌"

return rep

def clear(self):

self.cards=[]

def add(self,card):

self.cards.append(card)

def give(self,card,other_hand):

self.cards.remove(card)

other_hand.add(card)

定义一副牌的类

class Poke(Hand):

""" A Deck Of Playing Cards """

def populate(self): #发牌

for suit in Card.suits:

for rank in Card.ranks:

self.add(Card(rank,suit))

def shuffle(self):

import random

random.shuffle(self.cards)

def deal(self,hands,per_hand=13):

for rounds in range(per_hand):

for hand in hands:

top_card =self.cards[0]

self.cards.remove(top_card)

hand.add(top_card)

主程序

if __name__=="__main__":

print("This is a game of playing cards.")

players=[Hand(),Hand(),Hand(),Hand()]

poke1=Poke()

poke1.populate()

poke1.shuffle()

poke1.deal(players,13)

n=1

for hand in players:

print("牌手",n,end=":")

print(hand)

n=n+1

input("\nPress the enter key to exit.")

主要是定义各种各样的类,来后通过调用这些类以及其中的方法

效果图

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值