Estoy programando un juego 2D basado en fichas en Java como Bomberman (mi primer juego).¿Cómo se coordina la posición gráfica y lógica en un juego 2D basado en fichas utilizando una matriz?
Utilizo una matriz 2D para representar el mapa en el que realizo un seguimiento de las paredes, espacios transitables, etc. Ahora pude hacer que el jugador se moviera suavemente cambiando los sprites dependiendo de la tecla de dirección que presiona (pero no interactuando con el fondo/mapa, puede caminar al azar y salir de la pantalla).
Mi problema surge cuando quiero hacer un seguimiento de la posición del jugador en la matriz. Lógicamente, el personaje siempre pertenece a un solo mosaico, pero gráficamente puede estar entre dos mosaicos. ¿Cómo puedo resolver este problema?
ya yo probamos este:
currentTileArrayX = x/tileWidth;
currentTileArrayY = y/tileHeight;
Donde xey son las coordenadas superiores-izquierdas del sprite. Pero todo se volvió muy defectuoso porque los sprites del jugador no son del mismo tamaño que los cuadros.
Tenía otra opción en mente que resolvería el problema anterior: Cuando el jugador presiona una tecla de dirección, mueve el personaje al siguiente mosaico como una animación. Esto no permitiría que el jugador se detenga en medio de dos fichas ... ¿Pero qué sucede si lo interrumpe con otra pulsación de tecla? ¿Cómo puedo detener la acción del usuario mientras se está ejecutando la animación? Creo que esta es la solución más fácil, pero no sé cómo implementarla.
Ya traté de encontrar la solución en otras preguntas, pero no tuve suerte. Espero que puedas ayudarme.
Muchas gracias.
Nupul Cambié mi código usando la solución número uno. Gracias a eso solucionó muchos errores, podría decir que casi funciona ahora. Pero todavía tengo un problema: http://imageshack.us/f/687/bomberbug.png/ Espero haberlo explicado correctamente en la imagen. – Rama
En la imagen, currentPosition sigue siendo el mosaico rojo. Como la derecha del azulejo rojo es libre, puedo caminar hacia la derecha, pero no debo hacerlo gráficamente. – Rama
@Rama: No está claro lo que quieres decir ... Si puedes caminar hacia la derecha, entonces "¿por qué no?" En segundo lugar, si "gráficamente" usted no debe, entonces, estructuralmente, tampoco debería permitírsele. Su modelo interno debe ser una representación precisa de su punto de vista. Si no puedo ir directamente al modelo, no debería permitírmelo en la vista y no al revés, ya que la vista es v.v.v.v orientada a decimales, por así decirlo. ¿Podría aclarar el problema un poco más si no lo he entendido correctamente? – PhD