Python 学习笔记-第9讲:面向对象练习-猜拳游戏
任务需求:
猜拳游戏:
人和机器猜拳
-------------------------------人机猜拳---------------------------
请选择角色:1. 曹操 2. 张飞 3. 刘备
请出拳:1. 剪刀 2. 石头 3. 布
电脑出拳:(随机产生一个1-3的数字)
本局对战结果:XXX赢
是否继续?y/n
-------------------------------XXX vs 电脑---------------------------
XXX赢几局
电脑赢几局
平局xx次
结果:XXX赢
对战结束
游戏代码:
import randomclass Role:def __init__(self, name=None, score=0):self.name = nameself.score = scoredef chooseRole(self):roleOptions = ('曹操', '张飞', '刘备')while True:choice = input('请选择角色:1. 曹操 2. 张飞 3. 刘备').strip()if choice in '123' and len(choice) == 1:self.name = roleOptions[int(choice) - 1]print('您选择的角色是{0}。'.format(self.name))returnelse:print('输入错误,请重新选择。')def showFist(self):fistOptions = ('剪刀', '石头', '布')while True:yourstake = input('请出拳:1. 剪刀 2. 石头 3. 布').strip()if yourstake in '123' and len(yourstake) == 1:print('{0}出“{1}”'.format(self.name, fistOptions[int(yourstake) - 1]))return fistOptions[int(yourstake) - 1]else:print('输入错误,请重新输入。')def __str__(self):return '角色名称:{}'.format(self.name)class Computer:def __init__(self, name='电脑', score=0):self.name = nameself.score = scoredef showFist(self):rdom = random.choice(['剪刀', '石头', '布'])print('{0}出“{1}”'.format(self.name, rdom))return rdomclass Game:noWin = 0role = Role()computer = Computer()def startGame(self):print(' 人机猜拳 '.center(100, '-'))self.role.chooseRole()while True:roleFist = self.role.showFist()computerFist = self.computer.showFist()self.judgeWinner(roleFist, computerFist)gameOver = input('是否结束游戏?任意键继续,按“y”退出。').strip()if gameOver.lower() == 'y':breakself.showResult()print('对战结束')def judgeWinner(self, rFist, cFist):fistComp = ('剪刀', '石头', '布')if rFist == cFist:print('平局')self.noWin += 1elif fistComp.index(rFist) + 1 == fistComp.index(cFist) or fistComp.index(rFist) - 2 == fistComp.index(cFist):print('{0}赢'.format(self.computer.name))self.computer.score += 1else:print('{0}赢'.format(self.role.name))self.role.score += 1def showResult(self):print(' {0} VS {1} '.center(100, '-').format(self.role.name, self.computer.name))print('{0}赢 {1} 局。'.format(self.role.name, self.role.score))print('{0}赢 {1} 局。'.format(self.computer.name, self.computer.score))print('平局 {0} 次。'.format(self.noWin))if self.role.score > self.computer.score:print('{0}赢了!'.format(self.role.name))elif self.role.score == self.computer.score:print('双方打平!')else:print('{0}赢了!'.format(self.computer.name))game = Game()
game.startGame()
Python 学习笔记-第9讲:面向对象练习-猜拳游戏相关推荐
- python面向对象编程72讲_2020-07-22 Python学习笔记27类和面向对象编程
一些关于自己学习Python的经历的内容,遇到的问题和思考等,方便以后查询和复习. 声明:本人学习是在扇贝编程通过网络学习的,相关的知识.案例来源于扇贝编程.如果使用请说明来源. 第27关 类与面向对 ...
- PYTHON学习笔记(六)-- 面向对象
1.面向对象编程–oop(object oriented programming) 面向过程–思考问题时,首先分析怎么按照步骤实现,然后将问题拆解成若干步骤,并一步步完成功能–怎么做 面向对象–关注的 ...
- Python学习笔记 十一:图形用户界面和小游戏开发
1. 基于tkinter模块的GUI GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述. Python默认的GUI开发模块是tkinter(在Pyth ...
- Python学习笔记(十九)面向对象 - 继承
Python学习笔记(十九)面向对象 - 继承 一.继承的概念 # 继承:子类继承父类的所有方法和属性# 1. 子类 class A(object):def __init__(self):self.n ...
- Python学习笔记:web开发3
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:常用内建模块3:struct
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:第十三站 接着找对象
Python学习笔记 文章目录 Python学习笔记 第十三站 接着找对象 1. 封装 2. 继承 3. 方法重写 4. object类 5. 多态 6. 特殊方法和特殊属性 7. 类的赋值与拷贝 8 ...
- Python学习笔记 day5
Python学习笔记 day5 参考/引用资料: 1.file a.打开文件方式(读写两种方式) 缓冲 with语句 b.文件对象的操作方法 c.学习对excel及csv文件进行操作 读写excel ...
- python学习笔记02
python学习笔记02 面向对象Object Oriented 概述 类和对象 封装 继承 多态 类与类的关系 设计原则 总结 python学习笔记03 面向对象Object Oriented 概述 ...
最新文章
- 九、将cs文件快速的转换成可执行文件和响应文件(配置编译开关的文件)
- 09.20类类型random
- 微信小程序封装storage(含错误处理)
- jstorm 读取mysql_zookeeper,kafka,jstorm,memcached,mysql流式数据处理平台部署
- 【每日一题】7月3日精讲—毒瘤xor
- pat 乙级 1020 月饼(C++实现)
- linux sha1sum命令,讲解Linux中校验文件的MD5码与SHA1码的命令使用
- mysql 常用数据库连接池_常见的数据库连接池
- 2台电脑一根网线传文件_黑龙江工程专用网线报价,黑电源线配件厂家
- (日常搬砖)voc(xml)格式的标注转换为coco(json)格式
- c语言中函数的知识点总结,c语言函数知识点总结
- Matlab 移动通信原理-扩频通信系统仿真实验(扩频通信系统的多用户数据传输、利用蒙特卡罗仿真方法对扩频增益进行性能仿真)
- protel相关资料
- favicon.ico在线制作
- Linux刻录光盘win10认不到,win10系统无法读取DVD和刻录光盘的具体操作步骤
- 腾讯云默认操作系统被安装的软件
- 不服?来战!2017 CCF BDCI百万元巨奖各有所属
- matlab给图片添加颜色条
- 利用Ajax访问后台数据
- bit、Byte、bps、Bps、pps、Gbps的单位详细说明及换算
热门文章
- Vue CSS3或者npmjs网站中的animate.css实现动画效果
- 三张图学懂移位运算符——有符号移位?无符号移位?
- word2vec 如何获得当前的所有词向量表
- 加拿大 计算机 硕士 授课型,说真的!加拿大研究型硕士和授课型硕士的区别你知道吗?...
- 区块链大规模应用“补位”开始了
- CTF练习题[MISC]-0和1的故事(二维码生成)
- 便利店行业全面爆发,“酷铺+掌合”先于京东完成百万门店布局
- 无字天书之Python第七页(基础数据结构—上)
- Mybatis 逆向工程代码
- 团队管理中的第六人模式