要求:
编写一个程序,完成以下功能。
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)
在这些代码基础上,还可实现斗地主的出牌等功能,不过较复杂,就没有继续了