Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

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.

Awesome Lists containing this project

README

        

# Flappy Bird GRASP
A Flappy Bird clone game made with Unity applying GRASP.



Made With Unity


License


Last Commit


Repo Size


Downloads


Last Release



## πŸ“œ 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.