这是使用python完成的德州扑克游戏。包括了洗牌,发牌,验证牌型。

# 德州扑克
# 设计一个程序:
# (1)洗牌功能
# (2)发牌功能
# (3)验证手牌
#         皇家同花顺(同一个花色五张连牌 A K Q J 10)
#             同花顺(同一个花色 7 8 9 10 J)
#             四条  (x x x x + y)
#             满堂红(x x x + y y)
#             同花  (5张同一花色)
#             顺子  (不同花色组成的顺子)
#             三条  (x x x + y z)
#             两对  (x x y y + z)
#             一对  (x x y z c)
#             普通牌 # 52张牌, 包含4种花色(红心, 黑心, 方块, 梅花)
# 每种花色13张(A 2 3 4 5 6 7 8 9 10 J Q K)   1 2 3 4 5 6 7 8 9 10 11 12 13import random
class D:dict={10:'同花顺',}
class Card:def __init__(self):#一张卡牌是由花色加点数构成的self.__color = ''self.__value = 1#属性,不是方法。@propertydef color(self):return self.__color@color.setterdef color(self,value):if isinstance(value,str):#判断value是不是字符串self.__color = value@propertydef value(self):return self.__value@value.setterdef value(self,value):if isinstance(value,int) and (value <1 and value >= 14):self.__value = 1else:self.__value = valuedef __str__(self):#重写该方法的目的是为了输出对象的时候输出我们想要的信息#输出扑克的花色和点数而不是地址#红桃1 红桃11 红桃12 红桃13#构造特殊点数的映射关系special_point = {1:'A',11:'J',12:'Q',13:'K'}#判断特殊点数if self.value in special_point:#替换str_value = special_point[self.__value]else:str_value = str(self.__value)return self.color + str_value + " "class Poke:def __init__(self):"""初始化一副扑克"""#花色poke_color = ['♥','♠','♦','♣']#点数poke_point = [value for value in range (1,14)]#存储牌self.poke = []#定义索引index=0#构造扑克for i in range(4):for j in range(13):#1.创建cardcard = Card()#2.将生成的card装入扑克self.poke.append(card)#3.设置card的花色和点数self.poke[index].color = poke_color[i]self.poke[index].value = poke_point[j]#4.索引递增index += 1def show(self,poke):""""显示所有的扑克"""index = 0for card in poke:if index % len(poke) == 0:print("")print(card,end=' ')index += 1print("")def shuffle(self):#洗牌random.shuffle(self.poke)def deal_poke(self,start=0,end=5,step=1):#发牌return self.poke[start:end:step]class Player:""""玩家类"""def __init__(self,player_id,player_name,player_money):self.player_id=player_idself.player_name=player_nameself.player_money=player_money#玩家获取的手牌self.hand_card = []#是否为同一花色 self.is_samecolor = False#是否为顺子self.is_straight = Falsedef hand_poke(self,card):#玩家持有的手牌self.hand_card = carddef judge_poke(self):#验证牌型#1.将card拆分(花色和点数分别拆出来)hand_colors = [x.color for x in self.hand_card]hand_values = [x.value for x in self.hand_card]#[方块  红桃  梅花  梅花  黑桃]=>set      [6 Q J 4 2]hand_colors_set = set(hand_colors)hand_values_set = set(hand_values)if len(hand_colors_set) == 1:#判断是否为同一花色self.is_samecolor = Trueif len(hand_values_set) == 5 and max(hand_values_set) - min(hand_values_set) == 4:#判断是否为顺子self.is_straight = Trueif self.is_straight and self.is_samecolor:print("同花顺")return 10elif self.is_samecolor:print("同花")elif self.is_straight:print("顺子")elif len(hand_values_set) == 5:print("基础牌")elif len(hand_values_set) == 4:print("一对子")else:#四条 满堂红 三条 两对#四条:4 4 4 4 5 =>(4,5) =>[4,1]  4 4 4 3 3=>(4,3) =>[3,2]#不能根据长度来判断counts = [hand_values.count(x) for x in hand_values_set ]if max(counts) == 4:print("四条")elif max(counts) == 3 and len(counts)==2:print("满堂红")elif max(counts) == 3:print("三条")else:print("两对")if __name__ == "__main__":#1.创建poke对象p = Poke()#2.输出所有扑克 or 洗牌p.shuffle()#3.发牌hand_card = p.deal_poke()#4.显示手牌情况p.show(hand_card)#5.验证牌型#6.创建玩家player = Player('001','lucy','100000')player.hand_poke(hand_card)player.judge_poke()#p.show_all()

Python实现德州扑克游戏相关推荐

  1. 德州扑克游戏算法讲解

    转载自: https://blog.csdn.net/wojiushi3344/article/details/8967735 德克萨斯扑克全称Texas Hold'em poker,中文简称德州扑克 ...

  2. C++实现德州扑克游戏(和电脑一起玩)

    事先声明,本人坚决反对赌博,对众多程序员助纣为虐,远赴东南亚等地编写赌博网站的行为也很反感,更有甚者,使用python进行黑客行为,非法爬虫,真正实现了"C++从入门到入土",&q ...

  3. 项目1:德州扑克游戏

    项目1:德州扑克游戏(3改) import random import time from random import randint N=int(input('请输入玩家数量')) #牌库 paid ...

  4. 我的第一篇博客_在Linux下用C++编写的德州扑克游戏

    文章目录 序言 抽象思路 类的抽象 牌类(Card) 一组牌(GroupCards) 牌堆(DeckCards) 牌堆类设计 初始化卡牌 洗牌 与手牌公共牌的关系 手牌(HandCards) 公共牌( ...

  5. 德州扑克游戏基本流程图

    转载于:https://www.cnblogs.com/sunny-daylk/p/8032921.html

  6. 普通人都能看懂的德州扑克-python版

    文章目录 德州扑克 概要需求分析 编码实现 模拟扑克牌(文件:card.py) 模拟发牌(文件:poke.py) 判断类型(文件:play.py) 开始游戏(文件:game.py) 德州扑克 德州扑克 ...

  7. eos游戏开发德州扑克

    eos德州扑克游戏开发简述 最近来问我怎么处理暗牌的人比较多,我在这里给大家说一下我的思考:对于暗牌,因为玩家可能在增加,那么一个种子来实现明显难度是比较有压力的,因此一局当中,最好是多个随机种子,公 ...

  8. 德州python培训_All In!我学会了用强化学习打德州扑克

    资料图 选自willtipton 机器之心编译 参与:Jane W.蒋思源 最近,强化学习(RL)的成功(如 AlphaGo)取得了大众的高度关注,但其基本思路相当简单.下面我们在一对一无限注德州扑克 ...

  9. 德州扑克实践之刚开始!------发牌

    最近小编在做一个关于德州扑克的小游戏,当然已经做完了,才写的一系列文章来记录一下自己的开发经历 一系列文章主要包括: 1.发牌2.判断牌型3.比较牌的大小4.开始游戏5.总结 说明: 制作的德州扑克仅 ...

最新文章

  1. 爱玛士关于爬虫的scrapy框架的心得
  2. 打开计算机后 无法最小化,最小化窗口后无法在任务栏中显示的三种解决方法...
  3. mysql --skip-locking_skip-external-locking – MySQL性能参数详解
  4. Android 多线程实现异步执行demo,线程池使用demo
  5. zabbix监控php-fpm性能状态
  6. 天翼云盘php插件,Linux下使用天翼云盘终极方案
  7. java权限精确到按钮_搞定权限设计1-页面按钮控制(精确到某个用户和某个按钮)...
  8. VS中的多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)的区别
  9. 人人译视界 for Mac(智能协同翻译)
  10. nodejs api 设计
  11. ununtu18.0安装搜狗输入法
  12. T0、T1、TS、D1是什么鬼?一文看懂POS机刷卡到账模式区别和利弊
  13. 笔记本不小心网络重置后,不能上网,网络适配器存在感叹号
  14. Flink Interval Join Left Join
  15. ssh和telnet客户软件ZOC如何设置UTF-8
  16. 理论篇:如何理解51%攻击
  17. win10无法安装提示磁盘布局不受UEFI固件支持的解决方法
  18. STM8S103之tim1PWM输出
  19. JavaEE初阶---网络原理初识+网络编程套接字+网络原理之TCP_IP
  20. [USACO 1.2.1] Milking Cows

热门文章

  1. CC00015.kylin——|HadoopOLAP_Kylin.V15|——|Kylin.v15|Cube优化|Cuboid剪枝优化|
  2. 工作中常用的学习总结套路
  3. 基于macd、kdj、ma技术指标分析股票多空方向——应用开发1 前言
  4. 消除数据库中取出的Json字符串带有反斜杆的问题
  5. 特斯拉Model Y 标准续航实测
  6. 无线网络***(-)
  7. 适合小白的Matplotlib基本使用
  8. QQ、QQ空间、微信好友、微信朋友圈、新浪微博的分享。
  9. mysql数据库安装资源、步骤及基本操作指令详解
  10. 线性方程组AX=b,AX=0以及非线性方程组的最小二乘解(解方程组->优化问题)