@startuml

class Posicion{
    +x()
    +y()
}


class Mapa{
    Mapa(json)
    + posicionar(posicion, gameEntity) bool
    + mover(posicion,unidad, unidades) Posicion
    + esUnFinal(posicion) bool
    + obtenerMasCercano(posicion,rango) arr[unidades]
}

class Camino{
    Camino(inicio,fin,pasarelas)
    + mover(posicion, unidad, unidades) Posicion
    + ocupar(pasarela,unidad)
    + obtenerEnRangoFinal(posicion,rango) Pasarela
    + esElFinal(posicion) bool
}

interface Parcela{
    +sacar(gameEntity)
    +puedePoner(gameEntity) bool
    +poner(gameEntity)
    +obtener() arr[gameentity]

    +dibujar()
}

class Terreno{
    Terreno(posicion, sePuedeConstruir)
    +sacar(gameEntity)
    +puedePoner(gameEntity) bool
    +poner(gameEntity)
    +puedePoner(construccion) bool
    +poner(construccion)
    +obtener() arr[gameentity]
    +dibujar()
}

class Pasarela{
    Pasarela(posicion)
    +sacar(gameEntity)
    +puedePoner(gameEntity) bool
    +poner(gameEntity)
    +puedePoner(construccion) bool
    +poner(construccion)
    +obtener() arr[gameentity]
    +dibujar()
}




Pasarela ...|> Parcela
Terreno ...|> Parcela


Mapa --> "1..*"Parcela
Mapa o-- Camino


@enduml