游戏规则:玩家个数为2,将54张扑克牌随机均匀分成两份,两位玩家各执一份作为手牌,玩家洗牌后从上往下分别抽取手牌的顶层第一张进行比大小,谁的牌点数大谁将赢得场上的所有牌,若玩家出的牌点数一样,则继续出牌,直到分出结果或有一方手牌用完且没有存牌(玩家赢下每一轮牌后,将牌放到旁边,记为存牌),若有一方的手牌用完,则将存牌洗牌后作为新的手牌,直到有一方的手牌用完且没有存牌,游戏结束,赢下所有牌的玩家获得胜利。特别注意:该游戏来源于小时候的真实游戏,11、12、13、14、15分别代表扑克牌里的J、Q、K、小王、大王,理论上14、15为最大值,但在该游戏里4可以赢下14和15.
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
import random
import time
#洗牌,要求arr2为空列表
def shuffleCards(arr1,arr2):
for i in range(len(arr1)):
x=random.randint(0,len(arr1)-1)
arr2.append(arr1[x])
arr1.pop(x)
#初始分为两堆一样多的牌
cards=[1,2,3,4,5,6,7,8,9,10,11,12,13]*4
cards.extend([14,15])
allCard=list()
shuffleCards(cards,allCard)
#cardA为玩家1的手牌,cardB为玩家2的手牌
cardA=allCard[:27]
cardB=allCard[27:]
print("玩家1拿到的牌是:")
for i in cardA:
print(i,end=' ')
time.sleep(2)
print("\n玩家2拿到的牌是:")
for i in cardB:
print(i,end=' ')
time.sleep(2)
print()
#cardX存储玩家1赢到的牌,cardY存储玩家2赢到的牌,cardZ存储玩家1、玩家2出牌相等时候的牌
cardX=list()
cardY=list()
cardZ=list()
count=0
print("游戏开始!")
time.sleep(2)
while (len(cardA)+len(cardX))!=54 and (len(cardB)+len(cardY))!=54:
for i in range(len(cardA) if(len(cardA)<len(cardB)) else len(cardB)):
if cardA[-1]==4 and cardB[-1]==14:
print("玩家1出的牌是:",cardA[-1])
time.sleep(1)
print("玩家2出的牌是:",cardB[-1])
time.sleep(1)
print("卧槽,玩家1用4抬走了玩家2的小王!")
time.sleep(1)
cardX.extend([cardA[-1],cardB[-1]])
cardX.extend(cardZ)
cardA.pop()
cardB.pop()
cardZ=[]
elif cardA[-1]==4 and cardB[-1]==15:
print("玩家1出的牌是:",cardA[-1])
time.sleep(1)
print("玩家2出的牌是:",cardB[-1])
time.sleep(1)
print("卧槽,玩家1用4抬走了玩家2的大王!")
time.sleep(1)
cardX.extend([cardA[-1],cardB[-1]])
cardX.extend(cardZ)
cardA.pop()
cardB.pop()
cardZ=[]
elif cardB[-1]==4 and cardA[-1]==14:
print("玩家1出的牌是:",cardA[-1])
time.sleep(1)
print("玩家2出的牌是:",cardB[-1])
time.sleep(1)
print("卧槽,玩家2用4抬走了玩家1的小王!")
time.sleep(1)
cardY.extend([cardA[-1],cardB[-1]])
cardY.extend(cardZ)
cardA.pop()
cardB.pop()
cardZ=[]
elif cardB[-1]==4 and cardA[-1]==15:
print("玩家1出的牌是:",cardA[-1])
time.sleep(1)
print("玩家2出的牌是:",cardB[-1])
time.sleep(1)
print("卧槽,玩家2用4抬走了玩家1的大王!")
time.sleep(1)
cardY.extend([cardA[-1],cardB[-1]])
cardY.extend(cardZ)
cardA.pop()
cardB.pop()
cardZ=[]
elif cardA[-1]>cardB[-1]:
print("玩家1出的牌是:",cardA[-1])
time.sleep(1)
print("玩家2出的牌是:",cardB[-1])
time.sleep(1)
print("玩家1赢下了这些牌!")
time.sleep(1)
cardX.extend([cardA[-1],cardB[-1]])
cardX.extend(cardZ)
cardA.pop()
cardB.pop()
cardZ=[]
elif cardA[-1]<cardB[-1]:
print("玩家1出的牌是:",cardA[-1])
time.sleep(1)
print("玩家2出的牌是:",cardB[-1])
time.sleep(1)
print("玩家2赢下了这些牌!")
time.sleep(1)
cardY.extend([cardA[-1],cardB[-1]])
cardY.extend(cardZ)
cardA.pop()
cardB.pop()
cardZ=[]
elif cardA[-1]==cardB[-1]:
print("玩家1出的牌是:",cardA[-1])
time.sleep(1)
print("玩家2出的牌是:",cardB[-1])
time.sleep(1)
print("巧了,玩家1与玩家2出的牌是一样的,让我们看他们接下来的表现!")
time.sleep(1)
cardZ.extend([cardA[-1],cardB[-1]])
cardA.pop()
cardB.pop()
if len(cardA)+len(cardX)==0:
cardY.extend(cardZ)
elif len(cardB)+len(cardY)==0:
cardX.extend(cardZ)
if cardA==[]:
print("玩家1的手牌用完了,玩家1进行新一轮的洗牌。")
time.sleep(3)
if len(cardX)!=0:
print("洗牌结束,玩家1现在手里有",len(cardX),"张牌。")
time.sleep(1)
elif len(cardX)==0:
print("玩家1已经没有牌可以用了!")
time.sleep(1)
shuffleCards(cardX,cardA)
if cardB==[]:
print("玩家2的手牌用完了,玩家2进行新一轮的洗牌。")
time.sleep(3)
if len(cardY)!=0:
print("洗牌结束,玩家2现在手里有",len(cardY),"张牌。")
time.sleep(1)
elif len(cardY)==0:
print("玩家2已经没有牌可以用了!")
time.sleep(1)
shuffleCards(cardY,cardB)
count+=1
if len(cardA)+len(cardX)==54:
print("游戏结束,恭喜玩家1赢下了这场游戏!")
time.sleep(1)
else:
print("游戏结束,恭喜玩家2赢下了这场游戏!")
time.sleep(1)
print('\n整个游戏的迭代次数为:',count)