@startuml
title Diagrama Secuencia Auto Avanza Se Encuentra Con " : Pozo"  Y Se Penaliza 3 movimientos

autonumber

actor Jugador

Jugador -> "posicion : Celda"++: getCelda(ESTE )
activate Jugador
"posicion : Celda" --> Jugador: celdaEste
deactivate "posicion : Celda"
 Jugador -> "celdaEste : Celda"++: avanzarEn( auto )



"celdaEste : Celda" -> " : Pozo"++: avanzarEn( auto )
" : Pozo" -> "auto : Auto"++: avanzarPozo()

create "eventoPuntaje :Penalizacion"
"auto : Auto"-> "eventoPuntaje :Penalizacion": Penalizacion(3)

create "eventoVehiculo : NoCambiarVehiculo"
"auto : Auto"-> "eventoVehiculo : NoCambiarVehiculo": NoCambiarVehiculo()

create "eventoPosicion : Avanzar"
"auto : Auto"-> "eventoPosicion : Avanzar": Avanzar()

create "evento : Evento"
"auto : Auto"  -> "evento : Evento": Evento( eventoPuntaje, eventoVehiculo, eventoPosicion)


"auto : Auto" --> " : Pozo": evento
deactivate "auto : Auto"

" : Pozo" --> "celdaEste : Celda": evento
"celdaEste : Celda" -> " : Pozo": siguiente()
" : Pozo" --> "celdaEste : Celda": estado
deactivate " : Pozo"

"celdaEste : Celda" --> Jugador: evento
deactivate "celdaEste : Celda"

Jugador -> "evento : Evento"++: setDireccion( ESTE )
deactivate "evento : Evento"
deactivate Jugador

Jugador -> "evento : Evento"++: actualizarPuntaje( puntaje )
activate Jugador
Jugador <-- "evento : Evento"--: movimientoTotales
deactivate Jugador

Jugador -> "evento : Evento"++: actualizarVehiculo( auto )
activate Jugador
Jugador <-- "evento : Evento"--: auto
deactivate Jugador

Jugador -> "evento : Evento"++: actualizarPosicion( posicion )
activate Jugador
Jugador <-- "evento : Evento"--: celdaEste
deactivate Jugador

@enduml