@startuml Geometry Dash - Diagramme de classe skinparam style strictuml skinparam classAttributeIconSize 0 skinparam classFontStyle Bold hide enum methods class Player { {field} + JUMP_FORCE: Double {readOnly} {field} + SPEED: Double {readOnly} {field} + SPEED: Double {readOnly} {method} + jump() {method} + isJumping(): boolean {method} + OnCollisionEnter2D(collision : Collision2D) {method} + OnCollisionExit2D(collision : Collision2D) } abstract class LevelElement { {field} + x: Integer {field} + y: Integer {method} + getImagePath(): String {abstract} } class Obstacle extends LevelElement { } class Platform extends Obstacle { } class Spike extends Obstacle { } class Portal extends LevelElement { } class Bumper extends LevelElement { } class LevelEnd extends LevelElement { } abstract class Level { {field} + jsonPath: String {field} + name: String {field} + musicPath: String {field} + progression: Integer {field} + totalJumps: Integer {field} + totalAttempts: Integer {field} + killedCount: Integer {method} + placeElements() {method} + placeElement(levelElement: LevelElement) {static} } class LevelStats extends Stats { } class LevelFactory { {method} + createLevel(jsonPath): Level } class Game { } Level *--> "- *\nLevelElements" LevelElement : <> Game *--> "- *\nlevels" Level : <> Game *--> "- 1\nlevels" LevelFactory : <> ' { ' "name": "Back on Track", ' "music" ' "elements": [ ' { ' "type": "Spike", ' "position": { ' "x": 0, ' "y": 0 ' }, ' } ' ] ' } @enduml