Skip to content

thebladehit/OOP_tetris

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 

Repository files navigation

OOP Tetris

Тема проєкту

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 або вище

Кроки для запуску

  1. Клонуйте репозиторій або відкрийте проєкт:

    git clone <repository-url>
    cd OOP_tetris
  2. Відкрийте проєкт в Android Studio:

    • File → Open → оберіть папку tetris
  3. Налаштуйте local.properties (якщо потрібно):

    • Вкажіть шлях до Android SDK
  4. Налаштуйте секрет для API (опціонально):

    • Додайте властивість SECRET в gradle.properties для роботи з сервером рейтингів
  5. Синхронізуйте проєкт:

    • Android Studio автоматично завантажить залежності через Gradle
  6. Підключіть Android пристрій або запустіть емулятор:

    • Увімкніть режим розробника на пристрої
    • Увімкніть USB налагодження
  7. Запустіть додаток:

    • Натисніть кнопку Run (▶️) або використайте Shift + F10
    • Або через термінал: ./gradlew installDebug

Запуск на емуляторі

Для тестування функціоналу рейтингів на емуляторі:

  • Сервер має бути доступний за адресою 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

Особливості реалізації

ООП принципи в проєкті

  1. Наслідування: Всі фігури наслідуються від базового класу Figure
  2. Поліморфізм: Використання конструкторів через мапу для динамічного створення об'єктів
  3. Інкапсуляція: Приватні методи та властивості в класі Game
  4. Абстракція: Базовий клас Figure визначає загальну структуру

Ігрова механіка

  • Поле: 10 колонок × 24 рядки
  • 7 типів фігур з унікальними кольорами
  • Система очок: 100/300/700/1500 за 1/2/3/4 рядки одночасно
  • Прогресивне збільшення швидкості (кожні 10 зібраних рядків)
  • Перевірка колізій та game over

Ліцензія

Див. файл LICENSE для деталей.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages