鱼C论坛

 找回密码
 立即注册
查看: 1711|回复: 10

[已解决]求大神们帮忙!!

[复制链接]
发表于 2020-5-11 21:47:31 | 显示全部楼层    本楼为最佳答案   
  1. '''
  2. 题:英雄和怪物轮流攻击对方,展示对方受到的伤害与剩余血量,当一方血量低于0时游戏结束。

  3. 思路:
  4.   通过题意得知有2个对象 英雄 和 怪物。
  5.   因题中没有说明英雄和怪物的名称是什么及血量多少,则名称和血量由用户创建对象时输入。
  6.   伤害值则受到攻击时随机生成。
  7.   使用循环实现英雄和怪物轮流攻击,当一方血量低于0时退出循环游戏结束。

  8. 描述 英雄:
  9.   属性:
  10.     名称
  11.     血量
  12.     伤害血量
  13.   方法:
  14.     攻击(攻击对象)
  15.     被攻击
  16.     获取名称
  17.     获取血量
  18.     获取伤害血量

  19. 描述 怪物:
  20.   属性:
  21.     名称
  22.     血量
  23.     伤害血量
  24.   方法:
  25.     攻击(攻击对象)
  26.     被攻击
  27.     获取名称
  28.     获取血量
  29.     获取伤害血量
  30. '''
  31. import random

  32. # 描述英雄
  33. class Hero:
  34.         def __init__(self, name, blood):
  35.                 self.name = name
  36.                 self.blood = blood
  37.                 self.hurBlood = 0

  38.         def attack(self, monster):
  39.                 monster.attacked()
  40.        
  41.         def attacked(self):
  42.                 self.hurtBlood = random.randint(0, 50)
  43.                 if self.blood>0:
  44.                         self.blood -= self.hurtBlood

  45.         def getName(self):
  46.                 return self.name

  47.         def getBlood(self):
  48.                 return self.blood

  49.         def getHurblood(self):
  50.                 return self.hurtBlood
  51.                

  52. # 描述怪物
  53. class Monster:
  54.         def __init__(self, name, blood):
  55.                 self.name = name
  56.                 self.blood = blood
  57.                 self.hurBlood = 0
  58.                
  59.         def attack(self, hero):
  60.                 hero.attacked()
  61.        
  62.         def attacked(self):
  63.                 self.hurtBlood = random.randint(0, 50)
  64.                 if self.blood>0:
  65.                         self.blood -= self.hurtBlood

  66.         def getName(self):
  67.                 return self.name

  68.         def getBlood(self):
  69.                 return self.blood

  70.         def getHurblood(self):
  71.                 return self.hurtBlood

  72. # 游戏开始函数,传入英雄和怪物对象
  73. def startGame(hero, monster):
  74.         flag = True # 用于标记切换攻击
  75.         while True:
  76.                 if(flag):
  77.                         hero.attack(monster)
  78.                         print("%s你被%s攻击,受到了%d点伤害!还剩%d滴血" % (monster.getName(), hero.getName(), monster.getHurblood(), monster.getBlood()))
  79.                         if monster.getBlood()<=0:
  80.                                 print("%s你被杀死了!胜败乃兵家常事 请重新来过。" % (monster.getName()))
  81.                                 break
  82.                         flag = False
  83.                 else:
  84.                         monster.attack(hero)
  85.                         print("%s你被%s攻击,受到了%d点伤害!还剩%d滴血" % (hero.getName(), monster.getName(), hero.getHurblood(), hero.getBlood()))
  86.                         if hero.getBlood()<=0:
  87.                                 print("%s你被杀死了!胜败乃兵家常事 请重新来过。" % (hero.getName()))
  88.                                 break
  89.                         flag = True


  90. # 生成 英雄和怪物
  91. hero = Hero("张三", 100)
  92. monster = Monster("小强", 100)

  93. startGame(hero, monster)
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
Mrzhou1201 + 5 + 5 + 3 无条件支持楼主!

查看全部评分

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

使用道具 举报

发表于 2020-5-11 22:01:08 | 显示全部楼层
Mrzhou1201 发表于 2020-5-11 21:59
小版主写的太好了

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-22 12:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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