Программа довольно понятная. Я начал играть с основами Python и действительно потерялся в этом. Я привык к C++ и прекрасной возможности передавать вещи по ссылке. Но в этом переменная класса, которую я пытаюсь изменить (Fighter.statHEALTH), не изменится, и я читал, что это потому, что целые числа неизменяемы, и он просто создает новый объект локально. Итак, как я могу применить изменение к исходной переменной? Я гуглил и гуглил, но безрезультатно. Я не хочу выполнять какой-то уродливый маневр, например, составлять список и передавать его, если мне это не нужно.
#python 3.2.2
# Create a small test project to have combat between two entities. #
# Combat should include 3 different stats: statATK, statDEF, and statHEALTH. #
# The two entities should be of the same class. #
class Fighter:
def __init__(self):
self.statHEALTH = 10
self.statATK = 3
self.statDEF = 3
def attack(self, enemyhealth):
enemyhealth = (enemyhealth - self.statATK)
return enemyhealth
def defend(self):
statDEF += 1
def main():
James = Fighter()
Keaton = Fighter()
while James.statHEALTH > 0:
print("Do you wish to attack or defend?")
print("1. Attack")
print("2. Defend")
choice = input()
if choice == "1":
James.attack(Keaton.statHEALTH)
print("You did", James.statATK, "damage!")
Keaton.attack(James.statHEALTH)
print("Keaton has", Keaton.statHEALTH, "health left.")
print("Keaton did", Keaton.statATK, "damage!")
print("You have", James.statHEALTH, "health left.")
#elif choice == "2":
#James.defend()
#Keaton.attack(James.statHEALTH)
main()