- Java 99.7%
- Shell 0.3%
| app | ||
| art/source | ||
| docs | ||
| gradle/wrapper | ||
| scripts | ||
| tests | ||
| .gitignore | ||
| AGENTS.md | ||
| build.gradle | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle | ||
Башня судьбы / Fortune Tower
Самостоятельная Android-игра по мотивам механик Tower of Fortune 2: RPG с тремя барабанами, решениями перед боем и восхождением по башне. Это первый играбельный прототип, а не полная копия оригинала. Название приложения, рисунки и тексты созданы для этого проекта; оригинальные ресурсы не используются.
Что реализовано
- 18 этажей, четыре типа противников и боссы на каждом пятом этаже; разные действия и намерения перед вращением.
- Меч, щит, жизнь, золото и ярость; одиночные знаки не действуют, пара активирует эффект, тройка даёт джекпот.
- Один платный переброс выбранного барабана перед подтверждением хода.
- Уровни, опыт, оружие, отдых в лагере и кузница.
- Победа на вершине, поражение, подтверждение нового похода.
- Автосохранение, включая незавершённое вращение; восстановление после поворота и перезапуска.
- Русский интерфейс, пользовательские изображения и новые спрайты анимаций (бой, персонажи, барабаны, лагерь, финалы и иконка), системные кнопки, основной экран без прокрутки, учёт вырезов и системных панелей.
- Офлайн: нет разрешения INTERNET, рекламы, платежей, серверов и сторонних игровых библиотек.
Готовая сборка
Debug APK: app/build/outputs/apk/debug/app-debug.apk. APK собран, проверка правил и Android Lint пройдены (0 ошибок, 9 предупреждений). На телефоне или эмуляторе пока не проверен.
Быстрый запуск в Android Studio
- Установите Android Studio с поддержкой AGP 8.13.2. В SDK Manager установите Android SDK Platform 36, Build Tools 35.0.0 и Platform Tools.
- Откройте эту директорию как проект. Выберите Gradle JDK 17 (или совместимый встроенный JDK) в Settings → Build, Execution, Deployment → Build Tools → Gradle.
- Дождитесь Gradle Sync. Android Studio обычно создаёт
local.propertiesс путём к SDK автоматически. - Создайте эмулятор Android 16 / API 36 или подключите телефон с Android 8.0+ и USB debugging.
- Запустите конфигурацию
app. Первое скачивание инструментов и зависимостей требует сети.
Сборка из терминала
Требуются JDK 17, Android SDK и доступ к Google Maven / Maven Central / Gradle.
export JAVA_HOME=/path/to/jdk-17
export ANDROID_HOME=/path/to/Android/Sdk
export PATH="$JAVA_HOME/bin:$ANDROID_HOME/platform-tools:$PATH"
./gradlew assembleDebug lintDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
В Windows используйте gradlew.bat и настройте переменные через системные настройки. Wrapper закрепляет Gradle 8.13; отдельно устанавливать Gradle не требуется. Поддерживаются Android 8.0+ (minSdk 26), compileSdk/targetSdk 36 (Android 16). Версии выбраны по таблице совместимости AGP.
Проверки
./scripts/check.sh
Нужен только JDK 17, SDK не нужен. Скрипт компилирует настоящие правила игры и запускает проверки боя, экономии ресурсов, переброса, лагеря, сохранений, смерти, победы всех 125 сочетаний барабанов и 200 походов с фиксированными seed.
Для проверки Android-интеграции выполните ./gradlew assembleDebug lintDebug, затем ручной чек-лист. Сборка без запуска на устройстве не подтверждает корректность интерфейса.
Как играть
Нажмите «Вращать барабаны». При желании нажмите один из знаков для переброса за 3 монеты. Нажмите «Принять результат»: сработает только пара или тройка одинаковых знаков, затем выживший враг выполняет заранее показанное действие. Между ходами можно лечиться и улучшать оружие. Одиночные знаки ничего не дают. Пара даёт эффект двух знаков; джекпот — эффект девяти знаков (три знака ×3). Награда за убийство врага начисляется отдельно. Наберите 100 ярости для автоматического мощного удара. Победите босса 18 этажа.
Интерфейс
HUD героя показывает HP и ярость шкалами с пиктограммами и числами, золото — рядом с монетой. Уровень и опыт видны над шкалами. Под врагом — его шкала HP с сердцем и числовым значением.
Бой и управление находятся на одном экране без прокрутки. Одна кнопка вращает барабаны и затем принимает результат. «Лагерь» открывает лечение и кузницу; «Меню» — правила, характеристики и новый поход. Нажатие на краткий журнал открывает полный результат, на характеристики — подробности героя.
Анимации
Барабаны быстро прокручивают символы и останавливаются по очереди за 0,52 секунды. Переброс одного знака занимает 0,28 секунды.
Действия героя и врага показываются по очереди: выпад, попадание, лечение, щит, ярость, заряд, проклятие, кража и отдых. Во время анимации боевые кнопки отключены. Бой рассчитывается и сохраняется до показа эффектов; перезапуск не повторяет ход. При отключённых системных анимациях эффекты пропускаются.
Намерения врагов
Под HP врага показано его действие на текущий ход. Крыса атакует слабо или крадёт монеты; скелет атакует, защищается или готовит выпад; тень ослабляет удар героя либо готовит атаку; голем готовит тяжёлый удар и отдыхает после него. Босс ниже половины HP меняет тактику. На ходах защиты и ослабления урон героя уменьшается вдвое. Щиты действуют только на текущий ход. Уже объявленный приём не меняется от вращения, переброса или лагеря.
Изображения
Исходники находятся в art/source/. Копии PNG без изменений подключены как Android-ресурсы в app/src/main/res/drawable-nodpi/. Чтобы заменить изображение, скопируйте новый PNG с тем же именем в обе директории и пересоберите проект. Изображения уменьшаются при декодировании, сцена боя сохраняет пропорции 16:9.
Файлы и дальнейшая работа
app/src/main/java/dev/towerfortune/Game.java— игровые правила и формат сохранения.app/src/main/java/dev/towerfortune/MainActivity.java— экран, пиксельная сцена и сохранение средствами Android.tests/GameCheck.java— проверки без тестовых библиотек.- План и отличие от оригинала.
- Проверка на устройствах и выпуск.
- Инструкции для разработки.
Референс: Tower of Fortune 2, Game Stew. Американская страница при исследовании отвечала 429; описание проверено по ирландской странице App Store. Точные внутренние вероятности и формулы оригинала неизвестны; баланс прототипа собственный.
Шрифт и оформление
Используется Roboto Slab из Google Fonts, встроенный в APK. Лицензия Apache 2.0 сохранена в docs/licenses и assets приложения. Кнопки нарисованы средствами Android в button_frame.xml и button_primary.xml.