Обработка событий пользователя

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

Проблема заключается в том, что я не знаю, как правильно реализовать обработку команд.

Введение в курс дела:

У меня есть два класса Tamagochi и Cat.

  • Первый класс отвечает за обновление и хранение игровых данных: состояние зверька, игровую статистику, сохранение данных.
  • Второй класс отвечает за хранение данных самого зверька: его голод, настроение, усталость.

Если я правильно понимаю, то мне необходимо создать переменную типа Queue, в которую будут помещаться команды, переданные пользователем. После чего, в методе Tamagochi.update(), каждую итерацию брать из очереди команды и обрабатывать их через обычное условие.

Текущее состояние метода update (Этот метод выполняется каждую итерацию в main цикле):

# Обновление состояний
def update(self):
    # Проверяем показатели, если ниже 0, то котик мертв.
    if (self.cat.hungry < 0 or self.cat.mood < 0 or self.cat.sleep < 0) and self.cat.is_alive:
        self.cat.die()  # Пока-пока, котик...
        self.run = False
        
    # Проверяем условие жив ли котик
    if not self.cat.is_alive:
        return 
    
    # Уменьшаем показатели. 
    # Уменьшаем сытность  
    if (datetime.now() - self.last_update_hungry).seconds >= self.cat.delay_hungry:
        self.last_update_hungry = datetime.now()
        self.cat.hungry -= self.cat.decline_hungry
    
    # Убавляем настроение
    if (datetime.now() - self.last_update_mood).seconds >= self.cat.delay_mood:
        self.last_update_mood = datetime.now()
        self.cat.mood -= self.cat.decline_mood
    
    # Повышаем усталость
    if (datetime.now() - self.last_update_sleep).seconds >= self.cat.delay_sleep:
        self.last_update_sleep = datetime.now()
        self.cat.sleep -= self.cat.decline_sleep

    '''
    Если я правильно понимаю, то будет както-то так?
    
    task = Queue.get()
    if task == 'feed':
        self.cat.feed()
    if task == 'play':
        self.cat.play()
    '''

Ответы (0 шт):