Estoy diseñando un juego simple, que usa la física 2D y Newtoniana de Java. Actualmente mi principal "bucle del juego" se ve algo como:Juego de diseño de manera OO
do {
for (GameEntity entity : entities) {
entity.update(gameContext);
}
for (Drawable drawable : drawables) {
drawable.draw(graphics2d);
}
} while (gameRunning);
Cuando una entidad se le instruye para actualizarse a sí mismo que ajustará su velocidad y posición sobre la base de las fuerzas de corriente aplicada a la misma. Sin embargo, necesito entidades para exhibir otro comportamiento; p.ej. si un "jugador malo" es disparado por un jugador, la entidad debería ser destruida y eliminada del mundo del juego.
Mi pregunta: ¿Cuál es la mejor manera de lograr esto de una manera orientada a objetos? Todos los ejemplos que he visto hasta ahora incorporan el bucle del juego en una clase de Dios llamada algo así como Game
, que realiza los pasos: detectar colisiones, verificar si el chico malo mató, verificar si el jugador murió, volver a pintar , etc. y encapsula todo el estado del juego (vidas restantes, etc.). En otras palabras, es muy procedural y toda la lógica está en la clase de juego. ¿Alguien puede recomendar un mejor enfoque?
Estas son las opciones que he pensado hasta ahora:
- pasar una
GameContext
a cada entidad de la que la entidad puede sustraerse si se requiere o actualizar el estado del juego (por ejemplo, a "no funcionando" si el jugador es asesinado). - Registre cada
GameEntity
como escucha de la clase centralGame
y adopte un enfoque orientado a eventos; p.ej. una colisión resultaría en el disparo de unCollisionEvent
a los dos participantes en la colisión.
Creo que he encontrado el error - que es 'while (gameRunning)' quiere allí –