Я работаю над простой текстовой игрой и наткнулся на то, что не знаю, как это сделать. В моей игре вы получаете здоровье, силу, защиту, опыт и уровни по мере прохождения игры. Я сделал так, что всякий раз, когда происходит битва, мне не нужно переписывать все это в код, создав функцию специально для битвы. Поэтому, когда я хочу, чтобы произошла битва, я просто набираю battle1(), чтобы произошла последовательность битв. Единственная проблема заключается в том, что переменные статистики меняются так часто, и в коде, который я установил, поэтому, если вы используете зелье и подвергаетесь нападению, а ваше здоровье превысит максимальное здоровье вашего персонажа (которое варьируется от уровня к уровню), он будет быть установлен на максимальное здоровье, которое вы можете иметь (например, игрок использует зелье, когда у него 15 единиц здоровья, а максимальное здоровье равно 15, оно просто останется на уровне 15 единиц здоровья, а не увеличится до 17). Вот мой код:
class player:
def __init__ (self, name, health, strength, defense):
self.__health = health
self.__strength = strength
self.__defense = defense
self.__name = name
def getName(self):
return self.__name
def getHealth(self):
return self.__health
def getStrength(self):
return self.__strength
def getDefense(self):
return self.__defense
def getPotion(self):
return self.__potion
def subHealth(self, num):
self.__health -= num
return self.__health
def setHealth(self, h):
self.__health = h
def main():
name1 = input("What would you like your name to be?")
print("Hello,", name1, "you are on a quest to save otis from the evil Dongus. You must slay him, or Otis will poop.")
player1 = player(name1, 10, 2, 1)
enemy = player("Rat", 15, 0, 0)
print("Your stats are, health:", player1.getHealth(), "strength:", player1.getStrength(), "and defense:", player1.getDefense())
print("Fight.")
attack =input("Type 1 to attack.")
if attack == "1":
enemy.subHealth(player1.getStrength()-enemy.getDefense())
**if enemy.getHealth()>15:
enemy.setHealth(15)**
print(enemy.getName()+"'s health is",enemy.getHealth())
player1.subHealth(enemy.getStrength()-player1.getDefense())
**if player1.getHealth()>10:
player1.setHealth(10)**
main()
Части, выделенные жирным шрифтом, — это части кода, о которых я говорю. Итак, есть ли способ сделать так, например, когда вы на 5 уровне, ваше максимальное здоровье установлено на 15, а не на десять? Имейте в виду, что во время битвы ваши враги наносят вам урон, поэтому вы не можете просто сделать player1.getHealth(). Спасибо!
health
вместо__health
, затем используйтеplayer1.health
вместоplayer1.getHealth()
иplayer1.health = foo
вместоplayer1.setHealth(foo)
. - person abarnert   schedule 10.08.2014