游戏的要求:如图

image.png (358.8 KB, 下载次数: 1)

游戏要求

2020-5-14 13:02 上传

源代码:importrandomasr

#英雄(大类),包含精灵和人类两类sclassHero:

#属性,这里使用__init__方法,在创建Hero对象时默认被调用def__init__(hero, name):

hero.name = name     # 名字hero.level = 1# 等级hero.max_hp = hero.level*20# 最大生命hero.current_hp = hero.level*20# 当前生命#攻击defattack(hero):

atk = r.randint(0, hero.level*10-1)

print("-->英雄发起攻击!")

returnatk

#升级defupgrade(hero):

hero.current_hp= hero.current_hp+10#当前血量hero.level = hero.level +1#等级print("---->{} 升级,当前等级 {},当前血量 {}".format(hero.name, hero.level, hero.current_hp))

# 人类(英雄分支1)classHeroHuman(Hero):

# 属性def__init__(hero, name):

super(HeroHuman, hero).__init__(name)#继承hero.avd = 0.4# 灵活性#防御defdefense(hero, atk):

is_hurt = r.random()#产生随机数,如果小于0.4则躲避,大于则命中ifhero.avd < is_hurt:

hero.current_hp -= atk

print("-->英雄_人类:受到 {}点伤害,当前血量 {}".format(atk, hero.current_hp))

else:

print("-->英雄_人类:躲避,未命中!")

# 精灵(英雄分支2)classHeroSpirit(Hero):

# 属性def__init__(hero, name):

super(HeroSpirit, hero).__init__(name)

hero.avd = 0.7# 灵活性# 防御defdefense(hero, atk):

is_hurt = r.random()

ifhero.avd < is_hurt:

hero.current_hp -= atk

print("-->英雄_精灵:受到 {}点伤害,当前血量 {}".format( atk, hero.current_hp))

else:

print("-->英雄_精灵:躲避,未命中!")

#怪兽(大类),包含怪兽和大怪兽classMonster:

#属性def__init__(monster, name, level):

monster.name = name      # 名字monster.level = level    # 等级monster.max_hp = int(level * 15)  # 最大生命monster.current_hp = int(level * 15)  # 当前生命# 攻击defattack(monster):

atk = r.randint(0, monster.level * 10- 1)

print("-->怪兽发起攻击!".format(monster.name))

returnatk

# 防御defdefense(monster, atk):

monster.current_hp -= atk

print("-->怪兽受到 {} 点伤害,当前血量 {}".format( atk, monster.current_hp))

# 大怪兽,拥有护盾属性并重写防御方法classMonster_bigMonster(Monster):

# 属性def__init__(Big_monster, name, level):

super(Monster_bigMonster, Big_monster).__init__(name, level)

Big_monster.shield = Big_monster.max_hp * 0.2# 护盾# 防御defdefense(Big_monster, atk):   # 重写防御方法,受到攻击优先扣除护盾ifBig_monster.shield - atk >= 0:

Big_monster.shield = atk-Big_monster.shield

print("-->大怪兽:受到 {}点伤害,当前护盾值 {} 血量 {}".format( atk, Big_monster.shield, Big_monster.current_hp))

else:

ifBig_monster.shield > 0:

Big_monster.current_hp -= Big_monster.shield

Big_monster.shield = 0print("-->大怪兽:受到 {}点伤害,当前护盾值 {} 血量 {}".format( atk, Big_monster.shield, Big_monster.current_hp))

else:

Big_monster.current_hp -= atk

print("-->大怪兽:受到 {}点伤害,当前护盾值 {} 血量 {}".format(Big_monster.name, atk, Big_monster.shield, Big_monster.current_hp))

#主方法defmain():

#生成一个英雄,两个低等级怪兽,一个大怪兽h1 = HeroHuman("人类")

m1 = Monster("怪兽1", 1)

m2 = Monster("怪兽2", 2)

m3 = Monster_bigMonster("大怪兽", 3)

enemy = [m1, m2, m3]

r = 1while True:

print("回合{}:".format(r))

enemy[0].defense(h1.attack())   # 英雄先攻击第一个怪兽,直到一方死亡ifenemy[0].current_hp <= 0:   # 如果怪兽阵亡,从列表中删除这个怪兽,英雄升级print("{} 阵亡".format(enemy[0].name))

h1.upgrade()

delenemy[0]

# 判断英雄成功还是失败iflen(enemy) == 0:      # 英雄胜利的条件是怪兽数量为0print("---->英雄:Win!")

returnforeach inenemy:       # 英雄攻击完后,怪兽依次攻击英雄h1.defense(each.attack())

ifh1.current_hp <= 0:    # 失败print("---->英雄:Lose!")

returnr += 1# 回合数#python程序入口if__name__ == '__main__':

main()

运行效果:

image.png (40.22 KB, 下载次数: 2)

运行效果1

2020-5-14 13:04 上传

image.png (29.42 KB, 下载次数: 2)

运行效果2

2020-5-14 13:05 上传

c语言英雄打怪兽掉箭题目,面向对象练习,写的一个简单的文字游戏,英雄打怪兽...相关推荐

  1. c语言英雄打怪兽掉箭题目,荒野乱斗:“打怪兽”有诀窍,英雄选择尤其重要...

    原标题:荒野乱斗:"打怪兽"有诀窍,英雄选择尤其重要 荒野乱斗更新版本之后,有一个新的模式引起了三哥的注意.因为有"首领之战"的经验,三哥第一时间就尝试了这个新 ...

  2. c语言英雄打怪兽掉箭题目,高中English单句翻译练习精选840句

    高中英语单句翻译练习精选840句 Translation (1) 1.她很有教书的才干.真遗憾她放弃了她的教师职 位.(ability, abandon) 2.每次我看到他的时候,他总是专心于他的功课 ...

  3. 最近写了一个简单的面向对象的脚本语言 Q 语言

    最近写了一个简单的面向对象的脚本语言 Q 语言,语法类似于 Javascript, 加入了一些 python 的语法功能. 同时实现了部分的 Javascript prototype 的功能 (个人觉 ...

  4. C语言写的一个简单文字游戏-勇者斗恶龙

    最近在学C语言,昨晚利用已学的循环.函数.变量等知识写了这样一个简陋的文字游戏,发在CSDN论坛上试试~~另外,如果代码有什么问题或者坏习惯,希望能帮我指出来.谢谢! #include <std ...

  5. C++写的一个简单的词法分析器(分析C语言)

    实验用: 几点注意: 1.代码又长又臭,时间关系,没有优化,冗余项多(我都看不下去了.囧) 2.加了一下简单的错误检测.(在mapping.h中定义了错误类型,可以查阅) 3.使用头文件宏定义来表示单 ...

  6. 打地鼠程序代码C语言,自己用C写的一个简单的打地鼠游戏代码出了个问题(鼠标和循环不能...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 b=0; /*保证上面不出界*/ if(a>getmaxx()-R) a=getmaxx()-R; /*保证右边不出界*/ if(b>getm ...

  7. c语言控制台数字键打地鼠,自己用C写的一个简单的打地鼠游戏代码出了个问题(鼠标和循环不能...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 b=0; /*保证上面不出界*/ if(a>getmaxx()-R) a=getmaxx()-R; /*保证右边不出界*/ if(b>getm ...

  8. 用html5 Canvas制作一个简单的游戏 英雄抓小怪物(上)

    1.创建一个Canvas对象 先在HTML页面上创建画布,然后再通过document.getElementById()来获取. //创建画布canvas,并获取画布上下文环境 var  canvas ...

  9. C语言写的一个简单的计算器

    大学的第一学期就这样结束了.前阵子临近放假,不知道该干嘛,就分别用java和C语言写了两个东西.java写了个文件查找的程序.C语言写了个简易的计算器.至于为什么写计算器~因为刚学C语言的时候,还没摸 ...

最新文章

  1. docker 连接容器
  2. python机器学习及实践_Python机器学习及实践
  3. Python递归实现汉诺塔
  4. Leet Code题解 - 1559. Detect Cycles in 2D Grid 检测二维无向图中的环
  5. 1195C. Basketball Exercise
  6. go 单元测试 testing 打印输出_2020,你需掌握go 单元测试进阶篇
  7. python小城市创业好项目_小城市创业好项目有哪些?
  8. 广西二级c语言试题,广西区计算机等级考二级C语言笔试试题及答案.doc
  9. linux 查看文件工具,lsof---Linux查看文件信息的强大工具
  10. 【java学习之路】(java SE篇)010.多线程
  11. 使用struts2中默认的拦截器以及自定义拦截器
  12. 实战PHP皮皮虾去水印解析接口
  13. Chrome电脑免安装多个浏览器版本号共存
  14. 计算机页面下没有桌面图标,电脑下面小图标没了怎么办
  15. PSI成长之路_配置并成功运行
  16. 铸造数据安全堤坝,华为云数据灾备解决方案就是强
  17. C++STL的发展历程
  18. TerminateThread
  19. 超级右键--Mac上最强的右键菜单工具
  20. C# WinForm跨线程访问UI控件

热门文章

  1. Solana 宝藏项目 — Swim Protocol,解决跨链痛点,突破价值壁垒
  2. 微博网页端登录验证码处理
  3. 华为数通笔记-DNS
  4. linux 6.3 vnc安装包,CentOS-6.3安装vnc
  5. 流媒体音乐发展十年无果 成本定位问题难解
  6. 大伟 类似魔兽世界角色控制
  7. 发生在软件测试工程师身上如同段子一样的日常
  8. PDF生成、合并及压缩优化(Java)
  9. Linux系统从uboot到内核启动流程
  10. 库存平衡与调拨系统的算法架构