Estoy buscando ideas sobre cómo hacer lo siguiente: Quiero escribir un simple "mundo" en Java. Uno que podría comenzar y luego agregar nuevos objetos más adelante para simular / observar diferentes comportamientos entre los objetos existentes. El plan es codificar los objetos más nuevos después de mirar los viejos por un tiempo y luego cargarlos / soltarlos en el mundo existente. El problema es que no quiero detener o reiniciar el mundo una vez que haya comenzado, quiero que se ejecute durante unas semanas, pero necesito la capacidad de soltar objetos y rehacer / reescribir / eliminar / crear / mutarlos con el tiempo sin necesidad de reiniciar. El mundo podría ser tan simple como una matriz de 100 x 100 de ubicaciones X / Y, con una posible GUI de mapa en mosaico para representar visualmente el mundo. Sé que necesito algún tipo de proceso de temporizador para monitorear objetos y darles a cada uno una 'oportunidad de actuar'
Ejemplo: codifico World.java el lunes y lo dejo en funcionamiento. Luego, el martes escribo una nueva clase llamada Rock.java (que no se mueve). Luego lo cargo / lo dejo (¿de alguna manera?) En este mundo que ya se está ejecutando (que simplemente lo deja en algún lugar al azar en la matriz mundial y nunca se mueve). Luego, el miércoles, creo una nueva clase llamada Cat.java y la dejo caer al mundo, nuevamente colocada al azar, pero este nuevo objeto puede moverse alrededor del mundo (durante una unidad de tiempo), luego el jueves escribo una clase llamada Perro. Java, que también se mueve pero puede "actuar" en otro objeto si está en la ubicación vecina y viceversa.
Aquí está la cosa. No sé qué tipo de estructura / diseño necesitaría para codificar la clase mundial real para saber cómo detectar / cargar / rastrear objetos futuros (y actualmente no existentes).
¿Alguna idea de cómo harías algo así usando Java?