April 21
Выживи в холодильнике! 🧃🧀🥒
"Выживи в холодильнике" — это текстовая Telegram-игра, встроенная в бота. Игроки каждый день делают выбор между несколькими продуктами из холодильника, стараясь выжить как можно дольше.
Основная цель — продержаться как можно больше дней, сохранив жизни и балансируя между голодом, моралью и силой.
🧠 Логика игры
Ежедневный цикл:
- Бот рассылает игрокам кнопки с продуктами.
- Игрок выбирает один из продуктов.
- После дедлайна бот:
- Выводится результат с текущими показателями и комментарием.
Каждый выбор влияет на четыре базовых стата:
- Жизни (lives) — здоровье; если достигает 0, игрок выбывает.
- Сила (strength) — влияет на шансы выжить: каждая единица силы даёт +2% к базовому шансу выжить при обработке исходов и уменьшает штраф от голода (каждые 2 ед. силы компенсируют −1 hunger).
- Голод (hunger) — показывает степень голода персонажа. При высоком уровне голода:
- Снижается сила (−1 strength за каждые 3 пункта голода).
- Повышается риск выбывания при обработке дня (добавочный штраф к шансам).
- Мораль (morale) — отражает боевой дух. При высокой морали:
🎲 Механика расчёта выживания
1. Бросок удачи
int randomChance = (int) (Math.random() * 100) + 1;
2. Шанс выживания
baseChance
— базовый шанс от продукта (например, сыр — 75%).+2%
за каждую единицу силы.+5%
, если мораль ≥ 0;−5%
, если мораль < 0.−1%
за каждый пункт голода.
3. Вывод результата
Если randomChance > survivalChance
, игрок теряет одну жизнь.
📊 Статы игрока
🥒 Продукты
🛠 Компенсация голода
int hungerReduction = (strength / 2) + (morale / 2);
newHunger = hunger + product.hungerDelta - hungerReduction;
📈 Таблица лидеров
Ключевые метрики:
Вывод:
Можно формировать leaderboard по:
⚠ Исключения и ограничения
- Если
lives <= 0
— игрок считается выбывшим, но остаётся в таблице. - Статы не могут быть отрицательными.
- Можно ограничить максимум голода, силы и морали (например, по 10), если нужно сбалансировать игру.