@startuml
'https://plantuml.com/sequence-diagram

actor user
activate main
activate screen
entity player
entity enemy

user -> main: start
main -> screen: loading_page
alt select game_page
    user -> screen: game_page
    loop run
        alt live > 0 or level > 10
            screen -> player: update() & move()
            screen -> enemy: update() & move()
            alt len(enemy) = 0
                alt level % 5 = 0
                    enemy -> enemy: boss
                else
                    enemy -> enemy: not_boss
                end
            end
            user -> player: move()
            alt attack
                player -> enemy: attack()
                enemy -> player: attack()
                player -> enemy: collide()
                enemy -> player: collide()
            end
        else
            screen --> main: game_over
            main -> screen: ending_page
        end
        main -> user: exit
    end
else select other
    main -> screen: other_page
    screen -> main: loading_page
end
@enduml