Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/bursasha/javafx-drake-game

A Java game leveraging most fundamental language concepts and utilizing the JavaFX framework 🕹ī¸
https://github.com/bursasha/javafx-drake-game

design-patterns java java-game javafx mvc-architecture oop-principles

Last synced: 6 days ago
JSON representation

A Java game leveraging most fundamental language concepts and utilizing the JavaFX framework 🕹ī¸

Awesome Lists containing this project

README

        

# The Drake Game 🎮

## Overview 🔍

**The Drake** is a strategic board game developed in `Java` using `JavaFX` for the graphical user interface.
The game is designed to challenge players' strategic thinking and decision-making skills.

## Project Structure 📁

- `SemestralWork/`: Root directory of the project.
- `out/`: Compiled class files and other output.
- `production/`: Compiled production files.
- `test/`: Compiled test files.
- `TheDrake/`: Main source directory.
- `out/`: Output directory for compiled files.
- `src/`: Source files for the project.
- `thedrake/`: Main package containing game logic and assets.
- `assets/`: Game assets like images and fonts.
- `controllers/`: Controllers for managing game interactions.
- `fonts/`: Fonts used in the game.
- `images/`: Images used in the game.
- `models/`: Data models representing game entities.
- `ui/`: User interface components.
- `views/`: Views for different game screens.
- `GameApp.java`: Main application entry point.
- `test/`: Test directory containing unit tests.
- `module-info.java`: Module configuration file.

## Technology Stack and Concepts Used 🚀

The project leverages a variety of technologies and programming concepts, including:

- **`Java`**: The core programming language used to develop the game.
- **`JavaFX`**: Framework for building the graphical user interface.
- **OOP (Object-Oriented Programming)**: Core principles such as inheritance, polymorphism, and encapsulation.
- **Exception Handling**: Proper management of errors and exceptions to ensure robust code.
- **Collections Framework**: Utilization of `Java Collections` for managing game data structures.
- **IO `Stream` API**: Handling input and output operations.
- **`JavaFX` for UI**: Building and managing the graphical user interface.
- **Threads and Concurrency**: Managing concurrent operations within the game.
- **Network Programming**: (If applicable) Handling any network-related functionality.
- **Database Connectivity**: (If applicable) Managing data persistence.
- **Design Patterns**: Utilizing design patterns such as Singleton, Factory, and MVC.

## Game Rules and Mechanics 📜

Here is a summary of the key mechanics:

1. **Objective**: The objective of the game is to strategically move pieces on the board to achieve specific goals, such as capturing the opponent's pieces or reaching a designated area.
2. **Gameplay**:
- Players take turns to move their pieces.
- Each piece has specific movement capabilities and rules.
- The game includes different types of pieces, each with unique abilities and attributes.
3. **Winning Conditions**: The game can be won by fulfilling certain conditions, such as capturing all of the opponent's pieces or achieving a strategic position on the board.
4. **Special Moves**: The game may include special moves or abilities that can be used under certain conditions to gain an advantage.

## How to Play 🎮

1. **Start the Game**:
- Run the game using the provided script.
- The game window will open, displaying the main menu. Currently, only the main menu of the game is implemented; the gameplay is not yet completed.
2. **Make Moves**:
- Use the mouse or keyboard to select and move pieces according to the game rules.
- Follow the on-screen prompts and instructions to navigate through the game.
3. **Win the Game**:
- Achieve the winning conditions by strategically moving your pieces and outmaneuvering your opponent.

## Conclusion ⭐ī¸

**The Drake** is a comprehensive and engaging board game that leverages `Java` and `JavaFX` to provide a rich gaming experience.
By combining various programming concepts and technologies, the game offers both a challenging and enjoyable experience for players.
In this project, my first project in `Java`, I explored all the basic technologies of the language, familiarized myself with various concepts,
and the game became the project where I applied my knowledge.