小试牛刀:用python写欢乐斗牛
欢乐斗牛这个游戏应该大多数人都不陌生,而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写欢乐斗牛相关推荐
- 用python写聊天机器人_用Python 写一个机器人陪你聊天(文尾有彩蛋)
工作一忙,原来秉烛夜谈的好友现在都很少聊天,微信都成了微信群的天下,鲜有微信好友给你发消息,想要主动发却也找不到开题话题,怎么办?用Python写一个机器人陪自己聊聊天吧.以下是源码及解析,小白都看得 ...
- 2020,我用Python写春联
前言 春联是中国传统文化中最具内涵的元素之一,它以对仗工整.简洁精巧的文字描绘美好形象,抒发美好愿望,是中国特有的文学形式,是华人们过年的重要习俗.每逢春节期间,无论城市还是农村,家家户户都要精选一副 ...
- 用Python 写一个机器人陪你聊天(文尾有彩蛋)
工作一忙,原来秉烛夜谈的好友现在都很少聊天,微信都成了微信群的天下,鲜有微信好友给你发消息,想要主动发却也找不到开题话题,怎么办?用Python写一个机器人陪自己聊聊天吧.以下是源码及解析,小白都看得 ...
- 用python写计算机专业_自学open cv,用Python写的,本人是一名学生党,因为我本专业不是搞计算机的_cc霜_学生党_教育_教育其他...
自学open cv,用Python写的,本人是一名学生党,因为我本专业不是搞计算机的,所以一切从0开始,自己学习的时候就整理一些笔记,以防忘记了.
- Python写的代码打包成.exe可执行文件
Python写的代码打包成.exe可执行文件 1. 安装pyinstaller 2. [在线生成icon](http://www.ico51.cn/) 3. 打包命令 pyinstaller -i x ...
- 用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 ...
- python写一个通讯录step by step V3.0
python写一个通讯录step by step V3.0 更新功能: 数据库进行数据存入和读取操作 字典配合函数调用实现switch功能 其他:函数.字典.模块调用 注意问题: 1.更优美的格式化输 ...
- python俄罗斯方块算法详解_用 Python 写一个俄罗斯方块游戏 (
@@ -2,34 +2,34 @@ > * 原文作者:[Dr Pommes](https://medium.com/@pommes) > * 译文出自:[掘金翻译计划](https://g ...
- Python到底是什么样的语言? Python和Java比谁更快? TensorFlow的主体是用Python写的吗?
Python到底是什么样的语言? Python和Java比谁更快? TensorFlow的主体是用Python写的吗? Python到底是什么样的语言? 解析: 这里是一些关键点:Python是解释型 ...
最新文章
- Win7和Win10安装VC6.0注意事项
- 虚拟化系列-Windows server 2012 Remote桌面与应用
- 一种基于云信sdk的互动直播的实现
- 快播王欣明天就出狱了,他能借钱东山再起吗?
- 2×3卡方检验prism_卡方独立性检验原理
- java web 开发技术大全 代码_Java Web开发技术大全
- mysql optimize 参数查看_Mysql High Performance:Optimize Setting
- c语言对字符串逆序,【C语言】 字符串逆序
- C#之网络字节序与主机字节序互转
- vue el-tree 默认选中_Vue UI:Vue开发者必不可少的工具
- 算法笔记-胡凡-两本完整PDF
- 什么是LSI关键词?LSI关键词怎么用?2019
- 常见的十几种编程语言介绍
- 百度富文本编辑器UEditor
- wifi连接上不能上网怎么办服务器无响应,​wifi连接上不能上网是怎么回事,看完你就恍然大悟了...
- 计算机教师继续教育心得,教师继续教育培训个人心得体会(精选6篇)
- windows搭建go语言环境eclipse+go
- 什么是发布非约定商品?发布非约定商品的处罚是什么?
- grpc-gateway
- Linux下基于ffmpeg音视频解码