Добро пожаловать в Гоночную Игру, которая реализована с использованием JavaFX. Это увлекательный проект, где игрок управляет автомобилем, избегая препятствий и стремясь набрать как можно больше очков. Игра поддерживает различные режимы сложности, визуальные эффекты, анимации, а также инструменты для записи результатов.
- Описание проекта
- Особенности
- Требования
- Установка и запуск
- Структура проекта
- Документация основных функций
Гоночная игра — это классическая 2D игра, в которой игроку предоставляется возможность управлять автомобилем, избегая столкновений с другими машинами на дороге. Главная цель — набрать максимальное количество очков, удерживая высокую скорость и избегая препятствий.
- Реализация игрового цикла с использованием
AnimationTimer
. - 🎶 Звуковые эффекты для событий (например, столкновения, завершения игры).
- 💥 Визуальные эффекты взрыва при столкновении.
- 📊 Отображение статистики для игрока (очки, скорость, время).
- Поддержка разных уровней сложности (через класс
DifficultyMode
). - Система записи рекордов с проверкой нового результата.
- Адаптивный дизайн интерфейса на основе JavaFX.
- JDK версии 17+: Установить JDK
- Maven (для сборки и управления проектом).
- Операционная система: Windows, macOS или любая Linux-система.
Следуйте этим инструкциям, чтобы запустить проект на локальной машине.
Сначала клонируйте репозиторий игры:
git clone https://github.com/username/game-project.git
cd game-project
Если у вас установлен Maven
, выполните в терминале:
mvn clean package
После сборки выполните:
java -jar target/game-project.jar
Игра запустится, и вы готовы начать играть! 🎉
Проект организован следующим образом:
├── src/main/java/
│ ├── application/ # Основной пакет приложения
│ │ ├── GameApplication.java # Класс для запуска приложения
│ │ ├── controllers/ # Контроллеры для взаимодействия с интерфейсом
│ │ ├── models/ # Игровая логика, модели данных
│ │ └── utils/ # Утилиты (звуковое управление, эффекты, загрузчики)
│ ├── resources/ # Ресурсы игры (изображения, звуки)
│ │ ├── images/ # Визуальные элементы
│ │ ├── sounds/ # Звуковые файлы
│ │ └── fxml/ # Файлы интерфейса
├── src/test/java/ # Тесты для проекта
├── README.md # Документация проекта
└── pom.xml # Maven-конфигурация
Метод, отвечающий за управление игровым процессом:
private void setupGameAnimation(Scene scene) {
timer = new AnimationTimer() {
@Override
public void handle(long now) {
// Обновление игрового состояния каждые 1 / 60 секунд (FPS = 60).
}
};
timer.start();
}
- Проверка столкновений между машиной игрока и препятствиями:
private void checkCollisions() {
for (Car obstacle : obstacles) {
if (playerCar.getShape().getBoundsInParent().intersects(obstacle.getShape().getBoundsInParent())) {
endGame(obstacle);
}
}
}
- Завершение игры:
private void endGame(Car collidedCar) throws IOException {
// Анимация взрыва + сохранение результата.
showExplosion(x, y, width, height);
System.out.println("Игра завершена!");
}
Реализация бесконечного движения фона с имитацией дороги:
private void moveBackground() {
road1.setLayoutY(road1.getLayoutY() + roadSpeed);
road2.setLayoutY(road2.getLayoutY() + roadSpeed);
if (road1.getLayoutY() >= 800) road1.setLayoutY(road2.getLayoutY() - 800);
}