2024-12-02 10:11:11 +01:00
|
|
|
@startuml Geometry Dash - Diagramme de classe
|
|
|
|
|
|
|
|
skinparam style strictuml
|
|
|
|
skinparam classAttributeIconSize 0
|
|
|
|
skinparam classFontStyle Bold
|
|
|
|
hide enum methods
|
|
|
|
|
2025-02-03 16:56:26 +01:00
|
|
|
class GameManager {
|
|
|
|
- score: int
|
|
|
|
- isPaused: Boolean
|
|
|
|
+ StartGame()
|
|
|
|
+ RestartLevel()
|
|
|
|
+ PauseGame()
|
|
|
|
+ ResumeGame()
|
|
|
|
+ UpdateScore(points: int)
|
2024-12-02 10:11:11 +01:00
|
|
|
}
|
|
|
|
|
2025-02-03 16:56:26 +01:00
|
|
|
class Level {
|
|
|
|
- name: String
|
|
|
|
- musicPath: String
|
|
|
|
+ StartLevel()
|
|
|
|
+ EndLevel()
|
|
|
|
+ CheckCompletion(): Boolean
|
2025-02-03 15:35:36 +01:00
|
|
|
}
|
|
|
|
|
2025-02-03 16:56:26 +01:00
|
|
|
abstract class LevelElement {
|
|
|
|
- x: Float
|
|
|
|
- y: Float
|
2024-12-02 10:11:11 +01:00
|
|
|
}
|
|
|
|
|
2025-02-03 16:56:26 +01:00
|
|
|
abstract class Obstacle extends LevelElement {
|
|
|
|
+ TriggerEffect(player: Player)
|
|
|
|
}
|
2025-02-03 15:35:36 +01:00
|
|
|
|
2025-02-03 16:56:26 +01:00
|
|
|
class Platform extends LevelElement {
|
2024-12-02 10:11:11 +01:00
|
|
|
}
|
|
|
|
|
2025-02-03 15:35:36 +01:00
|
|
|
class Spike extends Obstacle {
|
2025-02-03 16:56:26 +01:00
|
|
|
+ TriggerEffect(player: Player)
|
2025-02-03 15:35:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
class Portal extends LevelElement {
|
2025-02-03 16:56:26 +01:00
|
|
|
- destination: Vector2
|
|
|
|
- type: PortalType
|
|
|
|
+ Teleport(player: Player)
|
|
|
|
}
|
2024-12-02 10:11:11 +01:00
|
|
|
|
2025-02-03 16:56:26 +01:00
|
|
|
enum PortalType {
|
|
|
|
Normal, Gravity, Speed
|
2024-12-02 10:11:11 +01:00
|
|
|
}
|
|
|
|
|
2025-02-03 15:35:36 +01:00
|
|
|
class Bumper extends LevelElement {
|
2025-02-03 16:56:26 +01:00
|
|
|
- bounceForce: Float
|
|
|
|
+ Bounce(player: Player)
|
2024-12-02 10:11:11 +01:00
|
|
|
}
|
|
|
|
|
2025-02-03 15:35:36 +01:00
|
|
|
class LevelEnd extends LevelElement {
|
2025-02-03 16:56:26 +01:00
|
|
|
+ TriggerEndGame()
|
2025-02-03 15:35:36 +01:00
|
|
|
}
|
|
|
|
|
2025-02-03 16:56:26 +01:00
|
|
|
class Collectible extends LevelElement {
|
|
|
|
- points: int
|
|
|
|
+ Collect(player: Player)
|
2025-02-03 15:35:36 +01:00
|
|
|
}
|
|
|
|
|
2025-02-03 16:56:26 +01:00
|
|
|
class Player {
|
|
|
|
- JUMP_FORCE: static const Float = 26.6581
|
|
|
|
- SPEED: static const Float = 8.6
|
|
|
|
- rigidBody: Rigidbody2D
|
|
|
|
- isColliding: Boolean
|
|
|
|
- isGrounded: Boolean
|
|
|
|
- gravityScale: Float
|
|
|
|
+ Jump()
|
|
|
|
+ IsJumping(): Boolean
|
|
|
|
+ OnCollisionEnter2D(collision: Collision2D)
|
|
|
|
+ OnCollisionExit2D(collision: Collision2D)
|
|
|
|
+ ChangeGravity()
|
|
|
|
+ Die()
|
|
|
|
+ Respawn()
|
|
|
|
+ CollectItem(item: Collectible)
|
2025-02-03 15:35:36 +01:00
|
|
|
}
|
|
|
|
|
2025-02-03 16:56:26 +01:00
|
|
|
class LevelLoader {
|
|
|
|
+ LoadLevel(jsonPath: String): Level
|
|
|
|
+ UnloadLevel(level: Level)
|
2025-02-03 15:35:36 +01:00
|
|
|
}
|
|
|
|
|
2025-02-03 16:56:26 +01:00
|
|
|
class LevelParser {
|
|
|
|
+ ParseJSON(jsonData: String): Level
|
2025-02-03 15:35:36 +01:00
|
|
|
}
|
|
|
|
|
2025-02-03 16:56:26 +01:00
|
|
|
class MusicManager {
|
|
|
|
- currentTrack: String
|
|
|
|
- volume: Float
|
|
|
|
+ PlayMusic(musicPath: String)
|
|
|
|
+ StopMusic()
|
|
|
|
+ SetVolume(level: Float)
|
|
|
|
}
|
2025-02-03 15:35:36 +01:00
|
|
|
|
2025-02-03 16:56:26 +01:00
|
|
|
GameManager *--> Level : <<Manages>>
|
|
|
|
GameManager --> LevelLoader : <<Uses>>
|
|
|
|
LevelLoader --> LevelParser : <<Uses>>
|
|
|
|
Level *--> LevelElement : <<Contains>>
|
|
|
|
GameManager *--> Player : <<Owns>>
|
|
|
|
GameManager --> MusicManager : <<Controls>>
|
|
|
|
Player --> LevelEnd : <<Triggers>>
|
|
|
|
Player --> Portal : <<Interacts>>
|
|
|
|
Player --> Collectible : <<Collects>>
|
|
|
|
Obstacle --> Player : <<Affects>>
|
2025-02-03 15:35:36 +01:00
|
|
|
|
2024-12-02 10:11:11 +01:00
|
|
|
@enduml
|