设计一个父类,表示游戏角色:派生出多个子类用于表示不同职业的角色,为每一个类设置必要的属性和方法,并实例化对象进行测试。
更多python教学内容及代码访问omegaxyz.com
①父类:Player

所有角色有普通杀与普通防御功能,Hp代表血量,Bubble代表技能冷却时间,Angry代表力量,Defend指代普通防御。

②子类:Tank(坦克)、Assassin(刺客)、Archmage(法师)

坦克特殊技能能够迅速恢复失掉的血量,适用于做肉盾。

刺客身手矫健,能够出其不意攻其不备。

法师拥有魔法,在一定范围内随机改变自身的属性。

③双方的攻击与操作是通过多线程(Threading)来实现的,即两者攻击与防御可以在同一时间出现。

④本代码实例化了坦克和刺客两个对象。

代码:

import random
import threading
import timeclass Player(threading.Thread):def __init__(self, Name, Angry, Hp, Rank, Bubble, Defend):threading.Thread.__init__(self)self.__Name = Nameself.Angry = Angryself.Hp = Hpself.Rank = Rankself.Bubble = Bubbleself.Defend = Defenddef getRank(self):return self.Rankdef setRank(self, Rank):self.Rank = Rankdef getHp(self):return self.Hpdef setHp(self, Hp):self.Hp = Hpdef normal_kill(self):time.sleep(0.5)return -(self.Angry * self.Rank)def random_defend(self):temp = random.randint(-10, self.Defend)  # Defend越大则防御能力越大if temp > 0:return Truedef outputinfo(self):print('名称:', self.__Name, 'Hp:', self.Hp, '等级:', self.Rank, '技能冷却:', self.Bubble)class Tank(Player):def __init__(self, Name, Angry, Hp, Rank, Bubble, Defend, recovery):threading.Thread.__init__(self)Player.__init__(self, Name, Angry, Hp, Rank, Bubble, Defend)self.__recovery = recoverydef random_defend(self):temp = random.randint(-10, self.Defend + self.__recovery)if temp > 0:return Truedef regenerate(self):if self.Bubble > 0:time.sleep(0.5)if self.Hp < 100:self.Hp += 30if self.Hp > 100:self.Hp = 100self.Bubble -= 10else:time.sleep(2)self.Hp += 5class Assassin(Player):def __init__(self, Name, Angry, Hp, Rank, Bubble, Defend, Raid):Player.__init__(self, Name, Angry, Hp, Rank, Bubble, Defend)self.__Raid = Raiddef Surprise_Attack(self):time.sleep(0.5)temp = 0 - self.Angry * self.Rankif self.Bubble > 0:temp2 = random.randint(-10, 20)if temp2 > 0:temp -= self.__Raidself.Bubble -= 10return tempclass Archmage(Player):def __init__(self, Name, Angry, Hp, Rank, Bubble, Defend, Magic):threading.Thread.__init__(self)Player.__init__(self, Name, Angry, Hp, Rank, Bubble, Defend)self.__Magic = Magicdef magicHp(self):if self.Bubble > 0:temp = random.randint(50, 100)if temp > self.__Hp:self.__Hp = temp + self.__Magicself.Bubble -= 10def magic_kill(self):temp = 0if self.Bubble > 0:temp2 = random.randint(-10, 20)if temp2 > 0:temp -= self.__Magicself.Bubble -= 10return tempdef run_tank(tank, assassin):while tank.getHp() > 0 and assassin.getHp() >= 0:assassin.setHp(assassin.getHp() + tank.normal_kill())tank.outputinfo()time.sleep(0.2)tank.regenerate()if tank1.getHp() > 0:print("程咬金赢了")else:print("荆轲赢了")def run_assassin(tank, assassin):while assassin.getHp() > 0 and tank.getHp() >= 0:if tank.random_defend() is True:tank.setHp(tank.getHp() + assassin.normal_kill())else:assassin.Surprise_Attack()assassin.outputinfo()time.sleep(0.2)if __name__ == '__main__':print("-------------- 一刀999!--------------\n")time.sleep(1)print("所有角色有普通杀与普通防御功能,Hp代表血量,Bubble代表技能冷却时间\n")time.sleep(1)print("有坦克、刺客、法师三个角色\n")time.sleep(1)print("坦克 Tank\n")print("坦克特殊技能能够迅速恢复失掉的血量,适用于做肉盾\n")time.sleep(1)print("刺客 Assassin\n")print("刺客身手矫健,能够出其不意攻其不备\n")time.sleep(1)print("法师 Archmage\n")print("法师拥有魔法,随机改变自身的属性\n")time.sleep(1)print("游戏开始----------------------------------------------------!")time.sleep(1)# Name, Angry, Hp, Rank, Bubble, Defend, Magic):tank1 = Tank("程咬金", 5, 100, 1, 100, 20, 5)assassin1 = Assassin("荆轲", 5, 100, 1, 100, 20, 10)# run_tank(tank1, assassin1)# run_assassin(tank1, assassin1)threads = []t1 = threading.Thread(target=run_tank, args=(tank1, assassin1))threads.append(t1)t2 = threading.Thread(target=run_assassin, args=(tank1, assassin1))threads.append(t2)for t in threads:# t.setDaemon(True)t.start()


更多python教学内容访问omegaxyz.com

网站文章采用知识共享许可协议BY-NC-SA4.0授权
© 2018 • OmegaXYZ-版权所有 转载请注明出处

Python设计一个游戏类相关推荐

  1. python设计一个学生类求最高分_设计一个学生类班级类

    第一题 设计一个学生类 属性:姓名.学号.年龄.成绩 设计一个班级类要求:实现向班级中添加学生.删除学生.查看学生.按照指定条件排序 属性:班级代号,所有学生 需要使用 calss, __int__, ...

  2. python设计一个动物类_【Python】每日一练:设计圆类计算周长和面积、设计动物类...

    编程题 1.设计一个 Circle(圆)类,包括半径和颜色属性,编写构造方法和其他方法,计算圆的周长和面积.请编写程序验证类的功能. 2.设计一个 Animal(动物)类,包括颜色属性和叫方法.再设计 ...

  3. python设计一个动物类_「Python」每日一练:设计圆类计算周长和面积、设计动物类...

    编程题 1.设计一个 Circle(圆)类,包括半径和颜色属性,编写构造方法和其他方法,计算圆的周长和面积.请编写程序验证类的功能. 2.设计一个 Animal(动物)类,包括颜色属性和叫方法.再设计 ...

  4. python 通讯录课程设计_如何用Python设计一个通讯录类?

    直接上代码:一共三个文件 CommunicateClass.py # @File : CommunicateClass.py class Communicate(): ""&quo ...

  5. Python设计一个学生类

    设计一个表示学生的( Student )类,该类的属性有姓名( name ).年龄(age)成绩 scores )绩包含语文.数学和英语三科成绩,每科成绩的类型为整数),另外有3个方法.     (1 ...

  6. python设计一个动物类_我用Python实现了12500张猫狗图像的精准分类

    我用 Python 实现了 12500 张猫狗图像的精准分类 在这篇文章中,我们将展示如何建立一个深度神经网 络,能做到以 90% 的精度来对图像进行分类,而在深度神 经网络,特别是卷积神经网络兴起之 ...

  7. python设计一个学生类求最高分_Python练习:计算每个学生的最低和最高分数。

    这里编程总初学者,需要你的指导.在 我正在从一些免费的在线课程中学习python,然后遇到了这个我已经解决了的特殊练习,但是让我困惑的是,有两种不同的方法会产生不同的结果.就这样..在 问题是: 使用 ...

  8. python设计一个学生类姓名年龄成绩_C# 编写学生类Student,包含学生姓名,成绩,设计一个友员函数sortDegree(),将学生成绩按大到小排序。...

    满意答案 kdoey 2014.04.11 采纳率:56%    等级:9 已帮助:212人 12345678910111213141516171819202122232425262728293031 ...

  9. python设计一个长方形类_类设计模式python学习~元类

    废话就不多说了,开始... 元类是类的模版,在类的层次上标准类的行为. 面下用使元类现实单例设计模式(设计模式九 采取的是另一种方法): from warnings import * 每日一道理 坚持 ...

  10. python设计一个学生类、包括学号、姓名、性别_设计一个Student类。该类包含学生的姓名、性别、年龄和班级以及构造方法、这些属性的设置和显示。 要求:...

    满意答案 asd0643 2014.09.11 采纳率:46%    等级:9 已帮助:313人 #include #include static char *strsave(char *s) { c ...

最新文章

  1. HDU2925(约瑟夫环问题)
  2. torch.var()、样本方差、母体方差
  3. 一起谈.NET技术,在Mono 2.8上部署ASP.NET MVC 2
  4. 66 Airflow安装与部署
  5. Android实现文字一个一个显示出来
  6. Mask R-CNN详解
  7. DroidBox的环境搭建与使用(Android沙箱、未验证)
  8. linux下Hbase的常用shell命令
  9. 微软请你学Linux,最后4节课,即将收官,错过了就没有了!
  10. 百度360之争的背后
  11. LNMP平台部署及应用
  12. sysdig_Linux 监控和调试利器 Sysdig 入门教程
  13. 数据结构(郝斌老师)
  14. jcr多久更新一次_2020年期刊影响因子正式发布,几家欢喜几家愁?!
  15. ThinkPHP表单信息收集系统
  16. 谷歌出品!机器学习常用术语总结
  17. Apache虚拟主机的三种方式
  18. Java swing的主题风格设置
  19. epoll的LT模式(水平触发)和ET模式(边沿触发)
  20. 游戏感:虚拟感觉的游戏设计师指南——第七章 响应的测量方法

热门文章

  1. JAVAWeb项目 微型商城项目-------(七)后台添加用户管理和商品类型管理操作
  2. 每天一道剑指offer-旋转数组的最小数字
  3. linux删除系统日志文件,Linux不小心删除日志文件syslog的解决方法
  4. PHP什么架构,PHP是什么-PHP的架构及道理概述_后端开发
  5. arcgis 将栅格值提取到点_ArcGIS教程:值提取至点 (空间分析)
  6. 休宁天气预报软件测试,【休宁天气预报】休宁今天天气预报 - 天气史
  7. FFmpeg学习(1)——视频文件格式转换
  8. CentOS 6U7分区大于2TB的磁盘以及挂载大于16TB分区磁盘的解决方案
  9. 300字简单区分线程问题
  10. 算法笔记_面试题_19.链表_模板及示例十几道