python入门笔记——类和对象③(案例:自动随机文字游戏——决战紫禁之巅)
案例:决战紫禁之巅
属性:
name:名字
HP:血量
方法:
normal_attack:普通攻击,对方掉血10滴
critical_hit:暴击,对方掉血15滴
take_medicine:吃药,回复10滴血
str:打印玩家状态

import random
print('游戏:决战紫禁之巅')
print('角色:西门吹雪,叶孤城,初始HP均为100')
print('普通攻击:对方掉血10滴 暴击:对方掉血15滴 吃药:回复自身10滴血(有极小可能回复到100血以上,但因为可能极小暂未考虑处理)')
print('回合计数:任一方打出一次攻击或使用一次吃药回血')
print('游戏开始:均以随机自动游戏,血量扣到0及以下时结束')
print('-----------------------------------------')
class Role:def __init__(self,name,HP):'''构造初始化角色函数:param name:角色名:param HP:角色血量'''self.name = nameself.HP = HPpassdef normal_attack(self,enemy):'''普通攻击:param enemy:敌人:return:'''enemy.HP -= 10# 敌人扣10滴血whatprint = '{}对{}打出了普通攻击'.format(self.name,enemy.name)print(whatprint)passdef critical_hit(self,enemy):'''暴击:param enemy:敌人:return:'''enemy.HP -= 15# 敌人扣15滴血whatprint = '{}对{}打出了暴击'.format(self.name, enemy.name)print(whatprint)passdef take_medicine(self):'''吃药回血:return:'''self.HP += 10whatprint = '{}使用了回复药,回复了10滴血'.format(self.name)print(whatprint)passdef __str__(self):return '{}现在的血量为{}'.format(self.name,self.HP)passrole1 = Role('西门吹雪',100)
role2 = Role('叶孤城',100)
count = 1# 回合计数,每一次单方面攻击或回复为一回合
while True:randomnum = random.randint(0,5)# 随机数函数,获取0到5之间的整数值(这里用randint是左右都是闭区间,而randrange是左闭右开)if randomnum == 4 and role1.HP == 100:#去除了可能在满血时回复血量的情况continueelif randomnum == 5 and role2.HP == 100:#去除了可能在满血时回复血量的情况continueprint('第{}回合:'.format(count))if randomnum == 0:role1.normal_attack(role2)passelif randomnum == 1:role2.normal_attack(role1)passelif randomnum == 2:role1.critical_hit(role2)passelif randomnum == 3:role2.critical_hit(role1)passelif randomnum == 4:role1.take_medicine()passelif randomnum == 5:role2.take_medicine()passprint(role1)print(role2)count += 1if role1.HP <= 0:print('西门吹雪血量降为0以下,游戏结束')breakelif role2.HP <= 0:print('叶孤城血量降为0以下,游戏结束')break

输出结果:(某一次)

游戏:决战紫禁之巅
角色:西门吹雪,叶孤城,初始HP均为100
普通攻击:对方掉血10滴 暴击:对方掉血15滴 吃药:回复自身10滴血(有极小可能回复到100血以上,但因为可能极小暂未考虑处理)
回合计数:任一方打出一次攻击或使用一次吃药回血
游戏开始:均以随机自动游戏,血量扣到0及以下时结束
-----------------------------------------
第1回合:
叶孤城对西门吹雪打出了普通攻击
西门吹雪现在的血量为90
叶孤城现在的血量为100
第2回合:
西门吹雪对叶孤城打出了普通攻击
西门吹雪现在的血量为90
叶孤城现在的血量为90
第3回合:
叶孤城对西门吹雪打出了普通攻击
西门吹雪现在的血量为80
叶孤城现在的血量为90
第4回合:
叶孤城对西门吹雪打出了普通攻击
西门吹雪现在的血量为70
叶孤城现在的血量为90
第5回合:
西门吹雪对叶孤城打出了暴击
西门吹雪现在的血量为70
叶孤城现在的血量为75
第6回合:
西门吹雪对叶孤城打出了普通攻击
西门吹雪现在的血量为70
叶孤城现在的血量为65
第7回合:
叶孤城对西门吹雪打出了普通攻击
西门吹雪现在的血量为60
叶孤城现在的血量为65
第8回合:
西门吹雪对叶孤城打出了暴击
西门吹雪现在的血量为60
叶孤城现在的血量为50
第9回合:
叶孤城对西门吹雪打出了普通攻击
西门吹雪现在的血量为50
叶孤城现在的血量为50
第10回合:
叶孤城使用了回复药,回复了10滴血
西门吹雪现在的血量为50
叶孤城现在的血量为60
第11回合:
叶孤城对西门吹雪打出了普通攻击
西门吹雪现在的血量为40
叶孤城现在的血量为60
第12回合:
叶孤城对西门吹雪打出了普通攻击
西门吹雪现在的血量为30
叶孤城现在的血量为60
第13回合:
西门吹雪对叶孤城打出了普通攻击
西门吹雪现在的血量为30
叶孤城现在的血量为50
第14回合:
西门吹雪对叶孤城打出了普通攻击
西门吹雪现在的血量为30
叶孤城现在的血量为40
第15回合:
西门吹雪使用了回复药,回复了10滴血
西门吹雪现在的血量为40
叶孤城现在的血量为40
第16回合:
叶孤城对西门吹雪打出了普通攻击
西门吹雪现在的血量为30
叶孤城现在的血量为40
第17回合:
叶孤城使用了回复药,回复了10滴血
西门吹雪现在的血量为30
叶孤城现在的血量为50
第18回合:
叶孤城使用了回复药,回复了10滴血
西门吹雪现在的血量为30
叶孤城现在的血量为60
第19回合:
西门吹雪使用了回复药,回复了10滴血
西门吹雪现在的血量为40
叶孤城现在的血量为60
第20回合:
叶孤城对西门吹雪打出了暴击
西门吹雪现在的血量为25
叶孤城现在的血量为60
第21回合:
西门吹雪使用了回复药,回复了10滴血
西门吹雪现在的血量为35
叶孤城现在的血量为60
第22回合:
叶孤城对西门吹雪打出了普通攻击
西门吹雪现在的血量为25
叶孤城现在的血量为60
第23回合:
西门吹雪对叶孤城打出了暴击
西门吹雪现在的血量为25
叶孤城现在的血量为45
第24回合:
西门吹雪对叶孤城打出了普通攻击
西门吹雪现在的血量为25
叶孤城现在的血量为35
第25回合:
叶孤城对西门吹雪打出了普通攻击
西门吹雪现在的血量为15
叶孤城现在的血量为35
第26回合:
叶孤城使用了回复药,回复了10滴血
西门吹雪现在的血量为15
叶孤城现在的血量为45
第27回合:
西门吹雪对叶孤城打出了普通攻击
西门吹雪现在的血量为15
叶孤城现在的血量为35
第28回合:
西门吹雪对叶孤城打出了暴击
西门吹雪现在的血量为15
叶孤城现在的血量为20
第29回合:
叶孤城对西门吹雪打出了暴击
西门吹雪现在的血量为0
叶孤城现在的血量为20
西门吹雪血量降为0以下,游戏结束

python入门笔记——类和对象③(案例:自动随机文字游戏——决战紫禁之巅)相关推荐

  1. python入门笔记——类和对象⑤(继承)

    python入门笔记--类和对象⑤(继承) # python中展现面向对象的三大特征:封装.继承.多态 # 封装:把内容封装到某个地方以便后续的使用 # 对封装来说,其实就是使用初始化构造方法将内容封 ...

  2. Python入门--创建类的对象

    class Student:native_pace = '山东' # 直接写在类里的变量称为类属性# 初始化方法def __init__(self, name, age):self.na = name ...

  3. python入门——P39类和对象:拾遗

    组合 组合就是把旧类实例化放到新类里面进行调用,代码如下 class Chairs():def __init__(self,x):self.num = xclass Glasses():def __i ...

  4. python入门——P37类和对象:面向对象编程

    self是什么 class相当于房子图纸,每个对象是参照图纸建立的实际的房子,self相当于每一栋房子的门牌号,在下面这段代码里,每个对象都是调用了自己那栋房子里的方法,就是因为self tips:在 ...

  5. python入门——P40类和对象:一些相关的BIF

    一些相关的BUF issubclass(class, classinfo) class是classinfo的子类则返回true 1.一个类会被认为是自身的子类 2.classinfo可以是类对象组成的 ...

  6. python入门——P36类和对象:给大家介绍对象

    介绍对象 下面展示一些python3创建类,类的属性.方法,以及调用的代码,这里还用到了多态,对象fighter和defender都调用了相同名字的方法,但却实现的是不同的功能 tips:类的定义首字 ...

  7. Python数据分析入门笔记9——数据预处理案例综合练习(男篮女篮运动员)

    系列文章目录 Python数据分析入门笔记1--学习前的准备 Python数据分析入门笔记2--pandas数据读取 Python数据分析入门笔记3--数据预处理之缺失值 Python数据分析入门笔记 ...

  8. python入门笔记——飞机大战(极简版、未进行继承优化)

    python入门笔记--飞机大战(极简版.未进行继承优化) import random import pygame# 引用pygame里的模块 from pygame.locals import *# ...

  9. Python 入门笔记6——列表

    Python 入门笔记6--列表 序列 列表 列表的创建 list()创建 range()创建整数列表 推导式生成列表 列表元素的增加 append()方法 +运算符操作 +=运算符操作 extend ...

  10. Python之面向对象类和对象

    Python之面向对象类和对象 定义一个类:class 定义类的语法: class Test(object):"""类里定义一类事物共同的技能.可以是变量,也可是函数.& ...

最新文章

  1. 32边界的链码表示MPP算法MATLAB实现
  2. 制作ubuntu16.04的docker镜像
  3. 安卓程序段——时间测试函数
  4. VS2015+qt5.11入门(实现计算机的加法和登录操作)
  5. 经验 | 计算机专业科班出身如何提高自己编程能力?
  6. 带你自学Python系列(八):列表具体操作思维导图总结,再也不用翻书查用法了!...
  7. linux mediainfo,Ubuntu安装MediaInfo
  8. Flask 和 Google App Engine 部署模型服务
  9. 只因少写一个判空,我的代码上线后炸了!
  10. firebug 调试
  11. LVGL使用华为鸿蒙字体
  12. VM和CentOS的安装
  13. SDIO接口(4)——SDIO通信
  14. stearm计算机验证码,steam账户名称怎么取,值得收藏
  15. 二进制转八进制公式计算机,二进制转八进制算法(二进制与八进制的互相转换方法)...
  16. 【网页期末作业】用HTML+CSS做一个漂亮简单的学校官网
  17. 线性函数、非线性函数与线性回归的区别
  18. StringBuilder和StringBuffer的效率比较
  19. 绝密隐私!有趣的网络摄像头大揭露
  20. SQLSERVER时间转换成字符串,去掉中划线

热门文章

  1. Authorization Basic认证 笔记
  2. php 磁盘配额,samba服务器安装+磁盘配额笔记
  3. vim-plug插件安装
  4. Java单元测试之JUnit 5快速上手
  5. linux下gpt分区,Linux下的GPT分区
  6. 用思维导图带你重赏《从百草园到三味书屋》
  7. bzoj2101:[USACO2010 DEC]TREASURE CHEST 藏宝箱
  8. 在训练的时候loss增大怎么办
  9. Technorati的后台数据库架构
  10. 微信公众平台接口调试工具json格式不对怎么搞_微信支付、支付宝最全接入指引,看完立刻就可以上手!...