鱼C论坛

 找回密码
 立即注册
查看: 1874|回复: 17

英雄和怪兽互打

[复制链接]
发表于 2020-5-11 20:49:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
英雄pk怪物
用面向对象的方式编写一个小游戏,实现如下功能:英雄和怪物轮流攻击对方,展示对方受到的伤害与剩余血量,当一方血量低于0时游戏结束。
游戏输出结果如下所示:
小强你被张三攻击,受到了6点伤害!还剩54滴血
张三你被小强攻击,受到了25点伤害!还剩75滴血
小强你被张三攻击,受到了9点伤害!还剩45滴血
张三你被小强攻击,受到了19点伤害!还剩56滴血
小强你被张三攻击,受到了10点伤害!还剩35滴血
张三你被小强攻击,受到了23点伤害!还剩33滴血
小强你被张三攻击,受到了11点伤害!还剩24滴血
张三你被小强攻击,受到了22点伤害!还剩11滴血
小强你被张三攻击,受到了10点伤害!还剩14滴血
张三你被小强攻击,受到了24点伤害!还剩-13滴血
张三你被杀死了!胜败乃兵家常事 请重新来过。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-11 20:51:06 | 显示全部楼层
可以看出来,张三很垃圾
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-11 20:53:02 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-11 20:51
可以看出来,张三很垃圾

哈哈哈哈 这个程序大神可以帮帮忙吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:53:17 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-11 20:51
可以看出来,张三很垃圾


  1. print('''小强你被张三攻击,受到了6点伤害!还剩54滴血
  2. 张三你被小强攻击,受到了25点伤害!还剩75滴血
  3. 小强你被张三攻击,受到了9点伤害!还剩45滴血
  4. 张三你被小强攻击,受到了19点伤害!还剩56滴血
  5. 小强你被张三攻击,受到了10点伤害!还剩35滴血
  6. 张三你被小强攻击,受到了23点伤害!还剩33滴血
  7. 小强你被张三攻击,受到了11点伤害!还剩24滴血
  8. 张三你被小强攻击,受到了22点伤害!还剩11滴血
  9. 小强你被张三攻击,受到了10点伤害!还剩14滴血
  10. 张三你被小强攻击,受到了24点伤害!还剩-13滴血
  11. 张三你被杀死了!胜败乃兵家常事 请重新来过。''')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:53:48 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:54:10 | 显示全部楼层

?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:54:32 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:56:04 | 显示全部楼层
乘号 发表于 2020-5-11 20:54
https://fishc.com.cn/thread-168765-1-1.html

没有……
主要是楼主的题目描述就是输出这些东西……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:56:45 | 显示全部楼层
a聪明叶 发表于 2020-5-11 20:53
哈哈哈哈 这个程序大神可以帮帮忙吗

你直接 while 循环 if 判断就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 20:58:55 | 显示全部楼层
a聪明叶 发表于 2020-5-11 20:53
哈哈哈哈 这个程序大神可以帮帮忙吗

用 while 循环 if 判断(很简单的)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 21:10:41 From FishC Mobile | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-11 20:51
可以看出来,张三很垃圾

额,随机伤害,随机血量……
张三确实很lj
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 21:34:17 From FishC Mobile | 显示全部楼层
  1. import random as r
  2. life_value1, life_value2 = r.randint(50,100), r.randint(50, 100)

  3. while 1:
  4.     hit1, hit2 = r.randint(1, 30), r.randint(1, 30)
  5.     # 这里设置血量高于伤害,免得打一下就狗带
  6.     life_value2 -= hit1
  7.     print(f'小强被张三攻击,受到{hit1}点伤害,剩余{life_value2}点生命值')
  8.     # 以上张三攻击
  9.     if life_value1 <= 0:
  10.         print("张三胜利")
  11.         break
  12.     life_value1 -= hit2
  13.     print(f'小强被张三攻击,受到{hit2}点伤害,剩余{life_value1}点生命值')
  14.     if life_value2 <= 0:
  15.         print("小强胜利")
  16.         break
  17.     if life_value1 and life_value2:
  18.         continue
复制代码


附上测试:
Screenshot_20200511_213340_com.huawei.fastapp.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 21:35:43 From FishC Mobile | 显示全部楼层
_2_ 发表于 2020-5-11 21:34
附上测试:

果然还是小强厉害啊
@永恒的蓝色梦想
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 21:47:40 | 显示全部楼层
本帖最后由 liuzhengyuan 于 2020-5-11 21:49 编辑


TA要求用面向对象的方式来写
  1. class battle():
  2.         def out(self):
  3.                 return '''小强你被张三攻击,受到了6点伤害!还剩54滴血
  4. 张三你被小强攻击,受到了25点伤害!还剩75滴血
  5. 小强你被张三攻击,受到了9点伤害!还剩45滴血
  6. 张三你被小强攻击,受到了19点伤害!还剩56滴血
  7. 小强你被张三攻击,受到了10点伤害!还剩35滴血
  8. 张三你被小强攻击,受到了23点伤害!还剩33滴血
  9. 小强你被张三攻击,受到了11点伤害!还剩24滴血
  10. 张三你被小强攻击,受到了22点伤害!还剩11滴血
  11. 小强你被张三攻击,受到了10点伤害!还剩14滴血
  12. 张三你被小强攻击,受到了24点伤害!还剩-13滴血
  13. 张三你被杀死了!胜败乃兵家常事 请重新来过。'''

  14. c = battle()
  15. print(c.out())
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 22:12:17 | 显示全部楼层
我真的是闲的蛋疼............
添加的闪避效果 哈哈
  1. from random import randint,random

  2. class Hero:

  3.     def __init__(self,under_atk=0):       # 初始化英雄数据
  4.         self.life_value = 100 # 初始化生命值
  5.         self.atkmin = 5       # 初始化最小攻击力
  6.         self.atkmax = 13      # 初始化最大攻击力
  7.         self.dodge = 0.4      # 初始化闪避率
  8.         self.under_atk = under_atk # 受到的伤害

  9.     def action_attack(self):  # 定义攻击动作
  10.         judge_dodge = random()# 判断攻击是否miss
  11.         if judge_dodge < self.dodge:
  12.             return '闪避'
  13.         self.actual_atk = randint(self.atkmin,self.atkmax)
  14.         return self.actual_atk



  15. class Monster:

  16.     def __init__(self,under_atk=0):       # 初始化英雄数据
  17.         self.life_value = 60  # 初始化生命值
  18.         self.atkmin = 18      # 初始化最小攻击力
  19.         self.atkmax = 26      # 初始化最大攻击力
  20.         self.dodge = 0.1      # 初始化闪避率
  21.         self.under_atk = under_atk # 受到的伤害

  22.     def action_attack(self):  # 定义攻击动作
  23.         judge_dodge = random()# 判断攻击是否miss
  24.         if judge_dodge < self.dodge:
  25.             return '闪避'

  26.         self.actual_atk = randint(self.atkmin,self.atkmax)
  27.         return self.actual_atk



  28. if __name__ == '__main__':
  29.     H = Hero()
  30.     M = Monster()
  31.     round = 0
  32.     while M.life_value > 0 and H.life_value > 0:
  33.         round += 1
  34.         print(f'第{round}回合,轮到张三攻击!')
  35.         try:
  36.             hero_atk = H.action_attack()
  37.             M.life_value -= hero_atk
  38.             print(f'小强你被张三攻击,受到了{hero_atk}点伤害!还剩{M.life_value}滴血。')
  39.         except TypeError:
  40.             print('张三的攻击落空,小强不削的瞟了一眼')
  41.         print('-' * 60)
  42.         round += 1
  43.         print(f'第{round}回合,轮到小强攻击!')
  44.         try:
  45.             monster_atk = M.action_attack()
  46.             H.life_value -= M.action_attack()
  47.             print(f'小强你被张三攻击,受到了{monster_atk}点伤害!还剩{H.life_value}滴血。')
  48.         except TypeError:
  49.             print('小强的攻击落空,使张三感到自信倍增!')
  50.         print('-' * 60)
  51.     if H.life_value <= 0 :
  52.         print('张三你被杀死了!胜败乃兵家常事 请重新来过。')
  53.     elif M.life_value <= 0 :
  54.         print('小强你被杀死了!胜败乃兵家常事 请重新来过。')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 22:13:47 | 显示全部楼层
_2_ 发表于 2020-5-11 21:35
果然还是小强厉害啊
@永恒的蓝色梦想

看我的哈哈哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-12 07:30:37 From FishC Mobile | 显示全部楼层
Twilight6 发表于 2020-5-11 22:13
看我的哈哈哈

我直接粗暴地 hit1 & hit2
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-12 07:37:09 From FishC Mobile | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-11 20:51
可以看出来,张三很垃圾

老哥你戳中我笑点了哈哈哈哈哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-19 06:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表