OOP Tetris — це класична гра Тетріс, реалізована для Android платформи з використанням об'єктно-орієнтованого підходу. Проєкт демонструє застосування принципів ООП для створення ігрової логіки та архітектури додатку.
Проєкт побудований на принципах об'єктно-орієнтованого програмування:
- Базовий клас
Figure: Абстрактна реалізація фігури з методом обертання та базовими властивостями - Наслідування: 7 різних типів фігур (Stick, Lka, Rlka, Square, Ska, Zka, Teshka) наслідуються від базового класу
Figure - Інкапсуляція: Логіка гри інкапсульована в класі
Game, який керує ігровим полем, фігурами та правилами - Поліморфізм: Використання конструкторів фігур через мапу для динамічного створення об'єктів
-
Game.kt— центральний клас, що керує ігровою логікою:- Рух фігур (вліво, вправо, вниз, обертання)
- Перевірка колізій
- Видалення заповнених рядків
- Підрахунок очок та збільшення швидкості
- Генерація нових фігур
-
Figure.ktта похідні класи — реалізація 7 класичних фігур Тетрісу з унікальними формами та кольорами -
Block.kt— представлення окремого блоку на ігровому полі -
MainActivity.kt— головна активність з ігровим інтерфейсом та керуванням -
MainMenuActivity.kt— меню з можливістю введення імені гравця та перегляду рекорду -
MainRatingActivity.kt— таблиця рейтингів з інтеграцією серверного API
- 🎵 Фонова музика з можливістю вмикання/вимикання
- 💾 Збереження локального рекорду через SharedPreferences
- 🌐 Інтеграція з сервером для відправки та отримання рейтингів
- ⏸️ Пауза/продовження гри
- 📊 Відображення наступної фігури
- 🎮 Тактильне керування з підтримкою утримання кнопок
- Kotlin — мова програмування
- Android SDK — платформа розробки
- ViewBinding — прив'язка представлень
- OkHttp — HTTP клієнт для роботи з API
- Gson — серіалізація/десеріалізація JSON
- RecyclerView — відображення списку рейтингів
- Custom Canvas — власна реалізація відрисовки ігрового поля
- Android Studio (Hedgehog або новіша версія)
- JDK 8 або вище
- Android SDK з мінімальною версією API 24 (Android 7.0)
- Gradle 8.1.1 або вище
-
Клонуйте репозиторій або відкрийте проєкт:
git clone <repository-url> cd OOP_tetris
-
Відкрийте проєкт в Android Studio:
- File → Open → оберіть папку
tetris
- File → Open → оберіть папку
-
Налаштуйте
local.properties(якщо потрібно):- Вкажіть шлях до Android SDK
-
Налаштуйте секрет для API (опціонально):
- Додайте властивість
SECRETвgradle.propertiesдля роботи з сервером рейтингів
- Додайте властивість
-
Синхронізуйте проєкт:
- Android Studio автоматично завантажить залежності через Gradle
-
Підключіть Android пристрій або запустіть емулятор:
- Увімкніть режим розробника на пристрої
- Увімкніть USB налагодження
-
Запустіть додаток:
- Натисніть кнопку Run (
▶️ ) або використайтеShift + F10 - Або через термінал:
./gradlew installDebug
- Натисніть кнопку Run (
Для тестування функціоналу рейтингів на емуляторі:
- Сервер має бути доступний за адресою
http://10.0.2.2:3000/rating 10.0.2.2— це спеціальна адреса для доступу до localhost хоста з Android емулятора
tetris/
├── app/
│ ├── src/
│ │ └── main/
│ │ ├── java/com/example/tetris/
│ │ │ ├── figures/ # Класи фігур (OOP)
│ │ │ ├── constance/ # Константи
│ │ │ ├── models/ # Моделі даних
│ │ │ ├── Game.kt # Ігрова логіка
│ │ │ ├── MainActivity.kt # Головна активність
│ │ │ ├── MainMenuActivity.kt
│ │ │ └── MainRatingActivity.kt
│ │ └── res/ # Ресурси (layout, drawable, values)
│ └── build.gradle.kts
└── build.gradle.kts
- Наслідування: Всі фігури наслідуються від базового класу
Figure - Поліморфізм: Використання конструкторів через мапу для динамічного створення об'єктів
- Інкапсуляція: Приватні методи та властивості в класі
Game - Абстракція: Базовий клас
Figureвизначає загальну структуру
- Поле: 10 колонок × 24 рядки
- 7 типів фігур з унікальними кольорами
- Система очок: 100/300/700/1500 за 1/2/3/4 рядки одночасно
- Прогресивне збільшення швидкості (кожні 10 зібраних рядків)
- Перевірка колізій та game over
Див. файл LICENSE для деталей.