refactor: move Documentation and UML folders (#11)

This commit is contained in:
2024-12-02 10:24:34 +01:00
committed by GitHub
parent 1c9a51cf2d
commit 286fe32084
16 changed files with 57 additions and 42 deletions

Binary file not shown.

View 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)

View File

@ -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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View File

@ -0,0 +1,3 @@
@startuml Geometry Dash - Diagramme d'états
@enduml

View 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

View 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.