首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python类的问题

Python类的问题
EN

Stack Overflow用户
提问于 2022-04-01 16:05:37
回答 1查看 46关注 0票数 0

我正在编写一个简单的Python程序,它是一个基于文本的战斗模拟器,我使用类来创建英雄和敌人。我已经在我的英雄类中创建了一个攻击功能,但是它似乎并没有像我想要的那样从英雄的力量中减去敌人的生命。

下面是代码:

代码语言:javascript
复制
import random

class Enemy:
  eName = "Name"
  eHealth = 0
  eStrength = 0
  def __init__ (self, eName, eHealth, eStrength):
    self.eName = eName
    self.eHealth = eHealth
    self.eStrength = eStrength
  def attack (self):
    print("The enemy attacked you and dealt", self.eStrength, "damage!")
    Hero.health -= self.eStrength
  def __repr__(self):
    if self.eName == "Zombie":
      return "Zombie"
    elif self.eName == "Skeleton":
      return "Skeleton"
    else:
      return "Spider"

class Hero:
  name = "Name"
  health = 0
  strength = 0
  def __init__ (self, name, health, strength):
    self.name = name
    self.health = health
    self.strength = strength
  def attack(self, enemy):
    print("You attacked", enemy, "for", self.strength, "damage!\n")
    Enemy.eHealth -= self.strength
    print(enemy, "now has", enemy.eHealth, "health points left!\n")

print("Welcome to my fighting simulator!")
hName = input("Please input your character's name:\n")
hHealth = int(input("Please enter your hero's amount of health points (10-25):\n"))
hStrength = int(input("Please enter your hero's amount of strength points (2-4): \n"))
character = Hero(hName, hHealth, hStrength)

zombie = Enemy("Zombie", 25, 3)
skeleton = Enemy("Skeleton", 15, 4)
spider = Enemy("Spider", 20, 2)

randEnemy = random.randint(1, 3)

if randEnemy == 1:
  print("\nYour enemy will be a zombie!\n")
  chosenEnemy = zombie
elif randEnemy == 2:
  print("\nYour enemy will be a skeleton!\n")
  chosenEnemy = skeleton
else:
  print("\nYour enemy will be a spider!\n")
  chosenEnemy = spider

while True:
  if character.health == 0:
    print("You died!")
  elif chosenEnemy.eHealth == 0:
    print("You won!")
  action = input("What would you like to do? (h = heal, a = attack): ")
  if (action == 'a') or (action == 'A'):
    character.attack(chosenEnemy)

需要看到的主要内容是敌人类中的变量、英雄类中的攻击函数以及英雄的输入变量。

EN

回答 1

Stack Overflow用户

发布于 2022-04-01 16:18:13

你刚刚出了个错误。在attack()方法中,您编写了

代码语言:javascript
复制
Enemy.eHealth -= self.strength

而不是

代码语言:javascript
复制
enemy.eHealth -= self.strength

而且,由于您无法从Enemy 中减去运行状况,所以会出现您提到的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71709855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档