Estoy trabajando en un juego 2D en el que puedes moverte hacia arriba, hacia abajo, hacia la izquierda y hacia la derecha. Tengo esencialmente dos objetos lógicos del juego:
- Jugador: tiene una posición relativa al mundo
- Mundo: dibuja el mapa y el jugador
Hasta ahora, el mundo depende del jugador (es decir, tiene una referencia a él), necesitando su posición para determinar dónde dibujar el personaje del jugador y qué parte del mapa dibujar.
Ahora quiero agregar detección de colisión para que sea imposible que el jugador se mueva a través de las paredes.
La forma más simple en la que puedo pensar es que el jugador le pregunte al mundo si el movimiento previsto es posible. Pero eso introduciría una dependencia circular entre Player y World (es decir, cada uno tiene una referencia al otro), lo que parece evitar. La única forma en que se me ocurrió es hacer que el Mundo moviera al Jugador , pero eso me parece poco intuitivo.
¿Cuál es mi mejor opción? ¿O no vale la pena evitar una dependencia circular?