Python写打麻将程序

开篇语

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

麻将

正文

代码如下:

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()
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

学校的网速只是虚高而已啊!!!
猜猜我在看啥~~ ~~

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

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

个人宣言

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,641评论 25 708
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,632评论 1 118
  • C++调用python 在C/C++中嵌入Python,可以使用Python提供的强大功能,通过嵌入Python可...
    Bruce_Szh阅读 13,849评论 1 7
  • 还有不到三个小时,爱人又要踏上回京的火车。一夜,他有心事,我很疲惫(每一天到晚上就疲惫不堪),于是乎,快天亮时自己...
    漫漫无忧阅读 10,685评论 16 10
  • 170113@D10.感恩冥想 [Rose]佩诗 。感恩金刚智慧和慈悲伟大的格西老师 。感恩DCI老师的大爱及用心...
    AllisonSim阅读 159评论 0 0