Загрузка данных
# Создай полноценную игру BOBITO — симулятор перекупа телефонов
Ты — профессиональный разработчик игр и веб-приложений. Создай полноценную, красивую и рабочую игру **BOBITO**, в которой игрок становится перекупщиком телефонов: покупает смартфоны, торгуется, продаёт их с прибылью, управляет деньгами и берёт кредиты.
**ВАЖНО:** не ограничивайся макетом или демонстрацией интерфейса. Все кнопки, функции, покупки, продажи, настройки и сохранения должны реально работать.
## 1. Формат игры
- Основной формат — один полноценный HTML-файл `Bobito.html`.
- Используй HTML, CSS и JavaScript без обязательного сервера.
- Игра должна запускаться двойным щелчком по HTML-файлу в браузере.
- Она должна работать на Windows, Android и iPhone.
- Не требуй установки Python, Node.js, базы данных или других программ.
- Сохраняй прогресс через `localStorage`.
- Если возможно, дополнительно подготовь Android APK, который открывает игру в полноэкранном режиме. Но HTML-файл обязателен в любом случае.
- Не используй чужой игровой движок или готовую игру вместо собственной реализации.
## 2. Название и стиль
Название: **BOBITO**.
Стиль интерфейса:
- Современный игровой интерфейс с атмосферой бизнеса и перекупа.
- Основная тема — чёрная и тёмно-серая.
- Яркие фиолетовые акценты, зелёный цвет прибыли, красный цвет долгов и ошибок.
- Красивые карточки телефонов, плавные анимации, приятные эффекты нажатий.
- Адаптивный дизайн: удобно пользоваться мышью на ПК и пальцами на телефоне.
- Не растягивай интерфейс на мобильных устройствах и не допускай горизонтальной прокрутки.
- Сделай логотип BOBITO и собственный визуальный стиль.
- Добавь переключение между тёмной и светлой темами.
## 3. Регистрация игрока
При первом запуске показывай экран создания профиля:
- Поле для ввода никнейма.
- Ник от 2 до 20 символов.
- Разреши буквы, цифры и подчёркивание.
- Кнопка «Начать игру».
- После регистрации показывай главное меню.
- Сохраняй никнейм и прогресс после перезапуска.
- Добавь возможность изменить никнейм в настройках.
Начальные условия:
- Баланс: 25 000 ₽.
- Инвентарь пустой.
- Прибыль: 0 ₽.
- Активных кредитов нет.
## 4. Главное меню
Сделай удобную навигацию с разделами:
1. **Перекуп** — рынок, где покупают телефоны.
2. **Телефоны** — личный инвентарь и продажи.
3. **Банк** — баланс, банковская карта и кредиты.
4. **Настройки** — профиль, тема, промокоды и сброс прогресса.
В верхней части интерфейса постоянно показывай:
- Никнейм игрока.
- Баланс в рублях.
- Количество телефонов в инвентаре.
- Общую прибыль.
## 5. Рынок телефонов
Создай каталог минимум из 70 разных смартфонов.
Включи реальные модели и линейки:
- Apple iPhone XR, XS, 11, 12, 13, 14, 15, 16 и более новые модели, если уместно.
- Samsung Galaxy A и Galaxy S.
- Xiaomi и Redmi.
- POCO.
- Google Pixel.
- Huawei.
- Honor.
- Realme.
- OnePlus.
- Nothing Phone.
Для каждого телефона укажи:
- Название.
- Иконку или изображение.
- Модель.
- Состояние.
- Цену покупки.
- Примерную цену перепродажи.
- Потенциальную прибыль.
Состояния телефонов:
- Новый.
- Отличное.
- Хорошее.
- Есть царапины.
- Сильно повреждён.
Состояние должно влиять на цену. Иногда на рынке должны встречаться выгодные предложения, а иногда — невыгодные.
Добавь фильтры:
- По бренду.
- По цене.
- По состоянию.
- По потенциальной прибыли.
Добавь сортировку по возрастанию и убыванию цены.
### Покупка
При нажатии «Купить»:
1. Проверь, хватает ли денег.
2. Если денег не хватает, покажи понятное сообщение.
3. Если денег хватает, списывай деньги.
4. Добавляй телефон в инвентарь.
5. Запоминай цену покупки и состояние.
6. Обновляй статистику и интерфейс.
7. Сохраняй изменения.
Не допускай отрицательного баланса из-за обычных покупок.
## 6. Инвентарь телефонов
В разделе «Телефоны» отображай все купленные смартфоны.
У каждого смартфона показывай:
- Название и модель.
- Состояние.
- Цену покупки.
- Текущую рыночную стоимость.
- Возможную цену продажи.
- Потенциальную прибыль.
Добавь кнопки:
- «Продать».
- «Выставить на продажу».
- «Оставить».
- «Подробнее».
Игрок должен иметь возможность продавать телефоны и получать деньги.
При продаже:
- Телефон удаляется из инвентаря.
- Деньги зачисляются на баланс.
- Прибыль рассчитывается как цена продажи минус цена покупки.
- Обновляется статистика.
- Сделка записывается в историю.
Не допускай повторной продажи одного и того же телефона.
## 7. Торговля и покупатели
Это одна из главных механик игры.
Создай систему покупателей, которые периодически появляются в игре и предлагают купить телефоны.
У каждого покупателя должны быть:
- Имя или никнейм.
- Аватар или эмодзи.
- Желаемая модель телефона.
- Предлагаемая цена.
- Уровень заинтересованности.
- Таймер действия предложения.
Добавь систему торга:
- Покупатель предлагает цену.
- Игрок может согласиться.
- Игрок может предложить свою цену.
- Покупатель может согласиться, отказаться или предложить встречную цену.
- Слишком высокая цена снижает вероятность сделки.
- Успешная сделка приносит деньги игроку.
Сделай случайные события:
- Покупатель предлагает очень выгодную цену.
- Телефон временно дорожает.
- Цена определённой модели падает.
- Появляется редкая модель.
- Покупатель отказывается от сделки.
Случайность должна быть сбалансированной, чтобы игрок мог развиваться, а не постоянно терял деньги.
## 8. Выставление объявлений
Позволь игроку выставлять телефоны на продажу.
При создании объявления нужно:
- Выбрать телефон.
- Установить цену.
- Добавить описание.
- Подтвердить публикацию.
После публикации объявление появляется в разделе продаж.
Покупатели могут реагировать на объявление и предлагать цены. Чем адекватнее цена, тем выше шанс продажи.
Добавь возможность:
- Изменить цену.
- Снять объявление.
- Принять предложение.
- Отклонить предложение.
Не позволяй одновременно продать телефон напрямую и через объявление.
## 9. Банк
Создай отдельный раздел банка.
Показывай:
- Баланс игрока.
- Номер виртуальной банковской карты: `•••• •••• •••• 5243`.
- Историю операций.
- Полученные кредиты.
- Долги и сроки погашения.
Добавь операции:
- Пополнение через игровые события.
- Списание при покупках.
- Зачисление после продаж.
- Получение кредита.
- Погашение кредита.
Виртуальная карта — только игровой элемент, никаких настоящих банковских данных не нужно.
## 10. Кредиты
Реализуй полноценную систему кредитов.
Правила:
- Максимальная сумма одного кредита — 100 000 ₽.
- Минимальная сумма — 1 000 ₽.
- Игрок самостоятельно вводит сумму.
- Срок погашения — 3 часа реального времени.
- Процент по кредиту — 10%.
- Показывай сумму долга и оставшееся время.
- Разреши досрочное погашение.
- Если денег не хватает, не позволяй погасить кредит.
- Не выдавай второй кредит, пока первый не погашен.
Если срок истёк:
- Покажи уведомление о просрочке.
- Обнули баланс игрока в соответствии с игровой механикой.
- Зафиксируй просрочку в истории.
- Не допускай многократного повторного штрафа за один кредит.
Сохраняй срок кредита так, чтобы перезапуск браузера не сбрасывал таймер.
## 11. Промокоды
В настройках добавь поле для ввода промокода.
Рабочие промокоды:
- `HAHAHA`
- `BOBITO`
- `START`
Каждый из этих кодов должен давать +150 000 ₽.
Правила:
- Регистр букв не имеет значения.
- После успешной активации показывай уведомление.
- Один игрок может получить бонус только один раз суммарно, используя любой из указанных промокодов.
- Нельзя повторно получать бонус после перезагрузки страницы.
- Неправильный код должен выдавать сообщение об ошибке.
## 12. История операций
Добавь полноценную историю:
- Покупки телефонов.
- Продажи телефонов.
- Прибыль и убытки.
- Получение кредитов.
- Погашение кредитов.
- Активация промокодов.
- Случайные события.
Для каждой операции показывай дату, время, описание и сумму.
Добавь фильтрацию истории по типу операции.
## 13. Прогресс и статистика
Сделай статистику:
- Количество купленных телефонов.
- Количество проданных телефонов.
- Общая выручка.
- Общая прибыль.
- Самая выгодная сделка.
- Самая дорогая покупка.
- Количество успешных торгов.
- Количество просроченных кредитов.
Статистика должна рассчитываться на основе реальных действий игрока.
## 14. Сохранение
Используй `localStorage`.
Сохраняй:
- Никнейм.
- Баланс.
- Инвентарь.
- Состояние и стоимость каждого телефона.
- Историю операций.
- Активные объявления.
- Покупателей и предложения.
- Активные кредиты и сроки.
- Использованные промокоды.
- Настройки темы.
- Статистику.
После обновления страницы игрок должен продолжать с того же места.
Добавь обработку ошибок сохранения и загрузки. Не допускай сброса прогресса при обычном перезапуске игры.
## 15. Звуки и анимации
Добавь необязательные звуковые эффекты:
- Покупка.
- Продажа.
- Успешная сделка.
- Ошибка.
- Получение денег.
Звуки должны отключаться в настройках.
Добавь анимации карточек, всплывающие уведомления и эффекты изменения баланса.
Не используй тяжёлые эффекты, которые тормозят слабые компьютеры и телефоны.
## 16. Настройки
Добавь:
- Изменение никнейма.
- Тёмную и светлую темы.
- Включение и отключение звуков.
- Подтверждение сброса прогресса.
- Кнопку экспорта сохранения в JSON.
- Кнопку импорта сохранения из JSON.
- Версию игры.
При импорте проверяй формат и корректность данных. Не позволяй повреждённому файлу сломать игру.
## 17. Технические требования
- Пиши чистый, понятный JavaScript.
- Разделяй логику рынка, инвентаря, банка, кредитов, покупателей и сохранения на отдельные функции.
- Не используй `eval`.
- Не вставляй пользовательские данные в HTML небезопасным способом.
- Проверяй все вводимые суммы.
- Не допускай отрицательных цен и некорректных значений.
- Не допускай дублирования телефонов и повторного начисления денег.
- Корректно обрабатывай закрытие и повторное открытие страницы.
- Не делай кнопки-заглушки.
- Не оставляй надписи «скоро», пустые экраны и неработающие разделы.
- Не используй обязательные внешние API.
- По возможности используй встроенные эмодзи вместо внешних изображений, чтобы игра работала без интернета.
- Код должен быть совместим с современными версиями Chrome, Edge, Firefox и мобильными браузерами.
## 18. Дизайн и удобство
Игра должна выглядеть как законченный продукт, а не как школьный проект.
Сделай:
- Красивый экран загрузки.
- Экран регистрации.
- Главное меню.
- Карточки телефонов с понятными ценами.
- Цветные индикаторы прибыли.
- Уведомления вместо обычных `alert()` там, где это удобно.
- Подтверждение важных действий.
- Пустые состояния с подсказками.
- Удобную навигацию на маленьком экране.
- Форматирование денег в рублях.
- Динамическое обновление интерфейса без необходимости перезагружать страницу.
## 19. Что нужно выдать в результате
В конце предоставь:
1. Полный рабочий файл `Bobito.html`.
2. Полный исходный код HTML, CSS и JavaScript.
3. Краткую инструкцию запуска на Windows.
4. Инструкцию запуска на Android и iPhone.
5. Если можешь создавать APK — отдельный Android APK и исходники проекта для его сборки.
6. Список реализованных функций.
7. Результаты проверки основных сценариев.
Перед завершением проверь следующие сценарии:
- Регистрация и сохранение ника.
- Покупка телефона.
- Отказ при недостатке денег.
- Продажа телефона и расчёт прибыли.
- Торг с покупателем.
- Создание и снятие объявления.
- Получение и погашение кредита.
- Просрочка кредита.
- Активация промокода и защита от повторного использования.
- Сохранение после перезапуска.
- Импорт и экспорт сохранения.
- Переключение темы.
- Работа на мобильном экране.
**Главное требование:** сначала создай полностью рабочую игру в одном файле `Bobito.html`. Не заменяй готовый результат описанием, макетом, фрагментами кода или инструкциями. Если ответ не помещается в одно сообщение, продолжай выдавать код по частям, не пропуская строки, пока не будет предоставлен весь проект.