用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應用。

接下來真的匿了,專心期末了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM