用python实现的简易记牌器的demo

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用python实现的简易记牌器的demo相关的知识,希望对你有一定的参考价值。

实现功能很简单:

初始时 1到10 以及 jkq各 4张,大小王 共两张

只要输入相应的牌号:1到10,例如 >>1     J、K、Q :例如>>j     >>大小王 

此时相应的牌的数目会减少1

由此可以看出斗地主时候别人手里的牌还剩哪些。

 

上原始代码,没有做GUI,这个只是一个演示的demo:

#有1——10、J、Q、K各四张以及大小王,现在初始除了大小王以外均为4张,每次输入一个就会减少一。


def init(num,j,k,q,king):
    num.append(0)
    for i in range(10):
        num.append(4)
    king = 2
    j = k = q = 4
    return (num,j,k,q,king)


def judge_num(instruct,num,j,k,q,king):
    if instruct == 1:
        num[1] = num[1] - 1
    if instruct == 2:
        num[2] = num[2] - 1
    if instruct == 3:
        num[3] = num[3] - 1
    if instruct == 4:
        num[4] = num[4] - 1
    if instruct == 5:
        num[5] = num[5] - 1
    if instruct == 6:
        num[6] = num[6] - 1
    if instruct == 7:
        num[7] = num[7] - 1
    if instruct == 8:
        num[8] = num[8] - 1
    if instruct == 9:
        num[9] = num[9] - 1
    if instruct == 10:
        num[10] = num[10] - 1
    if instruct == j or instruct == J:
        j = j - 1
    if instruct == k or instruct == K:
        k = k - 1
    if instruct == q or instruct == Q:
        q = q - 1
    if instruct == 大小王:
        king =king - 1
    if instruct == 复位 or instruct == 重新开始 or instruct == 重启:
        (num,j,k,q,king) = init(num,j,k,q,king)
    return (num,j,k,q,king)
    

    print(此时【牌1】的数目为【%d】\\n此时【牌2】的数目为【%d】\\n此时【牌3】的数目为【%d】\\n此时【牌4】的数目为【%d】\\n此时【牌5】的数目为【%d】\\n此时【牌6】的数目为【%d】\\n此时【牌7】的数目为【%d】\\n此时【牌8】的数目为【%d】\\n此时【牌9】的数目为【%d】\\n此时【牌10】的数目为【%d】\\n %(num[1],num[2],num[3],num[4],num[5],num[6],num[7],num[8],num[9],num[10]))
    print(此时【牌J】的数目为【%d】\\n此时【牌Q】的数目为【%d】\\n此时【牌K】的数目为【%d】\\n此时【大小王】的数目为【%d】\\n %(j,q,k,king))

      
‘‘‘    
def main():
    print(‘请按以下格式输入:\\n‘)
    print(‘如果需要对某张牌进行减法计数,就输入对应的牌数:\\n格式为:\\n【1】牌0到10就输入数字0到10\\n【2】大小王请输入"大小王",大小王一块计数\\n【3】如果需要重新开始,请输入"复位"或者"重新开始"或者"重启"。‘)
    print(‘此时【牌1】的数目为【%d】\\n此时【牌2】的数目为【%d】\\n此时【牌3】的数目为【%d】\\n此时【牌4】的数目为【%d】\\n此时【牌5】的数目为【%d】\\n此时【牌6】的数目为【%d】\\n此时【牌7】的数目为【%d】\\n此时【牌8】的数目为【%d】\\n此时【牌9】的数目为【%d】\\n此时【牌10】的数目为【%d】\\n‘ %(num[1],num[2],num[3],num[4],num[5],num[6],num[7],num[8],num[9],num[10]))
    print(‘此时【牌J】的数目为【%d】\\n此时【牌Q】的数目为【%d】\\n此时【牌K】的数目为【%d】\\n此时【大小王】的数目为【%d】\\n‘ %(j,q,k,king))
    instruct = input(‘请输入对面已经出过的牌数:‘)
    (num,num_dict)= judge_num(instruct,num,num_dict)
‘‘‘

if __name__ == __main__:   
    num = list()
    j = k = q = king = 0
    (num,j,k,q,king) = init(num,j,k,q,king)
    while True:
        print(请按以下格式输入:\\n)
        print(如果需要对某张牌进行减法计数,就输入对应的牌数:\\n格式为:\\n【1】牌0到10就输入数字0到10\\n【2】大小王请输入"大小王",大小王一块计数\\n【3】如果需要重新开始,请输入"复位"或者"重新开始"或者"重启"。)
        print(此时【牌1】的数目为【%d】\\n此时【牌2】的数目为【%d】\\n此时【牌3】的数目为【%d】\\n此时【牌4】的数目为【%d】\\n此时【牌5】的数目为【%d】\\n此时【牌6】的数目为【%d】\\n此时【牌7】的数目为【%d】\\n此时【牌8】的数目为【%d】\\n此时【牌9】的数目为【%d】\\n此时【牌10】的数目为【%d】\\n %(num[1],num[2],num[3],num[4],num[5],num[6],num[7],num[8],num[9],num[10]))
        print(此时【牌J】的数目为【%d】\\n此时【牌Q】的数目为【%d】\\n此时【牌K】的数目为【%d】\\n此时【大小王】的数目为【%d】\\n %(j,q,k,king))
        instruct = input(请输入对面已经出过的牌数:)
        (num,j,k,q,king)= judge_num(instruct,num,j,k,q,king)

    

演示demo的效果:

技术分享

这个只是一时兴起写的,很简陋的实现记牌数的功能,以后有空可以将其做成界面好看一点的web应用。

接下来真的匿了,专心期末了。

 

以上是关于用python实现的简易记牌器的demo的主要内容,如果未能解决你的问题,请参考以下文章

[视觉] 基于YoloV3的实时摄像头记牌器

斗地主老是输?一起用Python做个AI出牌器,欢乐豆蹭蹭涨!

python opencv 人体/人脸识别 简易demo

python opencv 人体/人脸识别 简易demo

python opencv 人体/人脸识别 简易demo

斗地主老是输?一起用Python做个自动出牌器,欢乐豆蹭蹭涨!