Обработка событий пользователя
Я делаю Тамагочи для одного мессенджера. Управление игровым "зверьком" будет происходить, через команды, которые будет улавливать бот в чате мессенджера.
Проблема заключается в том, что я не знаю, как правильно реализовать обработку команд.
Введение в курс дела:
У меня есть два класса 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()
'''