鱼C论坛

 找回密码
 立即注册
查看: 2291|回复: 1

用python模拟斗地主发牌过程

[复制链接]
发表于 2022-4-4 17:46:33 | 显示全部楼层 |阅读模式
37鱼币
本帖最后由 yangbaowen 于 2022-4-4 23:07 编辑

要求:(1)三人制斗地主,每人17张牌,留有三张底牌。
(2)大小顺序:大小王,2,A,以及K到3(3为最小)。
(3)同一大小的牌按照黑桃,红桃,梅花,方块的顺序排列。
(4)最后展示出3个玩家的牌,以及底牌。

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-4-4 19:07:06 | 显示全部楼层
本帖最后由 yangbaowen 于 2022-4-4 19:09 编辑
  1. order = 1         #代表牌的排列顺序
  2. Player_Num = 3   #代表玩家数目
  3. N = 54
  4. times = 1
  5. leftover = 3           #代表给地主留的底牌数目








  6. import random
  7. card0 = list(range(0,N))
  8. card0 = card0*times
  9. #print(card0)
  10. schar = '♠♥♣♦🃏🃏'
  11. card1 = []
  12. left = N*times
  13. for i in range(N*times):
  14.     rdi = random.randint(0,left-1)
  15.     card1.append(card0[rdi])
  16.     card0.pop(rdi)
  17.     left-=1
  18.     if left==0:
  19.         break
  20. #print(card1)
  21. Player = []
  22. for i in range (Player_Num):
  23.     Player.append([])
  24. for i in range (N*times - leftover):
  25.     Player[i%Player_Num].append(card1[i])
  26. Player.append([])
  27. for i in range (N*times-leftover,N*times):
  28.     Player[Player_Num].append(card1[i])
  29. for i in range(Player_Num + 1):
  30. #print(Player[i])
  31.   card_output = []
  32. for i in range (Player_Num + 1):
  33.     card_output.append([])
  34. for i in range(Player_Num + 1):
  35.     for j in range(len(Player[i])):
  36.         if Player[i][j] == 53 or Player[i][j] == 52:
  37.             card_output[i].append(str(schar[Player[i][j]%2 + 4]).rjust(3))
  38.         else:
  39.             cardnumber = (Player[i][j] // 4 + 2)%13 + 1
  40.             cardflower =3-Player[i][j] % 4
  41.             if cardnumber == 1:
  42.                 card_output[i].append('A'.rjust(2)+str(schar[cardflower]))
  43.             elif cardnumber == 11:
  44.                 card_output[i].append('J'.rjust(2)+str(schar[cardflower]))
  45.             elif cardnumber == 12:
  46.                 card_output[i].append('Q'.rjust(2)+str(schar[cardflower]))
  47.             elif cardnumber == 13:
  48.                 card_output[i].append('K'.rjust(2)+str(schar[cardflower]))
  49.             else:
  50.                 card_output[i].append(str(cardnumber).rjust(2)+str(schar[cardflower]))
  51. #print(card_output)
  52. for i in range (Player_Num):
  53.     print('玩家{:>2}的手牌为:'.format(i+1),''.join(card_output[i]))
  54. print('剩余的{}张底牌为:'.format(leftover),''.join(card_output[Player_Num]))   
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-29 08:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表