这个步骤花了比较多的时间思考和调试,还是一个基础版本,有很大的优化空间
第一步:添加吃碰杠判断
麻将中最为基本的吃碰杠的判定,添加简单的判断逻辑
简单的说就是判断电脑的出牌,是否在手牌中,有相应关联的牌。
如碰,就是看手牌是否有存在与出牌两个相同的牌,有即为符合碰的条件。需注意,吃的判断有三种
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')