- The player gets accelerated when the move button is pressed.
- The accelerated speed is reduced when closer to the goal speed, forming a second derivative velocity curve.
- The player can slide and jump on walls.
- The player can dash in 8 directions.
- Both player and enemy have a
MoveState
that can be automatically switched. - Different behaviour is applied on each State.
All objects are based on the Entity
abstract class:
- Enemy
- Player
- Ladder
- Spike
- Goal
- Decoration
- Coin
- Start Screen
- Fail Screen
- Level Choosing Screen
- Pause Screen
- Ranking Screen
- Level Transistion Screen
- Level Completed Screen
- Option Screen
- Background music
- Jump Sound
- Dash Sound
- Step Sound
- Texture for tiles, player, and enemy.
- Textures can swap between states.
- Textures can have animations.
- Background has textures that can move for perspective effent.
- Fixed framerate.
- DEBUG mode allows monitoring multiple statuses.
- Consistent and advanced Retro art style.
We synchronize all project progress in real time on GitHub following these guidelines:
-
Standardized Directory Structure: Adopt a standardized structural directory for our project to enhance maintainability and readability. Our structure includes:
src/
- Source codetests/
- Test coderesources/
- Resources
-
Flexible Branch Usage We feel sorry that we deleted merged branch. Please do check our repository graph to evaluate our Branch usage.
-
Efficient Issue Tracking
-
MVC Pattern: Separates game logic, UI, and input handling for cleaner code.
-
UI Components: Multiple FXML screens (Menu, Fail, LevelSelect, Transition, Pause, Complete) enhanced with style.css.
-
Singleton Pattern : Manages screens with a single ScreenManager instance.
-
Factory Pattern: Simplifies creation of game entities and tiles via EntityFactory.
-
Command Pattern : Manages player movements using PlayCommand interface.
-
Interpreter Pattern : Calculates scores with Expression interface based on time and enemies defeated.
-
State Pattern : Handles player movement states with MoveStateHandler.
-
Observer Pattern : Provides real-time updates on player's score and time through GameModelObserver.
Our Javadoc is a comprehensive documentation for classes, interfaces, and methods.
- Classes: Descriptions of purpose and functionality.
- Interfaces: Details on functionality, parameters, and returns.
- Methods: Explanations of important fields.
Visual representation of main classes and their relationships is available in the Diagram directory.
The following open-source assets were used in this project:
Asset Title | Author | Source | License |
---|---|---|---|
Dagon's Fantasy All-In-One [16x16] | Eduardo Scarpato | Link | This asset pack can be used in free and commercial projects. You cannot distribute or sell those assets directly (even modified). |
Samurai 2D Pixel Art | Mattz Art | Link | You can use this asset in any game project, personal or commercial. You cannot resell or redistribute it as a standalone game asset; it must be part of a larger project. Credit is not required but appreciated. No NFTs allowed. |
Retro Player 90 Movement SFX | Leohpaz | Link | Both the demo and the complete pack are free to use in your projects. You may not sell it or distribute this asset pack for free; please redirect people to this page if someone else shows interest. Credits are appreciated but not mandatory. |
将棋駒/Shogi Pieces | AlisAlia | Link | 個人または商用プロジェクトも自由に使用できます。あなたのゲームに合わせて編集または変更できます。このアセットパックを変更していない状態で再販することはできません。このアセットパックを自分のものとして主張することはできません。不明点がございましたらよりお願いします。 |
m6x11 | Daniel Linssen | Link | Free to use with attribution. |
Hybrid song 2:20 (Funky stars) | Quazar of Sanxion | N/A | copyright-free. |