我正在编写一个简单的Python程序,它是一个基于文本的战斗模拟器,我使用类来创建英雄和敌人。我已经在我的英雄类中创建了一个攻击功能,但是它似乎并没有像我想要的那样从英雄的力量中减去敌人的生命。
下面是代码:
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)需要看到的主要内容是敌人类中的变量、英雄类中的攻击函数以及英雄的输入变量。
发布于 2022-04-01 16:18:13
你刚刚出了个错误。在attack()方法中,您编写了
Enemy.eHealth -= self.strength而不是
enemy.eHealth -= self.strength而且,由于您无法从Enemy 类中减去运行状况,所以会出现您提到的问题。
https://stackoverflow.com/questions/71709855
复制相似问题