python自制扑克牌双人比大小游戏

游戏规则:玩家个数为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)

    
    
    
    
    

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值