鱼C论坛

 找回密码
 立即注册
查看: 888|回复: 7

怎么制作一副扑克牌

[复制链接]
发表于 2018-12-8 12:04:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
怎么制作一副扑克牌,并进行洗牌发牌
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-8 12:31:30 | 显示全部楼层
  1. import random as r


  2. class Poker:

  3.     def __init__(self):

  4.         # 52张牌组成的列表(大小王除外)
  5.         self.poker = ["♠ 2", "♠ 3", "♠ 4", "♠ 5", "♠ 6", "♠ 7", "♠ 8", "♠ 9",
  6.                       "♠ 10", "♠ J", "♠ Q", "♠ K", "♠ A",
  7.                       "♥ 2", "♥ 3", "♥ 4", "♥ 5", "♥ 6", "♥ 7", "♥ 8", "♥ 9",
  8.                       "♥ 10", "♥ J", "♥ Q", "♥ K", "♥ A",
  9.                       "♣ 2", "♣ 3", "♣ 4", "♣ 5", "♣ 6", "♣ 7", "♣ 8", "♣ 9",
  10.                       "♣ 10", "♣ J", "♣ Q", "♣ K", "♣ A",
  11.                       "♦ 2", "♦ 3", "♦ 4", "♦ 5", "♦ 6", "♦ 7", "♦ 8", "♦ 9",
  12.                       "♦ 10", "♦ J", "♦ Q", "♦ K", "♦ A"
  13.                       ]

  14.     def shuffle(self):
  15.         """
  16.         洗牌方法(Fisher-Yates费雪耶兹算法):
  17.         1、在0 ~ N之间随机一个整数 i,交换self.poker[i]的牌和最后一张牌的位置;
  18.         2、下一次在 0 ~ N-1之间随机一个整数 i,将self.poker[i]与最后一张牌交换
  19.            位置,依此类推直到最后一张牌;
  20.         3、从而打乱牌序
  21.         """

  22.         # 有多少张牌就循环多少次
  23.         loop = len(self.poker)
  24.         spot = 1
  25.         while loop:
  26.             # 随机位置的牌始终与最后的牌做位置交换,直到循环结束。
  27.             i = r.randint(0, len(self.poker) - spot)
  28.             self.poker[i], self.poker[
  29.                 len(self.poker) - 1] = self.poker[
  30.                 len(self.poker) - 1], self.poker[i]
  31.             loop -= 1
  32.             spot += 1
  33.         return self.poker[:]

  34.     # 发牌方法:先发给电脑,然后发给你,再发公开牌
  35.     def deal(self):
  36.         poker = Poker()
  37.         chaos = poker.shuffle()
  38.         computer = []
  39.         your = []
  40.         opencard = []
  41.         loop = 5
  42.         while loop:
  43.             computer.append(chaos.pop())
  44.             your.append(chaos.pop())
  45.             opencard.append(chaos.pop())
  46.             loop -= 1
  47.         print("电脑牌  ", computer)
  48.         print("你的牌  ", your)
  49.         print("组合牌  ", opencard)


  50. p = Poker()
  51. p.deal()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-8 12:42:14 | 显示全部楼层
看玩的是什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-8 13:04:44 | 显示全部楼层
用硬卡纸剪一副
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-8 15:47:58 | 显示全部楼层
  1. import random as r
  2. cards = [x + y for x in '♤♡♢♧' for y in ['A', 'K', 'Q', 'J'] + [ str(i) for i in range( 10, 1, -1)]] #生成52张牌
  3. newcards =cards[:] #将52张顺序的牌做副本
  4. r.shuffle(newcards) #将牌打乱
  5. player = [[], [], [], []] #分成4个玩家
  6. for i in range(4):
  7.     player[i] = newcards[i * 13: i * 13 +13] #每人去13张牌
  8.     player[i].sort(key = lambda x: cards.index(x)) #将每人的牌按花色和大小排序
  9.     print('player', i + 1, ':')
  10.     print(' '.join(player[i]))
复制代码
#输出答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-8 20:21:50 | 显示全部楼层

♤♡♢&#9831这个是什么意思呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-8 20:27:30 | 显示全部楼层
本帖最后由 冬雪雪冬 于 2018-12-8 20:30 编辑
fan1993423 发表于 2018-12-8 20:21
♤♡♢&#9831这个是什么意思呢

1.jpg
显示在论坛中就是这样了。
>>> chr(9824)
'♠'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-8 20:48:17 | 显示全部楼层
刚刚才注意到,扑克牌花色的字符无法在论坛显示,程序改成中文表示了。
  1. import random as r
  2. cards = [x + y for x in ['黑桃', '红心', '方块', '梅花']  for y in ['A', 'K', 'Q', 'J'] + [ str(i) for i in range( 10, 1, -1)]] #生成52张牌
  3. newcards =cards[:] #将52张顺序的牌做副本
  4. r.shuffle(newcards) #将牌打乱
  5. player = [[], [], [], []] #分成4个玩家
  6. for i in range(4):
  7.     player[i] = newcards[i * 13: i * 13 +13] #每人去13张牌
  8.     player[i].sort(key = lambda x: cards.index(x)) #将每人的牌按花色和大小排序
  9.     print('player', i + 1, ':')
  10.     print(' '.join(player[i]))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 01:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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