Editar: Esto tiene mucho más sentido para mí ahora que me he alejado un paso del código, gracias por la ayuda.Gameloop para j2me juego "por turnos"
Acabo de encontrar desbordamiento de pila el otro día a través de Coding Horror y se ve increíble. Me imagino que le preguntaría a la comunidad sobre un problema que estoy tratando de resolver.
Estoy desarrollando un juego de sortilegios roguelike usando j2me para teléfonos midp 2.0. El proyecto aún se encuentra en las etapas básicas de desarrollo a medida que descubro cómo funcionará. La parte en la que estoy estancado actualmente tiene que ver con enhebrar.
El juego tiene una clase personalizada HaxCanvas
que extiende GameCanvas e implementa ejecutable. El método de ejecución llama a repaint() y luego duerme durante 50 ms, lo que da como resultado una velocidad de fotogramas de 20 FPS. Esto me permite escribir el resto del juego sin tener que volver a pintar en todas partes y hacer las animaciones y los efectos más fáciles de hacer más adelante. (al menos en teoría).
El flujo del juego está controlado por una clase GameManager, que recorre todos los NPC del mapa, tomando su turno, hasta que es el turno del jugador. En este punto, necesito obtener información para permitir al jugador moverse y/o atacar cosas. Originalmente estaba llamando al gameManager.runUntilHeroTurn()
en el método keyPressed
de mi HaxCanvas
. Sin embargo, después de leer los hilos del sistema j2me, me di cuenta de que poner un método con el potencial de funcionar durante un tiempo en una devolución de llamada es una mala idea. Sin embargo, debo utilizar keyPressed para hacer la entrada de datos, ya que necesito acceso a las teclas numéricas, y getKeyStates()
no es compatible con esto.
Sofar mis intentos de poner mi Gameloop en su propio hilo han provocado un desastre. Aparece una extraña "ArrayIndexOutOfBoundsException" no registrada sin ningún rastro de pila después de que el juego se haya ejecutado durante varios turnos.
Así que supongo que mi pregunta es la siguiente:
Para un "basado en turnos" juego en J2ME, ¿cuál es la mejor manera de implementar el bucle del juego, lo que permite la entrada handeling sólo cuando es el turno del jugador?
Por cierto, buena pregunta. +1 – Fostah