@startuml
actor Gracz
participant "Gra" as Gra
participant "Plansza" as Plansza
participant "Bank" as Bank
participant "Karty" as Karty
participant "GraczService" as GraczService
participant "PlanszaService" as PlanszaService
participant "KartyService" as KartyService
participant "BankService" as BankService
Gracz -> Gra: Rozpocznij grę
activate Gra
Gra -> PlanszaService: Inicjalizacja gry
activate PlanszaService
PlanszaService -> Plansza: Utwórz planszę
activate Plansza
PlanszaService -> Plansza: Przygotowanie nieruchomości
PlanszaService -> Plansza: Określenie kolejności
deactivate Plansza
loop Gra się nie skończy
Gracz -> Gra: Rozpocznij turę gracza
activate Gra
Gra -> PlanszaService: Pobierz planszę
activate PlanszaService
PlanszaService -> Plansza: Pobierz planszę
activate Plansza
Plansza -> Plansza: Rozpocznij turę gracza
deactivate Plansza
deactivate PlanszaService
Gracz -> Gra: Rzut kośćmi
activate Gra
Gracz -> Gra: Przesuń pionek zgodnie z rzutem
activate Gra
Gra -> PlanszaService: Pobierz planszę
activate PlanszaService
PlanszaService -> Plansza: Pobierz planszę
activate Plansza
Plansza -> Plansza: Przesuń pionek gracza
deactivate Plansza
deactivate PlanszaService
deactivate Gra
Gracz -> Gra: Gracz podejmuje decyzje
activate Gra
Gra -> GraczService: Pobierz możliwe decyzje gracza
activate GraczService
GraczService -> Gracz: Kupno domów/hoteli
GraczService -> Gracz: Sprzedaż lub zastaw nieruchomości
GraczService -> Gracz: Handel z innymi graczami
deactivate GraczService
deactivate Gra
Gracz -> Gra: Gracz kończy turę
activate Gra
Gra -> PlanszaService: Pobierz planszę
activate PlanszaService
PlanszaService -> Plansza: Pobierz planszę
activate Plansza
Plansza -> Plansza: Zakończ turę gracza
deactivate Plansza
deactivate PlanszaService
deactivate Gra
Gracz -> Gra: Sprawdź warunek zakończenia gry
activate Gra
alt Został jeden gracz?
Gra -> Gra: Zakończ grę
Gra -> Gracz: Ogłoś zwycięzcę
Gracz -> Gra: Zakończ grę
else Nie
Gra -> Gracz: Przygotuj się na następną turę
end
deactivate Gra
end
Gracz -> Gra: Zakończ grę
activate Gra
Gra -> GraczService: Usunięcie gracza z gry
activate GraczService
GraczService -> Gracz: Usuń gracza z gry
deactivate GraczService
deactivate Gra
Gracz -> Gra: Zakończ grę
deactivate Gra
Gracz -> BankService: Wykonaj akcję zakończenia gry
activate BankService
BankService -> Bank: Rozlicz akcję zakończenia gry
activate Bank
Bank -> Bank: Rozlicz akcję zakończenia gry
deactivate Bank
deactivate BankService
@enduml