Чтобы иметь некоторое упражнение в изучении Python, особенно с объектно-ориентированным программированием.Я создаю простую текстовую игру.Я немного борюсь с использованием глобальных переменных.Люди говорят, что лучше избегать их.
Мой вопрос, как я могу заставить вещи работать без них и где объявлять эти переменные.
В настоящее время в моем методе main () я запускаю игру на основе классов для каждой комнаты или взаимодействия, которое может происходить в игре.Но есть некоторые объекты, к которым я хочу получить доступ в любое время, например враги или главный герой, такие как Здоровье, Инвентарь и т. Д. (См. Код).
Я создал глобал из этих переменных для доступа к нему в любое время, но думаю, что не должен.
Любой совет, как мне это сделать?
class Character(object):
def __init__(self, location, accuracy):
self.current_health = 100
self.max_health = 100
self.max_ammo = 20
# self.current_ammo = 0
self.current_ammo = 20
# self.inventory = {}
self.inventory = {'Gun': True}
self.location = location
self.accuracy = accuracy
class MainCharacter(Character):
# some extra attributes only for the main character
class EnemyChar(Character):
def __init__(self, location, accuracy, can_see_you=True):
self.type = 'Alien'
self.can_see_you = can_see_you
super(EnemyChar, self).__init__(location, accuracy)
def main():
# Some globals to be able to access anytime
global enemies, main_char, keypad
# Where we start
first_room = 'first_room'
# Enemies
enemies = {
#'Enemy_1': EnemyChar('small_ally', 30, False),
'Enemy_1': EnemyChar(first_room, 30, False),
'Enemy_2': EnemyChar(first_room, 90)
}
# You
main_char = MainCharacter(first_room, 50)
# Stuff to interact with
keypad = Keypad()
map = Map(first_room)
game = GameEngine(map)
game.play()
if __name__ == '__main__':
main()
В настоящее время это работает с моими глобальными переменными, но я думаю, что это не "правильный" способ сделать это.