import random
import sysclass GameShaiZi(object):def __init__(self, funding, num):self.initial_funding = funding  #初始资金self.sieve_number = num  # 筛子数量self.funding = None  # 剩余资金数量self.user_name = None  # 玩家名字self.bet = None  # 下注金额self.choose = None  # 玩家的选择self.guessPoint = None  # 玩家押的点数self.isGuess = None  # 是否猜中self.pointsList = []  # 点数列表self.No = 1  # 局数self.unit = "¥"  # 单位self.tips = {"formatError": "输入的值格式不正确! 只能输入数字!","rangeError": "超出范围, 不存在的选项!","betError": "下注金额不合规则!","initFundingError": "初始金额不得少于100","fundingError": "下注金额不能大于所持有总金额!"}  # 提示语self.role = {"大": 2,"小": 2,"葫芦": 3,"顺子": 5,"豹子": 7,'猜点': 10,} # 倍数规则self.points = {1: "大",2: "小",3: "葫芦",4: "顺子",5: "豹子",6: '猜点',}  # 玩家押注def formatData(self, data):while not data.isdecimal():print(self.tips['formatError'])data = input('请再次输入:')return int(data)def shwoPortal(self):print('* ' * 25 + "*")print('*' + " " * 49 + "*")print('*' + " " * 20 + "欢乐摇筛子" + " " * 19 + "*")print('*' + " " * 49 + "*")print('*' + " " * 19 + "1. 开始游戏" + " " * 19 + "*")print('*' + " " * 19 + "2. 设置游戏" + " " * 19 + "*")print('*' + " " * 19 + "3. 结束游戏" + " " * 19 + "*")print('*' + " " * 49 + "*")print('* ' * 25 + "*")return self.formatData(input("请选择:"))def getPointsList(self):# 获得所有点数 返回点数列表for i in range(self.sieve_number):self.pointsList.append(random.randint(1, 6))def fundingCompute(self):# 计算资金并判断资金是否小于零if self.isGuess == 1:print("$$$-->$资产变化$: ¥%d + ¥%d" % (self.funding, self.bet * self.role[self.points[self.choose]]), end='')self.funding += self.bet * self.role[self.points[self.choose]]else:print("$$$-->$资产变化$: ¥%d - ¥%d" % (self.funding, self.bet), end='')self.funding -= self.betprint(" = ¥" + str(self.funding))print("当前总资产: %s%d" % (self.unit, self.funding))if self.funding <= 0:print("您已成穷光蛋! 游戏结束!")ageen = input("再来一局?(0:结束游戏 其他任意键:再次游戏)")if ageen == '0':self.startGame()else:self.paly()def getRole(self):# 获取规则self.pointsList.sort()if self.sieve_number >= 3:if len(set(self.pointsList)) == 1:return '豹子'if self.sieve_number >= 4:if len(set(self.pointsList)) == self.sieve_number:return '顺子'if self.sieve_number >= 5:if len(set(self.pointsList)) == 2:return '葫芦'if sum(self.pointsList) <= 3 * self.sieve_number + self.sieve_number / 3:return "小"if sum(self.pointsList) > 3 * self.sieve_number + self.sieve_number / 3:return "大"def decision(self):if self.points[self.choose] == self.getRole():self.isGuess = 1if self.choose == 6:if self.guessPoint == sum(self.getPointsList()):self.isGuess = 1else:self.isGuess = 0print("-$-$-$-开!-$-$-$-")print("%s -> %d点 -> %s" % (self.pointsList, sum(self.pointsList), self.getRole()))print("恭喜! 您押中了!")else:self.isGuess = 0print("-$-$-$-开!-$-$-$-")print("%s -> %d点 -> %s" % (self.pointsList, sum(self.pointsList), self.getRole()))print("真可惜! 您没有押中!")def getUserInput(self):# 获取用户的输入bet = self.formatData(input('请输入下注金额(10的倍数):'))while True:if bet < 10 or bet%10 != 0 or bet > self.funding:print(self.tips["betError"])bet = self.formatData(input('请再次输入:'))else:breakself.bet = betprint(self.points)choose = self.formatData(input('请输入您的选择:'))while True:if choose not in self.points.keys():print(self.tips['rangeError'])choose = self.formatData(input('请再次输入:'))else:breakif choose == 6:guessPoint = self.formatData(input('请输入您想押的点数:'))while True:if 0 < guessPoint <= 6 * self.sieve_number:breakelse:print(self.tips['rangeError'])guessPoint = self.formatData(input('请再次输入:'))self.guessPoint = guessPointself.choose = choosedef initUser(self):# 初始化玩家if self.user_name == None:self.user_name = input("请输入您的名字:")self.funding = self.initial_fundingprint('初始化中......')print("-" * 50)print("欢迎您! 尊敬的%s!" % self.user_name)print("您现在共拥有资金:%s%s" % (self.funding, self.unit))print("-" * 50)print(">" * 22 + "开始游戏!" + "<" *22)def gameSettings(self):# 设置游戏funding = self.formatData(input("请输入初始金额:"))while True:if (funding < 100) or (funding % 10 != 0):print(self.tips["initFundingError"])funding = self.formatData(input('请再次输入:'))else:breakself.initial_funding = fundingnum = self.formatData(input("请输入筛子个数(不大于6个):"))while True:if 0 < num < 6 :breakelse:print(self.tips['rangeError'])num = self.formatData(input('请再次输入:'))self.sieve_number = numprint("已保存设置!")def endGame(self):# 结束游戏sys.exit('Game Over.')def paly(self):# 运行程序self.initUser()while True:print("^" * 20)print("-*-*-*-第 " + str(self.No) + "局-*-*-*-")print("^" * 20)self.getUserInput()self.getPointsList()self.decision()self.fundingCompute()self.pointsList = []self.No += 1def startGame(self):# 开始游戏while True:choose = self.shwoPortal()if choose == 1:self.paly()# self.startGame()elif choose == 2:self.gameSettings()# self.startGame()elif choose == 3:self.endGame()else:print(self.tips["rangeError"])self.startGame()if __name__ == '__main__':initial_funding = 1000num = 3game = GameShaiZi(initial_funding, num)game.startGame()

闲来无事, 写个小游戏自娱自乐, 水平有限, 欢迎指导.

Python小游戏摇筛子, 面向对象的方式写相关推荐

  1. 寓教于乐——PyGame游戏编程,Python小游戏制作实战教学

    Python非常受欢迎的一个原因是它的应用领域非常广泛,其中就包括游戏开发.而是用Python进行游戏开发的首选模块就是PyGame. 1. 初识Pygame PyGame是跨平台Python模块,专 ...

  2. python编的俄罗斯方块游戏_手把手制作Python小游戏:俄罗斯方块(一)

    手把手制作Python小游戏:俄罗斯方块1 大家好,新手第一次写文章,请多多指教 A.准备工作: 这里我们运用的是Pygame库,因为Python没有内置,所以需要下载 如果没有pygame,可以到官 ...

  3. python图形小游戏代码_手把手制作Python小游戏:俄罗斯方块(一)

    手把手制作Python小游戏:俄罗斯方块1 大家好,新手第一次写文章,请多多指教 A.准备工作: 这里我们运用的是Pygame库,因为Python没有内置,所以需要下载 如果没有pygame,可以到官 ...

  4. 树莓派开箱+上手python小游戏

    树莓派开箱&上手python小游戏 树莓派开箱&上手python小游戏 安装所需设备 烧录系统 使用NOOBS方式烧录失败 下载官方系统镜像文件烧录成功 配置WiFi和SSH 一.Wi ...

  5. 边玩边学,13个 Python 小游戏真有趣啊(含源码)

    经常听到有朋友说,学习编程是一件非常枯燥无味的事情.其实,大家有没有认真想过,可能是我们的学习方法不对? 比方说,你有没有想过,可以通过打游戏来学编程? 今天我想跟大家分享几个Python小游戏,教你 ...

  6. 整理了30款Python小游戏附源码,五一有的玩了

    快到五一了,整理了 30 款 Python 小游戏源码分享给大家,具体内容可以点击下方视频号查看: 点击上方视频后,源码获取方式:①关注上方视频号.②点赞当前视频.③在当前视频评论区扣1 友情提示:获 ...

  7. python简单小游戏代码_一个简单的python小游戏---七彩同心圆

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 用pygame做一个简单的python小游戏-七彩同心圆 玩法:每次点击鼠标时,会以鼠标为圆心,不断 ...

  8. python小游戏之三

    猜拳游戏 Python代码实现猜拳小游戏 Python代码实现猜拳小游戏_zhangtongyuan0909的博客-CSDN博客_python猜拳游戏代码 用python中类与对象写一个猜拳游戏 用p ...

  9. python小游戏-16行代码实现3D撞球小游戏!-源码下载

    python小游戏-16行代码实现3D撞球小游戏!-源码下载 所属网站分类: 资源下载 > python小游戏 作者:搞笑 链接: http://www.pythonheidong.com/bl ...

最新文章

  1. linux 入侵检测
  2. linux 添加动态链接库路径
  3. Makefile_04:Makefile变量初了解
  4. FFT和Matlab中操作FFT
  5. vs 2017 建立 php,程序在VS 2017中输出的结果为什么是这样的?求助大神!谢谢!...
  6. curl -L get.rvm.io | bash -s stable报错:连接不上服务器
  7. 别人叫我程序猿,我称自己攻城狮。没日没夜写代码,不知何日涨工资?
  8. java boolean 多线程_JAVA多线程两个实用的辅助类(CountDownLatch和AtomicBoolean)
  9. HBase 中文文档0.97
  10. NopCommerce(Core)学习目录
  11. 需求变更,产品经理的良心也会痛!
  12. jenkins插件管理提示“update information obtained:不可用ago”
  13. 地表最强报表工具,一张模板秒杀数百Excel !
  14. 【Unity】插件TextAnimator 新手使用说明
  15. Java中Comparable比较器的基本用法
  16. c4d软件在哪修改语言,c4d怎么改成中文(C4D怎么选择中文语言)
  17. K8S查看服务器日志
  18. 如何将抖音快手短视频好看视频等任何直播平台视频转为MP4
  19. 弱网测试之NEWT(Network Emulator Toolkit)
  20. python matplotlib 论文画图代码总结

热门文章

  1. ironpython2.7.8_带pip的ironpython2.7.8
  2. JetBrains出品,一款好用到爆的数据库工具,惊艳到了!!!
  3. 考研数据结构名词解释
  4. 源码圈内推信息整理(2017-12-30)
  5. 服务器中毒的原因有哪些?为什么服务器会中毒?
  6. Android学习之ComponentName的使用
  7. MotionEvent android使用
  8. 弱电转网络工程师可行吗?过来人分享转行成功经验及路线
  9. 报名 | 5G和边缘计算的新机遇高峰论坛
  10. Android应用源码基于vitamio的网络电视直播源码