@startuml
title Diagrama Secuencia Moto Avanza Se Encuentra Con Pozo Y Se Penaliza

autonumber

actor Jugador

Jugador -> "posicion : Posicion"++: avanzarHaciaLaDireccion( este, moto )

activate Jugador
"posicion : Posicion" -> "posicion : Posicion"++: avanzarHaciaElEsteEn( moto )

"posicion : Posicion" -> "celdaEste : Celda"++: avanzarEn( moto )

"celdaEste : Celda" -> Pozo++: avanzarEn( moto )
Pozo -> "moto : Moto"++: avanzarPozo()
create "tresMovimientos : Movimiento"
"moto : Moto" -> "tresMovimientos : Movimiento": Movimiento( 3 )
"moto : Moto" --> Pozo: tresMovimientos
deactivate "moto : Moto"
Pozo --> "celdaEste : Celda": tresMovimientos
deactivate Pozo
"celdaEste : Celda" --> "posicion : Posicion"--: tresMovimientos
deactivate "celdaEste : Celda"


"tresMovimientos : Movimiento" <- "posicion : Posicion"++: esPosible()

note left
**Violación Tell Don't Ask**

Pregunta si es válido el
movimiento, ya que a veces no nos
podemos mover por un Piquete
end note

"tresMovimientos : Movimiento" --> "posicion : Posicion": true
deactivate "tresMovimientos : Movimiento"
"posicion : Posicion" -> "posicion : Posicion"++: setPosicion( celdaEste )

note left
**Violacion Don't Repeat Yourself**

Verificación para el seteo de la
posicion se repite a lo largo de
todos los diagramas, es decir,
es refactorizable.
end note

"posicion : Posicion" --> Jugador--: tresMovimientos
deactivate "posicion : Posicion"
deactivate "posicion : Posicion"

Jugador -> "puntaje : Movimiento": sumarMovimientos( tresMovimientos )

@enduml