Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/joanstinson/flappybirdgrasp
A Flappy Bird clone game made with Unity applying GRASP.
https://github.com/joanstinson/flappybirdgrasp
csharp flappy-bird flappy-bird-clone flappy-bird-game mvc-architecture solid-principles unity-game unity3d
Last synced: about 10 hours ago
JSON representation
A Flappy Bird clone game made with Unity applying GRASP.
- Host: GitHub
- URL: https://github.com/joanstinson/flappybirdgrasp
- Owner: JoanStinson
- License: mit
- Created: 2024-08-03T15:58:55.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2024-08-19T14:15:34.000Z (about 1 month ago)
- Last Synced: 2024-09-22T11:02:11.704Z (5 days ago)
- Topics: csharp, flappy-bird, flappy-bird-clone, flappy-bird-game, mvc-architecture, solid-principles, unity-game, unity3d
- Language: C#
- Homepage:
- Size: 6.54 MB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Flappy Bird GRASP
A Flappy Bird clone game made with Unity applying GRASP.
## π Kata Rules
* A controllable bird that flaps upward with input and is affected by gravity.
* Single input control for making the bird flap (e.g., mouse click, tap).
* A repeating background to create the illusion of movement.
* Moving vertical pipes with gaps that the bird must pass through.
* A score system that increases when the bird passes through pipe gaps.
* Bird collisions with pipes or the ground should result in a game over.
* A game over screen with the option to restart.## πΊοΈ GRASP
> General Responsibility Assignment Software Principles
* **π¨βπ» Information Expert**
* Assign responsibility to the class that has the necessary information to fulfill it. This ensures that operations are performed by the objects that have the data needed.
* **π¨ Creator**
* Assign responsibility for creating an instance of a class to the class that has the necessary information to instantiate it, or that closely uses the created object.
* **πΉοΈ Controller**
* Assign responsibility for handling system events to a class that represents a use case or overall system behavior. The controller coordinates the activities triggered by the event.
* **π Low Coupling**
* Assign responsibilities to ensure that classes have minimal dependencies on each other. This reduces the impact of changes and increases reusability.
* **π High Cohesion**
* Assign responsibilities to ensure that classes and modules have a single, well-defined purpose. This increases clarity and maintains focus within a class or module.
* **π€ Polymorphism**
* Assign responsibility for behavior, based on the type, to classes that inherit from a common superclass or implement a common interface. This allows different classes to be treated through a common interface.
* **π Pure Fabrication**
* Assign responsibilities to a class that is not a part of the problem domain but is created to achieve low coupling, high cohesion, or other design goals. This class does not represent a concept from the real-world problem space.
* **π Indirection**
* Assign responsibilities to intermediary objects to reduce the direct coupling between classes. This introduces an intermediary to control interactions, promoting flexibility.
* **π‘οΈ Protected Variations**
* Assign responsibilities to create a stable interface that protects the system from variations or changes in other parts. This shields parts of the system from changes, making it more maintainable.