Игра с ходами, нужен способ получить возврат функции в другой ход

#python #python-3.x #python-3.6

#python #python-3.x #python-3.6

Вопрос:

Я создаю игру, в которой я могу собирать ресурсы или строить, когда я отправляю рабочих, но я не могу придумать способ получить эти ресурсы или закончить строительство в зависимости от хода и времени (ходов), необходимого для завершения этих действий.

Я уже создал рабочий класс, и у него есть метод для сбора, и он выдает случайное значение, которое я сохраняю в классе Player. Кроме того, мой игровой класс отслеживает ход, в котором я и компьютеры.

 class Game:
    def __init__(self, player = None):
        self.player = player
        self.turn = 1

class Player:
    def __init__(self):
        self.workers = [Worker(), Worker(), Worker()]
        self.resourcers = 0

class Worker:
    def __init__(self):
        self.hp = 100

    def gather(self):
        return randint(MIN_CANTIDAD_RECURSO, MAX_CANTIDAD_RECURSO)


player = Player()
game = Game()
game.player = player
for worker in player.workers:
    player.resources  = worker.gather

game.turn  =1
  

Сбор должен давать результат в следующем ходу, а сборка должна давать его в зависимости от здания.

Ответ №1:

В общем смысле, вы сохраняете нужные вам значения в соответствующем объекте и передаете их в качестве параметров любому методу, требующему эти значения. Например, вам нужно будет сохранить продолжительность хода действия в возвращаемом значении этого действия, например, в class Worker

 def gather(self):
    # Some code that determines gather_value and duration...
    return [gather_value, duration]
  

и тогда использование ресурсов будет выглядеть примерно так

 def use_gather(gather, turn): # Pass in (return value from gather, game.turn)
    # Use parameters...
  

С таким расплывчатым вопросом трудно сказать что-либо еще.

Комментарии:

1. Я хотел бы сохранить данные о ожидающих действиях после выполнения действия в этом формате [‘gather’, ‘gold’, 1], где последнее значение — это ход, в котором я выполнил действие. Поэтому, когда состояние игры (ход) меняется, я хотел бы получить значение этого действия. По сути, я хочу соединить ход, когда я выполнял функцию, и ход игры.