Skip to content

ValeriiaFrolenko/SummerPractice-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

105 Commits
 
 
 
 
 
 

Repository files navigation

Проєкт гри CatRobber

Опис завдання

Створення інтерактивної гри "CatRobber" з головоломками, ігровими механіками, системою збереження прогресу та користувацьким інтерфейсом для літньої практики (частина 2).

Детальний опис

CatRobber — це 2D-гра, розроблена на Java з використанням JavaFX, де гравець керує персонажем-котом, який проникає в локації (будинок, музей, банк), розв’язує головоломки, уникає поліції та камер безпеки, а також взаємодіє з об’єктами для досягнення мети. Проєкт реалізує складну систему управління грою, збереження прогресу, звуковий супровід, користувацький інтерфейс із магазином та інтерактивними вікнами, а також різноманітні головоломки для розблокування дверей.

Основні компоненти проєкту

1. Ігрові об’єкти

  • GameObject: Базовий клас для всіх ігрових об’єктів, що реалізує інтерфейси Positioned, Renderable, Interactable, Animatable та Savable для уніфікованого управління позицією, рендерингом, взаємодією, анімацією та збереженням.
  • Player: Клас гравця, який підтримує рух (за допомогою InputHandler), взаємодію з об’єктами (двері, інтерактивні об’єкти), використання предметів із магазину (наприклад, зброя через клавішу 'F') та збереження стану.
  • Police: Ворог, який патрулює рівень і викликає тривогу при виявленні гравця. Використовує Vector2D для позиціонування та руху.
  • SecurityCamera: Камера безпеки, яка сканує область і викликає тривогу, якщо гравець потрапляє в зону видимості. Підтримує обертання та збереження стану.
  • Door: Двері, які можуть бути замкненими або пов’язаними з головоломками (Puzzle). Відкриваються при успішному розв’язанні головоломки або використанні універсального ключа.
  • InteractiveObject: Об’єкти (нотатки, картини, комп’ютери), з якими гравець може взаємодіяти, відкриваючи відповідне UI-вікно (InteractiveObjectWindow).

2. Інтерфейси

  • Positioned: Визначає методи для роботи з позицією (Vector2D) об’єктів.
  • Renderable: Забезпечує рендеринг об’єктів на JavaFX Canvas через render метод.
  • Interactable: Дозволяє об’єктам обробляти взаємодію з гравцем.
  • Animatable: Підтримує анімацію об’єктів через методи update та render.
  • Savable: Дозволяє об’єктам серіалізуватися в JSON для збереження стану.

3. Головоломки

  • Puzzle: Абстрактний базовий клас для всіх головоломок, що реалізує Savable та Interactable. Пов’язує головоломки з дверима та викликає callback при розв’язанні.
  • LaserLockPuzzle: Гравець обирає один із трьох дротів для перерізання. Неправильний вибір викликає тривогу (GameManager.alert()).
  • CodeLockPuzzle: Вимагає введення 4-значного коду через клавіатуру. Має 3 спроби; при вичерпанні викликається тривога.
  • LockPickPuzzle: Таймінг-головоломка, де гравець рухає циліндр і натискає пробіл у "зоні успіху" для розблокування.

4. Користувацький інтерфейс

  • GameApplication: Головний клас для запуску JavaFX-додатку, ініціалізує GameWindow.
  • GameWindow: Управляє основним ігровим вікном, включаючи цикл гри (AnimationTimer), рендеринг та обробку введення через InputHandler.
  • UIManager: Координує відображення UI-компонентів (Menu, ShopPane, InteractiveObjectWindow) через інтерфейс UIWindow.
  • Menu: Реалізує головне меню, заставку та вибір рівня (будинок, музей, банк) з кнопками для продовження, магазину та виходу.
  • ShopPane: Інтерфейс магазину, де гравець купує предмети (Невидимість, Прискорення, Універсальний ключ, Зброя) за валюту (GameManager.getTotalMoney()).
  • InteractiveObjectWindow: Відображає UI для інтерактивних об’єктів. Комп’ютер показує браузер із двома сторінками: пошуковою системою та кодом для CodeLockPuzzle.
  • UIWindow: Інтерфейс для уніфікації показу/приховування UI-компонентів.

5. Системні класи

  • GameManager: Центральний менеджер гри, що керує станом (gameState, currentLevelId, totalMoney, completedLevels), взаємодією між об’єктами та тривогами.
  • LevelManager: Завантажує рівні (JSON-файли) через GameLoader та ініціалізує об’єкти гри.
  • SaveManager: Відповідає за збереження/завантаження стану гри в JSON-файли (game_progress.json, player_current.json тощо). Використовує SaveFile для метаданих.
  • SoundManager: Відтворює звукові ефекти (наприклад, CODE_LOCK_OPEN, ALERT) для головоломок і подій.
  • FontManager: Завантажує та керує шрифтами для UI.
  • GameLoader: Завантажує JSON, зображення, аудіо та спрайт-листи, створює об’єкти гри з JSON-даних.
  • InputHandler: Обробляє введення з клавіатури та миші, підтримує callback-функції для кастомної логіки.

6. Утилітарні класи

  • Vector2D: Клас для роботи з двовимірними векторами/позиціями. Підтримує додавання, множення на скаляр та обчислення евклідової відстані.
  • SaveFile: Зберігає метадані збереження (шлях до файлу, ID рівня, час) у JSON-форматі.

Технічні особливості

  • Технології: Java та JavaFX для рендерингу, UI та ігрових механік.
  • Архітектура: Модульна структура з чітким поділом на ігрові об’єкти, UI, головоломки та утилітарні класи.
  • Збереження: Використовує JSON для серіалізації стану гри через SaveManager та SaveFile.
  • Головоломки: Інтерактивні механіки з підтримкою звуку (SoundManager) та інтеграцією з GameManager.
  • UI: Кастомний інтерфейс із підтримкою власного заголовка, меню, магазину та інтерактивних вікон.

Автор

Фроленко Валерія, Борозняк Аліна, Кравченко Євгенія

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages