Я пытаюсь программировать настольную игру, используя python и объектно-ориентированное программирование.Тем не менее, структура моих классов и свойств кажется немного извилистой, даже если я заставил это делать то, что я хочу.Это не кажется очень элегантным, и я уверен, что это приведет к тому, что все станет слишком сложным и затруднит выполнение кода по мере продвижения.Я попытаюсь привести упрощенный пример того, как я структурировал вещи:
class GameState:
def __init__(self, n_players):
self.n_players = n_players
self.players = []
for player in range(self.n_players):
self.players.append(Player(player))
// other properties
// other functions
class Player:
def __init__(self, name):
self.name = name
self.building = Building()
self.workers = 3
// other properties
class Building:
def __init__(self):
self.worker = False
def action(self, player):
if self.worker == True:
player.workers += 1
Но теперь, если я хочу, чтобы игрок использовал действие здания, я должен сделать что-то вроде ниже.Такое чувство, что я должен быть в состоянии структурировать вещи лучше, чтобы избежать необходимости передавать экземпляр класса Player в функцию действия Building.
game = GameState(4)
game.players[0].building.action(game.players[0])
Идея состоит в том, что у каждого игрока будет экземпляр Building.класс.