建立网站需要多少钱一个,班级网站设计模板,怎么查到代码是哪个网站做的,北京vi设计公司北京广告设计公司斗地主发牌程序#xff1a; 模拟一个斗地主发牌程序#xff0c;实现对三个玩家进行手牌的派发#xff0c;实现功能#xff1a; ********** 欢迎进入 XX 斗地主 ********** 请输入玩家姓名#xff1a;用户控制台输入 A 请输入玩家姓名#xff1a;用户控制台输…斗地主发牌程序 模拟一个斗地主发牌程序实现对三个玩家进行手牌的派发实现功能 ********** 欢迎进入 XX 斗地主 ********** 请输入玩家姓名用户控制台输入 A 请输入玩家姓名用户控制台输入 B 请输入玩家姓名用户控制台输入 C 洗牌中... 洗牌完成! 发牌中... 发牌完成 A在这里展示 A 的所有手牌要求按照从小到大的顺序排序相同点数的情况下按照 黑桃 红桃 方片 梅花 的大小关系排列 B在这里展示 B 的所有手牌要求按照从小到大的顺序排序相同点数的情况下按照 黑桃 红桃 方片 梅花 的大小关系排列 C在这里展示 C 的所有手牌要求按照从小到大的顺序排序相同点数的情况下按照 黑桃 红桃 方片 梅花 的大小关系排列 谁叫地主 用户控制台输入 A 地主牌在这里展示地主牌要求按照从小到大的顺序排序相同点数的情况下按照 黑桃 红桃 方片 梅花 的大小关系排列 A在这里展示 A 的所有手牌要求按照从小到大的顺序排序相同点数的情况下按照 黑桃 红桃 方片 梅花 的大小关系排列 B在这里展示 B 的所有手牌要求按照从小到大的顺序排序相同点数的情况下按照 黑桃 红桃 方片 梅花 的大小关系排列 C在这里展示 C 的所有手牌要求按照从小到大的顺序排序相同点数的情况下按照 黑桃 红桃 方片 梅花 的大小关系排列 解题思路 1. 需要准备一副扑克牌 a. 一副扑克牌本身就是一个数据容器其中存储了54个扑克牌对象 b. 扑克牌类需要具有的属性和方法 ⅰ. 属性点数、花色 ⅱ. 功能显示将自己的点数和花色拼接成一个字符串返回可以比较大小 c. 扑克牌的点数和花色的类型 ⅰ. 问题无法直接通过字符串比较大小 ⅱ. 解决自定义数据类型包含两个属性呈现效果权重 d. 顺序生成54张牌 e. 洗牌 2. 发牌 a. 遍历牌堆依次给每一个玩家发牌 b. 【偷懒】切片切17张牌给到玩家 import randomclass Poker:def __init__(self, suit, color, suit_weight, color_weight):self.suit suitself.color colorself.suit_weight suit_weightself.color_weight color_weightdef __repr__(self):if self.color ! None:return f{self.suit}{self.color}else:return f{self.suit}def initPoker():poker_list []for i in range(1, 14):suit Nonesuit_weight iif i 1:suit Asuit_weight 12elif i 2:suit 2suit_weight 13elif i 11:suit_weight 9suit Jelif i 12:suit_weight 10suit Qelif i 13:suit_weight 11suit Kelse:suit_weight i - 2suit ifor k in range(1, 5):color Nonecolor_weight kmatch k:case 1:color ♠case 2:color ♥case 3:color ♣case 4:color ♦poker_list.append(Poker(suit, color, suit_weight, color_weight))poker_list.append(Poker(大王, None, 100, None))poker_list.append(Poker(小王, None, 99, None))return poker_listdef getThreePlayerName():# 输入三个玩家的名字s1 set()while True:p1 input(请输入第一个玩家的名字:)p2 input(请输入第二个玩家的名字:)p3 input(请输入第三个玩家的名字:)s1.add(p1)s1.add(p2)s1.add(p3)if len(s1) 3:print(输入的玩家有重名的请重新输入!)continueelse:return p1, p2, p3class Player:def __init__(self, name):self.name nameself.poker_list list()def __repr__(self):return f{self.name}# 发牌方法def send_pokers(self, poker_list: list[Poker], player_list: list[Player]):for i in range(17):print(player_list[0])player_list[0].poker_list.append(poker_list.pop())player_list[1].poker_list.append(poker_list.pop())player_list[2].poker_list.append(poker_list.pop())
def showAllPlayerPoker(player_list: list[Player]):for i in range(len(player_list)):player player_list[i]print(f玩家的名字{player.name})player.poker_list sorted(player.poker_list, keylambda poker: (poker.suit_weight, poker.color_weight))print(f玩家的牌是:{player.poker_list})# 欢迎界面
def showMainScreen():print(**********欢迎进入东湖斗地主**********)n1, n2, n3 getThreePlayerName()print(n1, n2, n3)playerList:list[Player] [Player(n1), Player(n2), Player(n3)]# 初始化一下牌poker_list initPoker()print(poker_list)print(洗牌中...)random.shuffle(poker_list)# 调用洗牌方法print(洗牌完成!)print(poker_list)print(发牌中...)# 调用发牌方法print(poker_list)print(playerList)# send_pokers(poker_list, playerList)for i in range(17):playerList[0].poker_list.append(poker_list.pop())playerList[1].poker_list.append(poker_list.pop())playerList[2].poker_list.append(poker_list.pop())print(poker_list)showAllPlayerPoker(playerList)# 叫地主master input(谁叫地主? )if master in (n1, n2, n3):print(f{master}是地主!)master_player Nonefor player in playerList:if master player.name:master_player playermaster_player.poker_list poker_listprint(**********叫地主结束**********)showAllPlayerPoker(playerList)print(发牌完成)# 调用主方法
showMainScreen()第二种方法
1 创建一个类Poker 类 点位JQKA 花色 权重 花色权重2、主屏幕3、初始化一副牌 54张3、调用三个玩家的初始化操作 玩家类 Player 属性 name List存放玩家的牌4、洗牌 random.shuffle5、发牌 需要一个List[Poker] 使用 pop 冒出来一张给三个玩家同时删除这个List中的一张6、展示某个玩家的牌import randomclass Poker:def __init__(self,suit,color,suit_weight,color_weight):self.suitsuitself.colorcolorself.suit_weightsuit_weightself.color_weightcolor_weightdef __repr__(self):# 大小王怎么办if self.color is None:return str(self.suit)else:return self.colorstr(self.suit)# 初始化三个玩家姓名要不同
def initPlayer():s1 set() # 存储3个玩家的姓名# 定义一个List集合存储各个玩家对象initPlayerList []while True:name input(f请输入第{len(s1)1}个玩家的姓名不要重复:)s1.add(name)if len(s1) 3:breakfor name in s1:initPokerList []player Player(name,initPokerList)initPlayerList.append(player)return initPlayerListclass Player:def __init__(self,name,list):self.namenameself.list listdef __repr__(self):return self.name ,扑克牌是 ,.join(self.list)# 初始化一副牌
def initPoker():#54张牌initPokerList []for i in range(1,14):suit isuit_weight imatch i:case 1:suit Asuit_weight 14case 11:suit Jsuit_weight 9case 12:suit Qsuit_weight 10case 13:suit Ksuit_weight 11case 2:suit_weight 15case _:suit_weight i - 2for color in [♥,♠,♦,♣]:# 黑桃 红桃 方片 梅花color_weight 0match color:case ♠:color_weight 1case ♥:color_weight 2case ♦:color_weight 3case ♣:color_weight 4poker Poker(suit, color, suit_weight,color_weight)initPokerList.append(poker)initPokerList.append(Poker(大王,None,100,None))initPokerList.append(Poker(小王,None,100,None))return initPokerListdef showAllPokerByPlayer(player):print(f开始展示{player.name}的所有牌)pokerList player.list# 先将所有的牌排序pokerList sorted(pokerList,keylambda poker: (poker.suit_weight,poker.color_weight) )print(pokerList)if __name__ __main__:print(----欢迎来到新澳门葡京娱乐城------)playList initPlayer()print(playList)pokerList initPoker()print(pokerList)# 开始洗牌print(洗牌中.....)random.shuffle(pokerList)print(pokerList)print(开始发牌.....)for index in range(len(pokerList)-3):poker pokerList.pop()player playList[index % 3]player.list.append(poker)# 先叫地主name input(叫地主:)for player in playList:if player.name name:print(f{name}是地主)# 两个list的合并player.list pokerList# 展示所有的底牌# 展示所有人的牌print(展示所有玩家的牌....)for player in playList:showAllPokerByPlayer(player)