Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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 đšī¸
- Host: GitHub
- URL: https://github.com/bursasha/javafx-drake-game
- Owner: bursasha
- Created: 2024-06-23T12:05:39.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-06-23T12:46:21.000Z (8 months ago)
- Last Synced: 2024-12-16T08:36:27.751Z (2 months ago)
- Topics: design-patterns, java, java-game, javafx, mvc-architecture, oop-principles
- Language: Java
- Homepage:
- Size: 832 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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.