利用Python序列实现斗地主操作中的洗牌,发牌,切牌,理牌,随即地主简单功能

要求:
编写一个程序,完成以下功能。
1、建立一个序列,共54个元素,表示一副扑克牌,初始化时是有顺序的。
2、编写一段代码完成洗牌功能,即将刚才的序列从有序的排列变成随机的无序排列。
3、编写一段代码完成切牌功能,即找到一个1-54的随机数,将刚才洗牌后的序列从这个随机数开始。
4、编写一段代码完成发牌功能,将刚才这个切牌后的无序序列,按顺序分发到三个序列中去,并剩余三张底牌(也是一个序列)。
5、编写一段代码完成理牌功能,首先将分牌后的每个序列排序(有自带的函数),然后按照从大到小的顺序按牌型的方式显示出来。
6、完成随机叫地主功能,随机出现一个地主,将三张底牌分给这个地主,形成新的序列并且降序排列。
7、要显示出牌的名称,如:Spade2(黑桃2)、Heart2(红桃2)、Club2(梅花2)、Diamond2(方片2)等,也可以用缩写:S2、H2、C2、D2等。可以使用映射(即字典),也可以自行编写显示程序。

自己编写的,可能会有一些不足,勿喷!!
代码:

import random
import math
def Qiepai(Brand):
    Result=[]
    x = random.randint(0,54)  # 寻找一个随机数
    for i in range(54):
            if x<=53:
                Result.append(Brand[x])
                x=x+1
            if x>53:
                x=0
    return Resultdef Fapai(Brand):
    PlayerA=[]
    PlayerB = []
    PlayerC = []
    Dipai=[]
    i=0
    for j in range(1,19):
        if j<=17:
            PlayerA.append(Brand[i])
            PlayerB.append(Brand[i+1])
            PlayerC.append(Brand[i+2])
            i=i+3
        if j>17:
            Dipai.append(Brand[i])
            Dipai.append(Brand[i+1])
            Dipai.append(Brand[i+2])
    return PlayerA,PlayerB,PlayerC,Dipai'''def Zhuanhuan(Player):
    for i in range(17):
        Player[i][1]=int (Player[i][1])
    print (Player)'''def Jiaodizhu(A,B,C,D):
    value=random.randint(0,3)
    if value==0:
        print("PlayerA是地主!")
        #print(A)
        A.append(D[0])
        A.append(D[1])
        A.append(D[2])
        #print(A)
        A = sorted(A, key=lambda x: (x[1], x[0]), reverse=True)
        print(A)
    if value == 1:
        print("PlayerB是地主!")
        #print(B)
        B.append(D[0])
        B.append(D[1])
        B.append(D[2])
        #print(B)
        B = sorted(B, key=lambda x: (x[1], x[0]), reverse=True)
        print(B)
    if value == 2:
        print("PlayerC是地主!")
        #print(C)
        C.append(D[0])
        C.append(D[1])
        C.append(D[2])
        #print(C)
        C = sorted(C, key=lambda x: (x[1], x[0]), reverse=True)
        print(C)
Color=["黑桃","红桃","梅花","方片"]
Count=["A","2","3","4","5","6","7","8","9","10","J","Q","K"]
Brand=[]
for color in Color:                    #生成一副有序的扑克牌
    for count in Count:
        Brand.append((color,count))
Brand.append("大王")
Brand.append("小王")
#print(Brand)
random.shuffle(Brand)                   #打乱牌序
#print(Brand)                             #输出乱序的牌
Brand=Qiepai(Brand)                           #进行切牌
#   print("切牌")
#   print(Brand)
num=Fapai(Brand)#将Fapai()函数的多个返回值赋给num
#print(num)
PlayerA=num[0]                    #将函数Fapai()返回值,分别赋给A,B,C三个玩家和Dipai
PlayerB =num[1]
PlayerC =num[2]
Dipai=num[3]
#print(PlayerA)
#print(PlayerB)
#print(PlayerC)
#print(Dipai)
PlayerA=sorted(PlayerA,key=lambda x:(x[1],x[0]),reverse=True)               #对三位玩家的手牌进行排序
PlayerB=sorted(PlayerA,key=lambda x:(x[1],x[0]),reverse=True)
PlayerC=sorted(PlayerA,key=lambda x:(x[1],x[0]),reverse=True)
#print(PlayerA)
Jiaodizhu(PlayerA,PlayerB,PlayerC,Dipai)

在这些代码基础上,还可实现斗地主的出牌等功能,不过较复杂,就没有继续了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值