用 python 实现简单AI 双人日麻(文字版)之四 建立吃碰系统

这个步骤花了比较多的时间思考和调试,还是一个基础版本,有很大的优化空间

第一步:添加吃碰杠判断

麻将中最为基本的吃碰杠的判定,添加简单的判断逻辑

简单的说就是判断电脑的出牌,是否在手牌中,有相应关联的牌。

如碰,就是看手牌是否有存在与出牌两个相同的牌,有即为符合碰的条件。需注意,吃的判断有三种

def check_peng(a:list,b:int):    #a为手牌,b为对家出牌
    mingpai=[]    #mingpai为记录符合条件的鸣牌。因为很多情况会出现可以碰同时可以吃的情况
    if a.count(b) >= 2:
        mingpai.append("碰")
        if a.count(b) == 3:
            mingpai.append("杠")
    if b-1 in a and b-2 in a :
        mingpai.append("吃1")
    if b-1 in a and b+1 in a:
        mingpai.append("吃2")
    if b+1 in a and b+2 in a:
        mingpai.append("吃3")

第二步:添加对吃碰杠的处理

符合吃碰条件,就要进行吃碰刚处理,既然是文字版本。就只能让玩家通过输入1,2,3数字的方式来选择吃碰

首先是确认是否有鸣牌,

    if mingpai != []:
        mingpai.append("取消")
        for i in range(1,len(mingpai)+1):
            if mingpai[i-1] == "碰":
                print(i, '..碰',b,b,mingpai[i - 1],'\n')
            if mingpai[i-1] =="杠":
                print(i, '..杠',b,b,b,mingpai[i - 1],'\n')
            if mingpai[i-1] == "吃1":
                print(i,'..吃',b - 2,'..',b - 1,'..',b,'\n')
            if mingpai[i-1] == "吃2":
                print(i, '..吃', b - 1,'..', b ,'..',b + 1,'\n')
            if mingpai[i-1] == "吃3":
                print(i, '..吃',b ,'..', b + 1,'..', b + 2,'\n')
            if mingpai[i-1] == "取消":
                print(i, '..取消','\n')
        #print(mingpai)

再对响应的鸣牌,进行数据处理

        while 1:
            try:
                inputnum = int(input("输入对应吃碰扛数字,输入其他数字,则视为取消,\n"))
            except  :print('请输入数字,\n')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值