利用python写出德州扑克小游戏

利用python写出德州扑克小游戏(与小伙伴一起在电脑上一起打德普!)

德州扑克简要介绍

什么是德州扑克

德州扑克不知道大家是否玩过,它是起源于美国的得克萨斯州的一种博弈类卡牌游戏,英文名叫做Texas Hold’em Poker。玩法上又分为常规桌(Cash, 现金局),单桌赛(SNG)和多桌锦标赛(MTT)。虽然扑克种类繁多,但基本的扑克规则通常保持一致。它是一种考验心态与谋略的游戏。

游戏规则简要介绍

一、使用道具

一副标准扑克牌去掉大小王后的52张牌进行游戏。

二、游戏人数

一般2-10个玩家,个别情况有12个玩家的。

三、游戏目的

赢取其他玩家筹码

四、下注宗旨

玩家之间同时继续看牌或比牌需要下同样注额筹码,筹码不足的玩家all-in全下后可以看到底并参与比牌。

五、发牌下注

发牌一般分为5个步骤,分别为,

Perflop——先下大小盲注,然后给每个玩家发2张底牌,大盲注后面第一个玩家选择跟注、加注或者盖牌放弃,按照顺时针方向,其他玩家依次表态,大盲注玩家最后表态,如果玩家有加注情况,前面已经跟注的玩家需要再次表态甚至多次表态。

Flop——同时发三张公牌,由小盲注开始(如果小盲注已盖牌,由后面最近的玩家开始,以此类推),按照顺时针方向依次表态,玩家可以选择下注、加注、或者盖牌放弃。

Turn——发第4张牌,由小盲注开始,按照顺时针方向依次表态。

River——发第五张牌,由小盲注开始,按照顺时针方向依次表态,玩家可以选择下注、加注、或者盖牌放弃。

比牌——经过前面4轮发牌和下注,剩余的玩家开始亮牌比大小,成牌最大的玩家赢取池底。

六、比牌方法

用自己的2张底牌和5张公共牌结合在一起,选出5张牌,不论手中的牌使用几张(甚至可以不用手中的底牌),凑成最大的成牌,跟其他玩家比大小。

比牌先比牌型,大的牌型大于小的牌型,牌型一般分为10种,从大到小为:
    
德州扑克的牌型大小

德州扑克游戏的python实现过程

游戏初始化

#调用random库中的sample函数,用于从卡牌堆中随机抽取卡牌
from random import sample

#利用列表存储卡牌的花色与数字
color = ['黑桃','红桃','梅花','方块']
number = ['2','3','4','5','6','7','8','9','10','J','Q','K','A']

导入random库中的sample函数,后续用于从卡牌堆中随机抽取卡牌。同时利用列表分别将卡牌的颜色与数字存储在color与number中。

#PokerGenerator函数用于生成一组卡牌
def PokerGenerator():
    #将卡牌存储于列表中
    Poker = []
    # 用字典表示卡牌,在Poker列表中添加52张空白的卡牌
    for i in range(0,52):
        t = {
   '数字':0,'花色':''}    
        Poker.append(t)
    #对每张卡牌进行赋值,每种花色各有13种花色,共四种花色,52张卡牌。  
    for i in range(0,52):
        Poker[i].update({
   '数字':number[i%13],'花色':color[i//13]})  
    #将存储有52张卡牌的列表Poker返回
    return Poker

函数PokerGenerator用于生成一副新的扑克牌,德州扑克所采用的扑克牌标准牌组,包含四种花色(‘黑桃’,‘红桃’,‘梅花’,‘方块’),每种花色有’2’到’A’等13张卡牌,共52张扑克,不包含大小王。

#根据玩家人数分发卡牌
def Pokerinitial(playersum):
    Playerpoker = []
    Poker = PokerGenerator()#初始化一副新的卡牌
    num = 52
    
    for i in range(0,playersum):
        Pripoker = sample(Poker,2)#从卡牌中随机抽取两张卡牌作为一名玩家的手牌
        Playerpoker.append(Pripoker)#所抽取的卡牌以元组形式假加入Playerpoker列表中,以Playerpoker的下标序号代表玩家的序号
        #将每位玩家所抽取的卡牌从卡牌堆中删除,即实现不放回抽样
        for n in [0,1]:
            for m in range(0,num):
                if Poker[m] == Pripoker[n]:
                    del Poker[m]
                    num -=1
                    break               
                
    Publicpoker = sample(Poker,3)#从牌堆中再抽取三张牌作为公共牌
    #将所抽取的公共牌从牌堆中删除
    for n in [0,1,2]:
            for m in range(0,num):
                if Poker[m] == Publicpoker[n]:
                    del Poker[m]
                    num -=
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值