python实现四人制扑克牌游戏
本文实例为大家分享了python实现四人制扑克牌游戏的具体代码,供大家参考,具体内容如下
题目:
设计一个简单的四人制扑克牌游戏,能够完成以下功能:
1.洗牌
2.发牌
3.自定义规则,在每轮单张出牌时,判定赢家
4.自定义规则,判定最终的赢家
规则简化版:
仅能出单张牌,且出牌时,每个人出的是自己手中牌中刚好能压过上家的最小牌,最先出完的为赢家
importrandom
fromrandomimportchoice
flower=['\u2660','\u2663','\u2665','\u2666']
pai=['3','4','5','6','7','8','9','10','J','Q','K','A','2']
list=[]
list0=[]#储存发的牌
list1=[]
list2=[]
list3=[]
value=[]
value0=[]#储存牌代表的值
value1=[]
value2=[]
value3=[]
l00=[]#储存进行升序排序后的牌
l11=[]
l22=[]
l33=[]
foriinflower:
forjinpai:
list.append(i+j)
foriinrange(4):
forjinrange(13):
value.append(j)
d=dict(zip(list,value))
foriinrange(13):
forjinrange(4):
if(j==0):
k=choice(list)#随机选牌
forxinrange(len(list)):
if(k==list[x]):#和链表的牌进行匹配,删掉对应项
value0.append(d[k])
list.pop(x)
break
list0.append(k)
if(j==1):
k=choice(list)
forxinrange(len(list)):
if(k==list[x]):
value1.append(d[k])
list.pop(x)
break
list1.append(k)
if(j==2):
k=choice(list)
forxinrange(len(list)):
if(k==list[x]):
value2.append(d[k])
list.pop(x)
break
list2.append(k)
if(j==3):
k=choice(list)
forxinrange(len(list)):
if(k==list[x]):
value3.append(d[k])
list.pop(x)
break
list3.append(k)
d0=dict(zip(list0,value0))#将每个人的牌转换为字典形式
d1=dict(zip(list1,value1))
d2=dict(zip(list2,value2))
d3=dict(zip(list3,value3))
l0=sorted(d0.values())#对牌所代表的数字进行排序
l1=sorted(d1.values())
l2=sorted(d2.values())
l3=sorted(d3.values())
#对发给每个人的牌进行排序
foriinrange(len(l0)):
forjinlist0:
if(l0[i]==d0[j]):
l00.append(j)
break
foriinrange(len(l1)):
forjinlist1:
if(l1[i]==d1[j]):
l11.append(j)
break
foriinrange(len(l2)):
forjinlist2:
if(l2[i]==d2[j]):
l22.append(j)
break
foriinrange(len(l0)):
forjinlist3:
if(l3[i]==d3[j]):
l33.append(j)
break
#y=choice(['0','1','2','3'])
print("第一个人的牌:",l00)
print("第二个人的牌:",l11)
print("第三个人的牌:",l22)
print("第四个人的牌:",l33)
y=random.randint(0,3)
if(y==0):
y=y+1
n=l0[0]
l0.pop(0)
elif(y==1):
y=y+1
n=l1[0]
l1.pop(0)
elif(y==2):
y=y+1
n=l2[0]
l2.pop(0)
elif(y==3):
y=0
n=l3[0]
l3.pop(0)
foriinrange(13):
if(y==0):
forjinrange(len(l0)):
if(l0[j]>n):
n=l0[j]
l0.pop(j)
if(len(l0)!=0andn>=l1[len(l1)-1]andn>=l2[len(l2)-1]andn>=l3[len(l3)-1]):#判断是否当前牌中最大牌,若是,则该此人继续出牌
n=l0[0]
l0.pop(0)
break
y=y+1
if(len(l0)==0):
print("赢家:第一个人")
break
if(y==1):
forjinrange(len(l1)):
if(l1[j]>n):
n=l1[j]
l1.pop(j)
if(len(l1)!=0andn>=l0[len(l0)-1]andn>=l2[len(l2)-1]andn>=l3[len(l3)-1]):
n=l1[0]
l1.pop(0)
break
y=y+1
if(len(l1)==0):
print("赢家:第二个人")
break
if(y==2):
forjinrange(len(l2)):
if(l2[j]>n):
n=l2[j]
l2.pop(j)
if(len(l2)!=0andn>=l0[len(l0)-1]andn>=l1[len(l1)-1]andn>=l3[len(l3)-1]):
n=l2[0]
l2.pop(0)
break
y=y+1
if(len(l2)==0):
print("赢家:第三个人")
break
if(y==3):
forjinrange(len(l3)):
if(l3[j]>n):
n=l3[j]
l3.pop(j)
if(len(l3)!=0andn>=l0[len(l0)-1]andn>=l1[len(l1)-1]andn>=l2[len(l2)-1]):
n=l3[0]
l3.pop(0)
break
y=0
if(len(l3)==0):
print("赢家:第四个人")
break
#将剩余牌从键值转化成牌
if(len(l0)!=0):
foriinrange(len(l0)):
forjinlist0:
if(l0[i]==d0[j]):
l0[i]=j
break
if(len(l1)!=0):
foriinrange(len(l1)):
forjinlist1:
if(l1[i]==d1[j]):
l1[i]=j
break
if(len(l2)!=0):
foriinrange(len(l2)):
forjinlist2:
if(l2[i]==d2[j]):
l2[i]=j
break
if(len(l3)!=0):
foriinrange(len(l3)):
forjinlist3:
if(l3[i]==d3[j]):
l3[i]=j
break
print("第一个人的牌:",l0)
print("第二个人的牌:",l1)
print("第三个人的牌:",l2)
print("第四个人的牌:",l3)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。