德州撲克
4種花色 每個花色的牌從A-K
功能如下:
1.洗牌:將52張牌打亂
2.發牌:洗牌結束后,發給玩家五張牌
3.驗證玩家的牌型
牌型分以下幾種
A.同花順
B.同花
C.順子
D.四條(7777x)
E.三條(777xx)
F.一對(77xxx)
G.兩對(7788x)
H.滿堂紅(77788)三條帶一對子
I.正常牌(24567)
1 import random 2 import time 3 4 # 創建一副牌 5 card_list = [] 6 for i in ['A', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K']: 7 for j in ['黑桃', '紅桃', '方塊', '梅花']: 8 card = j + str(i) 9 card_list.append(card) 10 11 # 加載進度動畫 12 fmt = '{:3d} [{:<20}]'.format 13 14 15 def progressbar(): 16 for n in range(21): 17 time.sleep(0.1) 18 print('\r', fmt(n * 5, '=' * n), end='') 19 20 21 # 洗牌 22 def shuffle(): 23 random.shuffle(card_list) 24 progressbar() 25 print('\n' + '洗牌完成') 26 print(card_list) 27 28 29 # 發牌 30 def deal(): 31 print('發給你的牌為:') 32 time.sleep(1) 33 print(card_list[0:5]) 34 time.sleep(1) 35 36 37 # 判斷牌 38 def showdown(): 39 color = [] 40 size = [] 41 # 提取五張牌的花色 42 for k in range(1, 6): 43 color.append(str(card_list[k - 1][0:2])) 44 # 提取五張牌的大小 45 for h in range(1, 6): 46 size5 = str(card_list[h - 1][2:len(card_list[h - 1])]) 47 if size5 == "J": 48 size5 = 11 49 elif size5 == "Q": 50 size5 = 12 51 elif size5 == "K": 52 size5 = 13 53 elif size5 == "A": 54 size5 = 1 55 size.append(int(size5)) 56 57 size_set = list(set(size)) 58 59 # 判斷牌 60 while color[0] == color[1] == color[2] == color[3] == color[4]: 61 if max(size) - min(size) == 4: 62 print("同花順") 63 break 64 print('同花') 65 break 66 else: 67 if size == list(set(size)) and max(size) - min(size) == 4: 68 print('順子') 69 elif len(size) - 1 == len(size_set): 70 print('一對') 71 elif len(size) - 2 == len(size_set): 72 for a in range(0, 5): 73 for b in range(0, 3): 74 if size[a] == size_set[b]: 75 size[a] = 0 76 size_set[b] = 0 77 last = [x for x in size if x != 0] 78 if last[0] == last[1]: 79 print('三條') 80 else: 81 print('兩對') 82 elif len(size) - 3 == len(size_set): 83 for a in range(0, 5): 84 for b in range(0, 2): 85 if size[a] == size_set[b]: 86 size[a] = 0 87 size_set[b] = 0 88 last = [x for x in size if x != 0] 89 if last[0] == last[1] == last[2]: 90 print('四條') 91 else: 92 print('滿堂紅') 93 else: 94 print('正常牌') 95 96 97 if __name__ == "__main__": 98 # 准備 99 print('這兒有一副牌:') 100 time.sleep(1) 101 print(card_list) 102 time.sleep(1) 103 print('開始洗牌') 104 105 # 洗牌 106 shuffle() 107 108 # 發牌 109 deal() 110 111 # 亮牌 112 showdown()