Python写打麻将程序

开篇语

哪怕有空也不想做正事,所觉得最近Python有点不熟悉了,就操起我的Python,直接怼了一个打麻将的小程序。虽然目前还是没有Debug完,不过好歹还是有个能用的东西,至于GUI什么的,暂时做不到啦。先把代码存这儿吧。有兴趣玩玩的朋友可以直接复制下去看看bug在哪啊,我明天就要出发准备去学校了。还是玩玩即可,不要太认真了。

《Python写打麻将程序》 麻将

正文

代码如下:

def Check(Card,win,Double):
    GetCard(Card)

    if CheckIfPeng(Card):
        Peng(Card,Double)

    if CheckIfWin(Card,Double):
        win=1
    else:
        OutputCard(Card)


def InputCard(Card):
    card=Card
    for i in range(1,14):
        print("来吧,一支一支的输入你的牌,让我给你看看手气:\n 1-9代表一万到九万\n 21-29代表一条到九条\n 51-59代表一坨到九坨\n")
        pai=input("第%s只\n"%i)
        card.append(pai)



def GetCard(Card):
    pai=input("抽牌吧,神奇的左手:")
    Card.append(pai)


def CheckIfPeng(Card):
    count=0
    for i in range(1,14):
        if Card[i]==Card[-1]:
            count=count+1
    if count>2:
        return 1
    else:
        return 0


def Peng(Card,Double):
    count=0
    for i in range(1,14):
        if Card[i]==Card[-1]:
            count=count+1
    if count>2:
        if Card[i]==Card[-1]:
            for i in range(1,count+1):
                Double.append(Card[-1])
                Card.pop(i)


def CheckIfWin(Card,Double):
    count=0
    shunzi=0
    SortCard=sorted(Card)
    for i in range(1,len(Card)+1):
        if SortCard[i]==SortCard[i+1]:
            count=count+1
    if count==1:
        for i in range(1,len(Card)+1):
            if SortCard[i]==SortCard[i+1]:
                SortCard.pop(i)
                SortCard.pop(i)
        for i in range(1,len(Double)+1):
            if SortCard[2+3*i]-SortCard[0+3*i]==2:
                shunzi=shunzi+1
        if shunzi==len(Double):
            return 1


def OutputCard(Card):
    SortCard=Card.sort()
    for i in range(1,len(Card)+1):
        if SortCard[i+2]-SortCard[i]!=2:
            if SortCard[i+1]-SortCard[i]!=1:
                if SortCard[i+1]-SortCard[i]!=2:
                    if (SortCard[i]%10)<3:
                        Card.remove(SortCard[i])

        
def main():
    Card=[]
    win=0
    Double=[]
    InputCard(Card)
    Check(Card,win,Double)
    while win==0:
        Check(Card,win)
        if len(Card)%3!=1:
            OutputCard(Card)
        if len(Card)%3!=1:
            OutputCard(Card)
        if len(Card)%3!=1:
            OutputCard(Card)
        if win==1:
            print("Congratulation! You are the winner")

main()

《Python写打麻将程序》 x效果图

把我的一手牌输进去之后,出现的就是这个报错的,原因不太明白。而且我也没有debug的心了。少小离家老大回。~~~~

报错提示如下,烦请路过大神指正指正:


第13只
28
抽牌吧,神奇的左手:23
Traceback (most recent call last):
  File "majiang.py", line 96, in <module>
    main()
  File "majiang.py", line 84, in main
    Check(Card,win,Double)
  File "majiang.py", line 7, in Check
    if CheckIfWin(Card,Double):
  File "majiang.py", line 55, in CheckIfWin
    if SortCard[i]==SortCard[i+1]:
TypeError: 'NoneType' object is not subscriptable

结束语

这次回家天天撸代码,突然觉得在家也很好,尤其是家里的网速特别给力,看超清的B站也丝毫不卡,十分给力。心塞,总算理解他们那些不愿意回学校的人了 T_T

《Python写打麻将程序》 学校的网速只是虚高而已啊!!!
《Python写打麻将程序》 猜猜我在看啥~~ ~~

好鸡儿舍不得。不过,刚刚把票改签到晚一点的时候了,可以后天再启程去宁乡了~ ~~ ~~

【铁路客服】订单E319XXXXXXXX,张照博您已签2月9日Z138次18车4号长沙16:19开。 有没有一辆车的呀?

个人宣言

知识传递力量,技术无国界,文化改变生活!

    原文作者:架构
    原文地址: https://www.jianshu.com/p/4d933693033b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞