Загрузка данных


# Создай полноценную игру 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`. Не заменяй готовый результат описанием, макетом, фрагментами кода или инструкциями. Если ответ не помещается в одно сообщение, продолжай выдавать код по частям, не пропуская строки, пока не будет предоставлен весь проект.