Python 角色对战游戏

人机对战,自选角色(战士、剑客、盗贼),电脑角色随机生成,每个角色两个技能,随机先手,考虑攻击、暴击、防御。
练习 类的继承,随机函数

#!/usr/bin/python3
# -*- coding: UTF-8 -*-
import random
import timeglobal player0
global player1class Role:def __init__(self, na, hp, dam, de):self.name = na  # 姓名self.health = hp  # 血量self.damage = dam  # 攻击self.defense = de  # 防御class Tank(Role):def __init__(self, na, hp, dam, de):super().__init__(na, hp, dam, de)self.vocation = '战士'def attack(self, enemy):print("%s当前生命值%d" % (self.name, self.health))__dam = self.damage  # 技能攻击力zs1 = random.randint(1, 2)if zs1 == 1:print("%s大锤一轮,呼呼生风,径直向%s的胸口打去,打出伤害%d" % (self.name, enemy.name, __dam))else:__dam = __dam * 1.2print("%s双锤并起,兵分两路,打向%s的左肋、右肋,打出伤害%d" % (self.name, enemy.name, __dam))__hit = __dam - enemy.defense  # 技能伤害print("%s护甲为%d,造成真实伤害%d" % (enemy.name, enemy.defense, __hit))enemy.health = enemy.health - __hitif enemy.health < 0:enemy.health = 0print("%s剩余血量%d" % (enemy.name, enemy.health))class Sword(Role):def __init__(self, na, hp, dam, de):super().__init__(na, hp, dam, de)self.vocation = '剑士'def attack(self, enemy):print("%s当前生命值%d" % (self.name, self.health))__dam = self.damage  # 技能攻击力rate = random.randint(1, 100)if rate >= 75:  # 暴击几率print("%s打出了2倍暴击" % self.name)__dam = __dam * 2  # 暴击倍数zs1 = random.randint(1, 2)if zs1 == 1:print("%s哈哈一笑,突然间左腿微蹲,长剑呼的甩出,打在%s的腰间,打出伤害%d" % (self.name, enemy.name, __dam))else:__dam = __dam * 1.5print("%s剑势如风,快若闪电,同时攻击%s上中下三路,打出伤害%d" % (self.name, enemy.name, __dam))__hit = __dam - enemy.defenseprint("%s护甲为%d,造成真实伤害%d" % (enemy.name, enemy.defense, __hit))enemy.health = enemy.health - __hitif enemy.health < 0:enemy.health = 0print("%s剩余血量%d" % (enemy.name, enemy.health))class Thief(Role):def __init__(self, na, hp, dam, de):super().__init__(na, hp, dam, de)self.vocation = '盗贼'def attack(self, enemy):print("%s当前生命值%d" % (self.name, self.health))__dam = self.damage  # 技能攻击力rate = random.randint(1, 100)if rate >= 75:print("%s打出了4倍暴击" % self.name)__dam = __dam * 4  # 暴击倍数elif rate >= 50:print("%s打出了3倍暴击" % self.name)__dam = __dam * 3  # 暴击倍数elif rate >= 25:  # 暴击几率print("%s打出了2倍暴击" % self.name)__dam = __dam * 2  # 暴击倍数zs1 = random.randint(1, 2)if zs1 == 1:print("%s手握小李飞刀,抬手便向%s射去,打出伤害%d" % (self.name, enemy.name, __dam))else:__dam = __dam * 1.8print("%s双手各握一把匕首,一个闪步来到了%s身边,顺势刺出,打出伤害%d" % (self.name, enemy.name, __dam))__hit = __dam - enemy.defenseprint("%s护甲为%d,造成真实伤害%d" % (enemy.name, enemy.defense, __hit))enemy.health = enemy.health - __hitif enemy.health < 0:enemy.health = 0print("%s剩余血量%d" % (enemy.name, enemy.health))def main():while True:print("*******************************")print("**********欢迎来到决斗场**********")print("*******************************")print("    输入 S 创建角色          ")print("*******************************")print("    输入 Q 退出游戏          ")print("*******************************")ch = input("请输入您的选择:")if ch == 'S' or ch == 's':first()breakelif ch == 'Q' or ch == 'q':breakelse:print("请输入正确的选择!")continue# 职业字典
dict_vocation = {'T': '坦克', 'S': '剑客', 'D': '盗贼'}def first():global player1while True:name = input("勇士,请为您的角色命名:")print("-------------------------------------------------")print("T: 坦克,重甲,血多防高攻击低\n""S: 剑客,轻甲,血量、防御、攻击都一般,有几率出双倍暴击\n""D: 盗贼,布甲,血少防低攻击高,有几率出多倍暴击\n")cf = input("%s,请选择您的职业:" % name)print("-------------------------------------------------")if cf == 'T' or cf == 't':hp = random.randint(2500, 3000)dam = random.randint(400, 600)de = random.randint(120, 180)player1 = Tank(name, hp, dam, de)breakelif cf == 'S' or cf == 's':hp = random.randint(2000, 2500)dam = random.randint(600, 800)de = random.randint(80, 120)player1 = Sword(name, hp, dam, de)breakelif cf == 'D' or cf == 'd':hp = random.randint(1000, 2000)dam = random.randint(800, 1000)de = random.randint(40, 80)player1 = Thief(name, hp, dam, de)breakelse:print("输入错误,请重新输入!")continueshow_player_info(_player=player1)time.sleep(1)# 初始化电脑角色global player0random1 = random.randint(1, 3)if random1 == 1:player0 = Tank('龙沧海', 3000, 500, 160)elif random1 == 2:player0 = Sword('风无痕', 2000, 700, 100)else:player0 = Thief('武小凤', 1500, 900, 80)print("电脑选择了%s与你对战" % player0.name)show_player_info(_player=player0)random2 = random.randint(1, 2)if random2 == 1:print("止戈为武,以武会友,%s请你先出手!" % player0.name)duel(_player0=player0, _player1=player1)elif random2 == 2:print("%s不讲武德,卑鄙的向你发起了偷袭" % player0.name)duel(_player0=player1, _player1=player0)def show_player_info(_player):print("%s是一位%s\n生命值%d\n攻击力%d\n防御力%d"% (_player.name, _player.vocation, _player.health, _player.damage, _player.defense))print("****************************************")def duel(_player0, _player1):while True:_player1.attack(_player0)if _player0.health <= 0:print("******************************")print("恭喜%s获得胜利!" % _player1.name)breakprint("---------------------------------")time.sleep(1)_player0.attack(_player1)if _player1.health <= 0:print("******************************")print("%s赢得了决斗!" % _player0.name)breakprint("---------------------------------")time.sleep(1)if __name__ == '__main__':main()

Python 角色对战小游戏相关推荐

  1. python自学 适合新手的 python人机对战小游戏

    目录 前言 一,游戏规则 二,游戏拆解: 版本1.0(自定属性,人工PK) 版本2.0(随机属性,自动PK) 版本3.0(打印结果,三局两胜) 前言 有很多人问,怎样学python可以进步最快,我回顾 ...

  2. python人机对战小游戏

    Nice!自己写的第一个小游戏,wanderful!!! 事前没有参照任何代码,只通过前两天学习的循环语句实现,感觉满满的成就感.以下是源代码,可能在大神们看来很稚嫩,但对于小白的我来说却是学习进程中 ...

  3. python联机游戏制作_Python练习01-对战小游戏

    Python练习01-对战小游戏 近期在学习Python,其中有一道练习题,写一个对战小游戏,随机人物,随机属性(血量.攻击).指定我方人物出场顺序,三局两胜,代码如下: import time, r ...

  4. 利用Python做一个简单的对战小游戏

    利用Python做一个简单的文字对战小游戏 一.游戏介绍 1.大体介绍:文字版的对战小游戏,可以利用Python随机生成两个角色,角色带有各自的血量和攻击值两个指标.两人在对战时同时攻击对方,同时造成 ...

  5. Python编写人机对战小游戏(抓狐狸)(2)

    封面图片:<中学生可以这样学Python>,董付国.应根球著,清华大学出版社 =========== 很久很久以前,在公众号里推送过一个抓狐狸游戏,详见Python编写人机对战小游戏(抓小 ...

  6. python王者战斗_Python3 类与对象之王者荣耀对战小游戏

    王者荣耀对战小游戏 # 定义英雄: 亚瑟 class Arthur: hero_type = 'Tank' def __init__(self, attack_value=164, armor=98, ...

  7. python面向对象实例王者荣耀_Python3 类与对象之王者荣耀对战小游戏

    王者荣耀对战小游戏 # 定义英雄: 亚瑟 class Arthur: hero_type = 'Tank' def __init__(self, attack_value=164, armor=98, ...

  8. 童年经典回忆 | 从零开始带大家用Python撸一个魔塔小游戏呀(2)

    导语 上一期我们带大家完成了魔塔游戏每一层的初始化画面的制作: 童年经典回忆 | 从零开始带大家用Python撸一个魔塔小游戏呀(1) 这一期我们会带大家进一步复现我们的魔塔小游戏,主要内容包括英雄类 ...

  9. 使用UE4制作简单的局域网对战小游戏

    原帖地址:https://arcecho.github.io/2017/04/28/使用UE4制作简单的局域网对战小游戏/ 大多数文章都是只讲到大致的UE4网络的概念,并未涉及实际使用.事实上在使用的 ...

最新文章

  1. 2022-2028年中国激光切管机行业市场研究及前瞻分析报告
  2. 计算机视觉研究生文献和复现哪个更重要?
  3. 交通银行软件中心编制_国家标准研究项目区块链服务技术安全要求编制启动会顺利召开...
  4. WPF自定义产品框架
  5. ORACLE REDO 日志调整
  6. Tensorflow逻辑回归处理MNIST数据集
  7. 利用python提取abaqus节点坐标的脚本_用于在Abaqus中提取结点力的Python程序
  8. 使用J-link+J-Flash给STM32芯片烧写序列号
  9. electron最小化托盘、禁用右键菜单
  10. http basic认证
  11. 应用程序正常初始化(0xc0000034)失败
  12. java编程电话号码查询_java课程设计电话号码查询系统(15页)-原创力文档
  13. com.ning.http.client 替换
  14. 【欺骗眼睛】可能你不会相信,图中的A色块和B色块是同一个颜色
  15. ck6.8整合php,WordPress整合ckplayer X和ckplayer 6.8的最新完美代码
  16. UTF-8,UTF-16,UTF-32编码方式都是UNICODE,但只是他们的保存方式不同。
  17. (附源码)基于springboot的物流配货管理系统的设计与实现 毕业设计 250858
  18. Flutter查看库的依赖关系
  19. iPhone手机 手机设备号和手机串号imsi
  20. 5.4 Residual diagnostics

热门文章

  1. 为什么说大公司不是天堂,里面有哪些坑?
  2. 牛客 - 单链表排序
  3. 「取长补短」的RefineDet物体检测算法
  4. 展厅 智能 中控 安卓
  5. windows10 输入法 切换 热键 快捷键 更改 设置
  6. 2014计算机等级考试三级网络技术,2014年计算机等级考试三级网络技术试题
  7. 「艾尔斯马克绘」马克笔浙江古民居写生
  8. Electron入门教程1 —— 编写第一个桌面应用程序
  9. Ubuntu紫色背景颜色代码
  10. 大学计算机专业业余学PS,大学ps_电脑基础知识_it计算机_专业资料—培训.ppt