欢乐斗牛这个游戏应该大多数人都不陌生,而python这个最近一两年比较热门的编程语言,相信点击我这篇文章的朋友一定了解ta。而斗牛和python这一老一新的事物又会碰撞出什么样的火花呢?这篇文章就是利用python写的一个关于斗牛的小程序。

斗牛分为庄家闲家,而游戏的主题就是庄家闲家拼点。所以我就创建了这两个对象,在这之前把牌面总点数的计算、倍率的计算和牌面中最大牌等方法封装成player类。在main函数中进行游戏,加上了判断庄家闲家点数的功能,判断游戏结束的条件,主动改变赌注和主动退出游戏的功能。

斗牛计算点数的规则:如果5张牌中任意3张牌之和为10的倍数,剩下两张牌加起来的点数就是牌面点数,反之牌面的点数为0.

而计算倍率的规则和牌面点数有关,点数为10(即牛牛)时,倍率为3倍;点数为7~9时,2倍的倍率;点数为0~6时,1倍的倍率。而庄闲的点数相同时,需要继续比较各自牌面中最大的牌,一般黑桃K最大,方片A最小。

import itertools
import random# 牌的总数
def poker_list():color = ['\u2665', '\u2663', '\u2666', '\u2660']num_poker = ['A', '2', '3', '4', '5', '6','7', '8', '9', '10', 'J', 'Q', 'K']# Joker=['big_Joker','small_Joker']sum_poker = [i+j for i in num_poker for j in color]return sum_pokerclass player(object):"""docstring for player"""def __init__(self, poker,bet_on):super(player, self).__init__()self.poker = pokerself.bet_on=bet_ondef sum_value(self):L = []for i in self.poker:# if i[0] == 'J' or i[0] == 'Q' or i[0] == 'K' or i[:2] == '10':if i[:-1] in ['10','J','Q','K']:num = 10elif i[0] == 'A':num = 1else:num = int(i[0])L.append(num)return L# 算出五张牌的总点数def poker_point(self):lst = self.sum_value()# 排列组合:3张牌的点数之和为10的倍数for j in itertools.combinations(lst, 3):if sum(j) % 10 == 0:if sum(lst) % 10 == 0:return 10return sum(lst) % 10else:return 0# 比较双方的点数相同时,比较牌面中最大的牌,按照索引来排序,并找出牌中最大的索引值def sorted_index(self):L = []for i in self.poker:index = poker_list().index(i)L.append(index)return max(L)# 点数的大小对应的倍率def level_rate(self):point = self.poker_point()if point == 10:self.bet_on *=3elif 7 <= point < 10:self.bet_on *= 2elif point < 7:self.bet_on *= 1return self.bet_ondef main():print("游戏开始")value=int(input('请输入玩家的欢乐豆:'))# 统计玩家游戏局数i=1while True:print('第%s局游戏开始!'%i)bet_on=input('请玩家输入赌注:')try:bet_on=int(bet_on)# 如果输入的赌注小于等于0或者不为整数时,游戏结束(这样可以主动退出游戏)except Exception:print('游戏结束')print('您剩下的欢乐豆为:',value)returnif bet_on<=0:print('游戏结束')print('您剩下的欢乐豆为:',value)returnelse:L = poker_list()# 把牌随机洗好random.shuffle(L)# 按顺序发牌(因为牌已经打乱顺序,所以顺序发牌)hostpoker = L[:5]# 创建庄家对象,把牌面和赌注作为传参host_value=player(hostpoker,bet_on)# 庄家牌面的点数host_sumPoint=host_value.poker_point()print("庄家的牌为:", hostpoker)print("庄家的点数:", host_sumPoint)poker=L[5:10]# 创建玩家对象,把牌面和赌注作为传参player_value=player(poker,bet_on)# 玩家牌面的点数player_sumPoint=player_value.poker_point()print("玩家的牌为:", poker)print("玩家的点数:", player_sumPoint)# 比较双方的点数,然后按照情况更改赌注和欢乐豆# 点数相同时,比较牌面中最大的牌,按照索引来排序,并找出牌中最大的索引值if player_sumPoint == host_sumPoint:if player_value.sorted_index() >host_value.sorted_index():print("这把您赢了")value+=player_value.level_rate()else :print("这把您输了")value-=host_value.level_rate()elif player_sumPoint > host_sumPoint:print("这把您赢了")value+=player_value.level_rate()else:print("这把您输了")value-=host_value.level_rate()# 判断游戏结束的条件if value>0:print('您的赌资还剩下:',value)print('游戏继续\r\n')else:print('您已经输光了欢乐豆,游戏结束!!!')returni+=1if __name__ == '__main__':main()

小试牛刀:用python写欢乐斗牛相关推荐

  1. 用python写聊天机器人_用Python 写一个机器人陪你聊天(文尾有彩蛋)

    工作一忙,原来秉烛夜谈的好友现在都很少聊天,微信都成了微信群的天下,鲜有微信好友给你发消息,想要主动发却也找不到开题话题,怎么办?用Python写一个机器人陪自己聊聊天吧.以下是源码及解析,小白都看得 ...

  2. 2020,我用Python写春联

    前言 春联是中国传统文化中最具内涵的元素之一,它以对仗工整.简洁精巧的文字描绘美好形象,抒发美好愿望,是中国特有的文学形式,是华人们过年的重要习俗.每逢春节期间,无论城市还是农村,家家户户都要精选一副 ...

  3. 用Python 写一个机器人陪你聊天(文尾有彩蛋)

    工作一忙,原来秉烛夜谈的好友现在都很少聊天,微信都成了微信群的天下,鲜有微信好友给你发消息,想要主动发却也找不到开题话题,怎么办?用Python写一个机器人陪自己聊聊天吧.以下是源码及解析,小白都看得 ...

  4. 用python写计算机专业_自学open cv,用Python写的,本人是一名学生党,因为我本专业不是搞计算机的_cc霜_学生党_教育_教育其他...

    自学open cv,用Python写的,本人是一名学生党,因为我本专业不是搞计算机的,所以一切从0开始,自己学习的时候就整理一些笔记,以防忘记了.

  5. Python写的代码打包成.exe可执行文件

    Python写的代码打包成.exe可执行文件 1. 安装pyinstaller 2. [在线生成icon](http://www.ico51.cn/) 3. 打包命令 pyinstaller -i x ...

  6. 用python做算法_自己用python写的螺旋矩阵生成算法

    自己用python写的螺旋矩阵生成算法 如果输入6,可以生成如下矩阵: 1 20 19 18 17 16 2 21 32 31 30 15 3 22 33 36 29 14 4 23 34 35 28 ...

  7. python写一个通讯录step by step V3.0

    python写一个通讯录step by step V3.0 更新功能: 数据库进行数据存入和读取操作 字典配合函数调用实现switch功能 其他:函数.字典.模块调用 注意问题: 1.更优美的格式化输 ...

  8. python俄罗斯方块算法详解_用 Python 写一个俄罗斯方块游戏 (

    @@ -2,34 +2,34 @@ > * 原文作者:[Dr Pommes](https://medium.com/@pommes) > * 译文出自:[掘金翻译计划](https://g ...

  9. Python到底是什么样的语言? Python和Java比谁更快? TensorFlow的主体是用Python写的吗?

    Python到底是什么样的语言? Python和Java比谁更快? TensorFlow的主体是用Python写的吗? Python到底是什么样的语言? 解析: 这里是一些关键点:Python是解释型 ...

最新文章

  1. Win7和Win10安装VC6.0注意事项
  2. 虚拟化系列-Windows server 2012 Remote桌面与应用
  3. 一种基于云信sdk的互动直播的实现
  4. 快播王欣明天就出狱了,他能借钱东山再起吗?
  5. 2×3卡方检验prism_卡方独立性检验原理
  6. java web 开发技术大全 代码_Java Web开发技术大全
  7. mysql optimize 参数查看_Mysql High Performance:Optimize Setting
  8. c语言对字符串逆序,【C语言】 字符串逆序
  9. C#之网络字节序与主机字节序互转
  10. vue el-tree 默认选中_Vue UI:Vue开发者必不可少的工具
  11. 算法笔记-胡凡-两本完整PDF
  12. 什么是LSI关键词?LSI关键词怎么用?2019
  13. 常见的十几种编程语言介绍
  14. 百度富文本编辑器UEditor
  15. wifi连接上不能上网怎么办服务器无响应,​wifi连接上不能上网是怎么回事,看完你就恍然大悟了...
  16. 计算机教师继续教育心得,教师继续教育培训个人心得体会(精选6篇)
  17. windows搭建go语言环境eclipse+go
  18. 什么是发布非约定商品?发布非约定商品的处罚是什么?
  19. grpc-gateway
  20. Linux下基于ffmpeg音视频解码

热门文章

  1. 西安华为OD面试经验(德科)
  2. 简单逆向分析使用案例(2)--CrackMe_01.exe 找出密码
  3. SpringGateway网关
  4. 华为云数据灾备解决方案,你最佳的安全卫士
  5. 无线WIFI网络系统介绍
  6. 带你揭秘学习编程的7大优势!还有可以提升文化课的成绩?
  7. Java、JSP网上花店销售系统
  8. 《概率与数理统计》知识点【更新中】
  9. #获取A股所有股票代码
  10. 【Python】Matplotlib 可视化进阶之PCA主成分分布图