@startuml Geometry Dash - Diagramme d'activités complet

start

:Lancer la partie;

repeat
    if (Le joueur percute un obstacle ?) then (Oui)
        :Le joueur meurt;
        :Augmenter le nombre d'essais de 1;
        :Perdre toutes les bonus;
    else (Non)
        partition "Actions du joueur" {
          group Saut
            if (L'utilisateur appuie sur espace ?) then (Oui)
                :Le joueur effectue un saut;
            endif
          end group

            if (Le joueur touche un bumper ?) then (Oui)
                group Bumper
                    :Le joueur effectue un grand saut;
                    if (Le bumper est actif ?) then (Oui)
                        :Effectue un grand saut;
                    else (Non)
                    endif
                end group
            endif

            if (Le joueur percute un bonus ?) 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;
                            :Durée : 3 secondes;
                        case (Temps accéléré)
                            :Activer accélération du temps;
                            :Durée : 3 secondes;
                    endswitch
                end group
            endif
        }

        partition "Gestion de la pause" {
            if (Le joueur clique sur le bouton de pause ?) then (Oui)
                group Pause
                    :Arriver sur le menu de pause;

                    switch (Option sélectionnée ?)
                        case (Reprendre)
                            :Reprendre la partie;
                        case (Quitter)
                            :Quitter le niveau;
                            :Retour au menu principal;
                            stop
                        case (Volume)
                            :Modifier le volume sonore;
                            :Revenir au menu de pause;
                        case (Menu de sélection de niveau)
                            :Revenir au menu de sélection de niveau;
                            stop
                    endswitch
                endgroup
            endif
        }

        partition "Fin du Niveau" {
            if (Le joueur touche la zone de fin ?) then (Oui)
                :Terminer le niveau;
                :Animation de fin de niveau;
                break
            endif
        }
    endif
repeat while (Le joueur n'a pas fini le niveau)

stop

@enduml
