mirror of
https://github.com/boudji-ludwig-pett/cnam-geometry-dash.git
synced 2025-06-10 22:20:40 +02:00
refactor: move Documentation and UML folders (#11)
This commit is contained in:
BIN
Documentation/Sujet-Projet-Geometry-Dash.pdf
Normal file
BIN
Documentation/Sujet-Projet-Geometry-Dash.pdf
Normal file
Binary file not shown.
10
Documentation/UML/README.md
Normal file
10
Documentation/UML/README.md
Normal file
@ -0,0 +1,10 @@
|
||||
# Diagramme UML
|
||||
|
||||
Les modélisation UML du projet sont disponibles sous forme de [PlantUML](https://www.plantuml.com) dans ce dossier. Les diagrammes sont générés automatiquement à partir des fichiers `.puml` afin de pouvoir être versionnés et mis à jour facilement. Vous pouvez les consulter en récupérant le contenu des fichiers et en les prévisualisant sur [PlantUML](https://www.plantuml.com/plantuml).
|
||||
|
||||
## Diagrammes
|
||||
|
||||
- [Diagramme de classes](./class-diagram.puml)
|
||||
- [Diagramme d'activités](./activity-diagram.puml)
|
||||
- [Diagramme de cas d'utilisation](./use-case-diagram.puml)
|
||||
- [Diagramme d'états](./state-diagram.puml)
|
@ -0,0 +1,98 @@
|
||||
@startuml Geometry Dash - Diagramme d'activités
|
||||
|
||||
start
|
||||
|
||||
:Lancer la partie;
|
||||
|
||||
repeat
|
||||
if (Le joueur percute un obstacle ?) then (Oui)
|
||||
:Le joueur meurt;
|
||||
:Animation de mort;
|
||||
:Augmenter le nombre d'essais de 1;
|
||||
:Perdre toutes les pièces et bonus;
|
||||
else (Non)
|
||||
' --- Première Ligne ---
|
||||
partition "Saut" {
|
||||
if (L'utilisateur clique sur l'écran ?) then (Oui)
|
||||
:Le joueur effectue un saut;
|
||||
endif
|
||||
}
|
||||
|
||||
partition "Bumper" {
|
||||
if (Le joueur touche un bumper ?) then (Oui)
|
||||
group Bumper Logic
|
||||
:Le joueur effectue un grand saut;
|
||||
if (Le bumper est actif ?) then (Oui)
|
||||
:Activer des particules;
|
||||
:Jouer un son de rebond;
|
||||
else (Non)
|
||||
:Aucune action;
|
||||
endif
|
||||
end group
|
||||
endif
|
||||
}
|
||||
|
||||
partition "Forme" {
|
||||
if (Le joueur passe un portail ?) then (Oui)
|
||||
:Changement de forme;
|
||||
group Forme Details
|
||||
switch (Forme)
|
||||
case (Forme fusée)
|
||||
:Mode fusée;
|
||||
case (Forme roue)
|
||||
:Mode roue;
|
||||
case (Forme sens inversé)
|
||||
:Mode sens inversé;
|
||||
case (Forme gravité inversée)
|
||||
:Mode gravité inversée;
|
||||
endswitch
|
||||
end group
|
||||
endif
|
||||
}
|
||||
|
||||
partition "Bonus" {
|
||||
if (Le joueur touche un bonus ?) then (Oui)
|
||||
group Bonus Logic
|
||||
:Ajouter le bonus à l'inventaire;
|
||||
end group
|
||||
endif
|
||||
|
||||
if (Le joueur clique sur un bonus dans son inventaire ?) then (Oui)
|
||||
group Activation de Bonus
|
||||
:Le joueur clique sur un bonus dans l'inventaire;
|
||||
switch (Type de bonus)
|
||||
case (Temps ralenti)
|
||||
:Activer ralentissement du temps;
|
||||
:Temps ralenti : 3 secondes;
|
||||
case (Annulation d'obstacle)
|
||||
:Supprimer tous les obstacles;
|
||||
:Durée : 3 secondes;
|
||||
endswitch
|
||||
end group
|
||||
endif
|
||||
}
|
||||
|
||||
partition "Collecte des Pièces" {
|
||||
if (Le joueur touche une pièce ?) then (Oui)
|
||||
group Collecte de Pièces
|
||||
:Ajouter la pièce au niveau;
|
||||
end group
|
||||
endif
|
||||
}
|
||||
endif
|
||||
|
||||
' --- Fin du Niveau ---
|
||||
partition "Fin du Niveau" {
|
||||
if (Le joueur touche la zone de fin ?) then (Oui)
|
||||
:Terminer le niveau;
|
||||
:Animation de fin de niveau;
|
||||
:Conserver les pièces obtenues;
|
||||
break
|
||||
endif
|
||||
}
|
||||
|
||||
repeat while (Le joueur n'a pas fini le niveau)
|
||||
|
||||
stop
|
||||
|
||||
@enduml
|
97
Documentation/UML/activity-diagram/activity-diagram.puml
Normal file
97
Documentation/UML/activity-diagram/activity-diagram.puml
Normal file
@ -0,0 +1,97 @@
|
||||
@startuml Geometry Dash - Diagramme d'activités
|
||||
|
||||
start
|
||||
|
||||
:Lancer la partie;
|
||||
|
||||
repeat
|
||||
if (Le joueur percute un obstacle ?) then (Oui)
|
||||
:Le joueur meurt;
|
||||
:Animation de mort;
|
||||
:Augmenter le nombre d'essais de 1;
|
||||
:Perdre toutes les pièces et bonus;
|
||||
else (Non)
|
||||
partition "Saut" {
|
||||
if (L'utilisateur clique sur l'écran ?) then (Oui)
|
||||
:Le joueur effectue un saut;
|
||||
note right
|
||||
**Saut**
|
||||
Le joueur saute pour éviter les obstacles.
|
||||
end note
|
||||
endif
|
||||
}
|
||||
|
||||
partition "Bumper" {
|
||||
if (Le joueur touche un bumper ?) then (Oui)
|
||||
:Le joueur effectue un grand saut;
|
||||
note right
|
||||
**Bumper**
|
||||
- Permet un saut plus haut.
|
||||
- Utilisé pour atteindre des zones élevées.
|
||||
- Activation automatique au contact.
|
||||
end note
|
||||
endif
|
||||
}
|
||||
|
||||
partition "Forme" {
|
||||
if (Le joueur passe un portail ?) then (Oui)
|
||||
:Changement de forme;
|
||||
note right
|
||||
**Portail de Forme**
|
||||
- Change la mécanique de déplacement.
|
||||
- Types : Gravité inversée, vitesse accrue.
|
||||
end note
|
||||
endif
|
||||
}
|
||||
|
||||
partition "Bonus" {
|
||||
if (Le joueur touche un bonus ?) then (Oui)
|
||||
:Ajouter le bonus à l'inventaire;
|
||||
note right
|
||||
**Bonus Collecté**
|
||||
- Ajouté à l'inventaire.
|
||||
- Utilisable selon les besoins.
|
||||
end note
|
||||
endif
|
||||
|
||||
if (Le joueur clique sur un bonus dans son inventaire ?) then (Oui)
|
||||
:Activer un bonus;
|
||||
note right
|
||||
**Activation de Bonus**\\
|
||||
- Déclenche l'effet du bonus sélectionné.
|
||||
- Exemple : Invincibilité, Double saut.
|
||||
end note
|
||||
endif
|
||||
}
|
||||
|
||||
partition "Collecte des Pièces" {
|
||||
if (Le joueur touche une pièce ?) then (Oui)
|
||||
:Ajouter la pièce au niveau;
|
||||
note right
|
||||
**Collecte de Pièces**
|
||||
- Compte les pièces collectées.
|
||||
- Utile pour débloquer des niveaux ou bonus.
|
||||
end note
|
||||
endif
|
||||
}
|
||||
endif
|
||||
|
||||
partition "Fin du Niveau" {
|
||||
if (Le joueur touche la zone de fin ?) then (Oui)
|
||||
:Terminer le niveau;
|
||||
:Animation de fin de niveau;
|
||||
:Conserver les pièces obtenues;
|
||||
note right
|
||||
**Fin du Niveau**
|
||||
- Succès enregistré.
|
||||
- Les pièces collectées sont sauvegardées.
|
||||
end note
|
||||
break
|
||||
endif
|
||||
}
|
||||
|
||||
repeat while (Le joueur n'a pas fini le niveau)
|
||||
|
||||
stop
|
||||
|
||||
@enduml
|
15
Documentation/UML/activity-diagram/sub-activation-bonus.puml
Normal file
15
Documentation/UML/activity-diagram/sub-activation-bonus.puml
Normal file
@ -0,0 +1,15 @@
|
||||
@startuml sub-activation-bonus
|
||||
|
||||
start
|
||||
:Le joueur clique sur un bonus dans l'inventaire;
|
||||
switch (Type de bonus)
|
||||
case (Temps ralenti)
|
||||
:Activer ralentissement du temps;
|
||||
:Temps ralenti : 3 secondes;
|
||||
case (Annulation d'obstacle)
|
||||
:Supprimer tous les obstacles;
|
||||
:Durée : 3 secondes;
|
||||
endswitch
|
||||
stop
|
||||
|
||||
@enduml
|
10
Documentation/UML/activity-diagram/sub-bonus.puml
Normal file
10
Documentation/UML/activity-diagram/sub-bonus.puml
Normal file
@ -0,0 +1,10 @@
|
||||
@startuml sub-bonus
|
||||
|
||||
start
|
||||
if (Le joueur touche un bonus ?) then (Oui)
|
||||
:Ajouter le bonus à l'inventaire;
|
||||
else (Non)
|
||||
endif
|
||||
stop
|
||||
|
||||
@enduml
|
10
Documentation/UML/activity-diagram/sub-bumper.puml
Normal file
10
Documentation/UML/activity-diagram/sub-bumper.puml
Normal file
@ -0,0 +1,10 @@
|
||||
@startuml sub-bumper
|
||||
|
||||
start
|
||||
if (Le joueur touche un bumper ?) then (Oui)
|
||||
:Effectuer un grand saut;
|
||||
else (Non)
|
||||
endif
|
||||
stop
|
||||
|
||||
@enduml
|
17
Documentation/UML/activity-diagram/sub-forme.puml
Normal file
17
Documentation/UML/activity-diagram/sub-forme.puml
Normal file
@ -0,0 +1,17 @@
|
||||
@startuml sub-forme
|
||||
|
||||
start
|
||||
:Changement de forme via portail;
|
||||
switch (Forme)
|
||||
case (Forme fusée)
|
||||
:Mode fusée;
|
||||
case (Forme roue)
|
||||
:Mode roue;
|
||||
case (Forme sens inversé)
|
||||
:Mode sens inversé;
|
||||
case (Forme gravité inversée)
|
||||
:Mode gravité inversée;
|
||||
endswitch
|
||||
stop
|
||||
|
||||
@enduml
|
10
Documentation/UML/activity-diagram/sub-pieces.puml
Normal file
10
Documentation/UML/activity-diagram/sub-pieces.puml
Normal file
@ -0,0 +1,10 @@
|
||||
@startuml sub-pieces
|
||||
|
||||
start
|
||||
if (Le joueur touche une pièce ?) then (Oui)
|
||||
:Ajouter la pièce au niveau;
|
||||
else (Non)
|
||||
endif
|
||||
stop
|
||||
|
||||
@enduml
|
50
Documentation/UML/class-diagram.puml
Normal file
50
Documentation/UML/class-diagram.puml
Normal file
@ -0,0 +1,50 @@
|
||||
@startuml Geometry Dash - Diagramme de classe
|
||||
|
||||
skinparam style strictuml
|
||||
skinparam classAttributeIconSize 0
|
||||
skinparam classFontStyle Bold
|
||||
hide enum methods
|
||||
|
||||
class Position {
|
||||
{field} + column: Integer
|
||||
{field} + row: Integer
|
||||
|
||||
{method} + Position(column: Integer, row: Integer)
|
||||
{method} + equals(position: Position)
|
||||
}
|
||||
|
||||
class Level {
|
||||
{field} + songPath: String
|
||||
{field} + backgroundPath: String
|
||||
{field} + speed: Double
|
||||
|
||||
{method} + Level()
|
||||
}
|
||||
Level *--> "*\n- grid" GameObject : <<Is made up of>>
|
||||
|
||||
abstract class GameObject {
|
||||
{method} + getImagePath(): String {abstract}
|
||||
{method} + safeSides(): List<PositionSide> {abstract}
|
||||
}
|
||||
GameObject o--> "1\n- " Position : <<Has>>
|
||||
GameObject ..> PositionSide : <<Uses>>
|
||||
|
||||
class Spike extends GameObject {}
|
||||
|
||||
class Game {
|
||||
{field} - score: Integer
|
||||
|
||||
{method} + start(): void
|
||||
{method} + restart(): void
|
||||
{method} + end(): void
|
||||
}
|
||||
Game o--> "1\n- currentLevel" Level : <<Has>>
|
||||
|
||||
enum PositionSide <<enumeration>> {
|
||||
TOP
|
||||
RIGHT
|
||||
BOTTOM
|
||||
LEFT
|
||||
}
|
||||
|
||||
@enduml
|
3
Documentation/UML/state-diagram.puml
Normal file
3
Documentation/UML/state-diagram.puml
Normal file
@ -0,0 +1,3 @@
|
||||
@startuml Geometry Dash - Diagramme d'états
|
||||
|
||||
@enduml
|
98
Documentation/UML/use-case-diagram.puml
Normal file
98
Documentation/UML/use-case-diagram.puml
Normal file
@ -0,0 +1,98 @@
|
||||
@startuml Geometry Dash - Diagramme de cas d'utilisation
|
||||
|
||||
left to right direction
|
||||
|
||||
actor Joueur as Joueur
|
||||
actor "Créateur de cartes" as Createur
|
||||
|
||||
rectangle Jeu {
|
||||
usecase "Démarrer le jeu" as DemarrerJeu
|
||||
usecase "Afficher le menu principal" as AfficherMenu
|
||||
}
|
||||
|
||||
rectangle "Menu principal" {
|
||||
usecase "Configurer les paramètres" as ConfigurerParametres
|
||||
usecase "Accéder à la sélection des niveaux" as SelectionNiveau
|
||||
usecase "Accéder à l'éditeur de cartes" as EditeurCartes
|
||||
usecase "Consulter les statistiques" as ConsulterStats
|
||||
usecase "Voir les trophées et récompenses" as VoirTrophees
|
||||
}
|
||||
|
||||
rectangle "Sélection des niveaux" {
|
||||
usecase "Parcourir les niveaux disponibles" as ParcourirNiveaux
|
||||
usecase "Afficher les détails d'un niveau" as AfficherDetailsNiveau
|
||||
usecase "Commencer un niveau" as CommencerNiveau
|
||||
}
|
||||
|
||||
rectangle "Pendant un niveau" {
|
||||
usecase "Jouer et interagir avec le niveau" as JouerNiveau
|
||||
usecase "Sauter" as Sauter
|
||||
usecase "Redémarrer un niveau" as RedemarrerNiveau
|
||||
usecase "Mettre le jeu en pause" as MettrePause
|
||||
}
|
||||
|
||||
rectangle "Paramètres" {
|
||||
usecase "Régler le volume du jeu" as ReglerVolume
|
||||
usecase "Changer la musique de fond" as ChangerMusique
|
||||
usecase "Lire les instructions d'aide" as LireAide
|
||||
}
|
||||
|
||||
rectangle "Création de cartes" {
|
||||
usecase "Créer une nouvelle carte" as CreerNouvelleCarte
|
||||
usecase "Modifier une carte existante" as ModifierCarte
|
||||
usecase "Tester une carte" as TesterCarte
|
||||
usecase "Partager une carte" as PartagerCarte
|
||||
usecase "Télécharger des cartes de la communauté" as TelechargerCartes
|
||||
}
|
||||
|
||||
rectangle "Statistiques" {
|
||||
usecase "Afficher les statistiques globales" as AfficherStatsGlobales
|
||||
usecase "Afficher les statistiques de session" as AfficherStatsSession
|
||||
}
|
||||
|
||||
rectangle "Trophées et récompenses" {
|
||||
usecase "Voir les trophées débloqués" as VoirTropheesDebloques
|
||||
usecase "Voir les pièces collectées" as VoirPieces
|
||||
}
|
||||
|
||||
Joueur --> DemarrerJeu
|
||||
DemarrerJeu --> AfficherMenu
|
||||
AfficherMenu --> ConfigurerParametres
|
||||
AfficherMenu --> SelectionNiveau
|
||||
AfficherMenu --> EditeurCartes
|
||||
AfficherMenu --> ConsulterStats
|
||||
AfficherMenu --> VoirTrophees
|
||||
|
||||
SelectionNiveau --> ParcourirNiveaux
|
||||
ParcourirNiveaux --> AfficherDetailsNiveau
|
||||
ParcourirNiveaux --> CommencerNiveau
|
||||
CommencerNiveau --> JouerNiveau
|
||||
JouerNiveau --> MettrePause
|
||||
|
||||
JouerNiveau .> Sauter : <<include>>
|
||||
JouerNiveau .> RedemarrerNiveau : <<extends>>
|
||||
|
||||
ConfigurerParametres --> ReglerVolume
|
||||
ConfigurerParametres --> ChangerMusique
|
||||
ConfigurerParametres --> LireAide
|
||||
|
||||
EditeurCartes --> CreerNouvelleCarte
|
||||
EditeurCartes --> ModifierCarte
|
||||
CreerNouvelleCarte --> TesterCarte
|
||||
ModifierCarte --> TesterCarte
|
||||
CreerNouvelleCarte --> PartagerCarte
|
||||
ModifierCarte --> PartagerCarte
|
||||
EditeurCartes --> TelechargerCartes
|
||||
|
||||
TesterCarte .> JouerNiveau : <<include>>
|
||||
|
||||
ConsulterStats --> AfficherStatsGlobales
|
||||
ConsulterStats --> AfficherStatsSession
|
||||
|
||||
VoirTrophees --> VoirTropheesDebloques
|
||||
VoirTrophees --> VoirPieces
|
||||
|
||||
Createur --> CreerNouvelleCarte
|
||||
Createur --> ModifierCarte
|
||||
|
||||
@enduml
|
40
Documentation/conventions.md
Normal file
40
Documentation/conventions.md
Normal file
@ -0,0 +1,40 @@
|
||||
# Conventions développement informatique
|
||||
|
||||
## GitFlow
|
||||
|
||||
Le projet suit la convention [GitFlow](https://nvie.com/posts/a-successful-git-branching-model/) reposant sur 3 branches principales :
|
||||
|
||||
- `main` : Contient le code de la dernière version stable et déployé en production.
|
||||
- `staging` : Contient le code en cours de test avant déploiement en production, Quality Assurance (QA).
|
||||
- `develop` : Contient le code en cours de développement. Les nouvelles fonctionnalités et les correctifs de bugs sont fusionnés ici régulièrement.
|
||||
|
||||
Idéalement, chaque nouvelle fonctionnalité ou correctif de bug est développé dans une branche dédiée à partir de `develop`, nommée `feat/<nom-de-la-fonctionnalité>` ou `fix/<nom-du-bug>`. Une fois le développement terminé, une pull request est créée pour demander une revue de code, et une fois validée, la branche est fusionnée dans `develop`, puis supprimée.
|
||||
|
||||
## Convention des commits
|
||||
|
||||
Les commits respectent la convention [Conventional Commits](https://www.conventionalcommits.org/) et [Semantic Versioning](https://semver.org/) pour la gestion des versions et des releases en fonction des commits.
|
||||
|
||||
Les commits doivent être **atomiques**, c'est-à-dire qu'ils respectent les 3 règles suivantes :
|
||||
|
||||
- Ne concernent qu'un seul sujet (une fonctionnalité, une correction de bug, etc.).
|
||||
- Doivent avoir un message clair et concis.
|
||||
- Ne doivent pas rendre le dépôt "incohérent" (ne bloquent pas la CI du projet).
|
||||
|
||||
## Pull Requests (PR)
|
||||
|
||||
Lorsqu'une Pull Request (PR) est créée, il est obligatoire d'ajouter un **Reviewer**. Le rôle du Reviewer est d'effectuer une **code review** pour garantir la qualité et la conformité du code soumis avant sa fusion dans la branche cible. L'approbation du Reviewer est nécessaire pour fusionner la PR.
|
||||
|
||||
### Processus de revue de code
|
||||
|
||||
#### Code Review
|
||||
|
||||
- Examiner le code pour détecter les erreurs ou les violations des bonnes pratiques.
|
||||
- Vérifier la clarté, la lisibilité et la maintenabilité du code.
|
||||
|
||||
#### Commentaires
|
||||
|
||||
Les commentaires doivent suivre les [Conventional Comments](https://conventionalcomments.org/), qui permettent de structurer les retours de manière cohérente et compréhensible.
|
||||
|
||||
#### Validation
|
||||
|
||||
Une fois tous les retours pris en compte et les corrections appliquées, le Reviewer peut approuver la PR, permettant ainsi sa fusion.
|
Reference in New Issue
Block a user