Pregunta

Estoy en la creación de mi remake 2D de Minecraft en Java. Sé que se puede hacer bien, Orange451 en YouTube me inspiró a intentar hacer esto. Tengo todos los bloques en el mapa que se carga desde archivos de texto, y cuando se carga el juego, agrega todos los bloques de los archivos de texto a una lista de matrices. Creé un algoritmo para calcular el índice del bloque que su cursor está en el juego, y agregué un MouseListener para que cuando haga clic en Reemplazar el bloque con un bloque de aire (básicamente destruyendo el bloque). Para reemplazar el bloque en ArrayList, utilicé el método ArrayList Set (Index, OBJ). En teoría, debería estar funcionando correctamente, y de alguna manera lo hace. El único problema es que también crea un espacio negro en el mapa a pocos bloques de distancia. Esto es extremadamente frustrante, especialmente desde que he llegado hasta ahora. Información adicional: Necesito un método que reemplace el objeto en la lista de matrices, o una mejor manera de hacerlo porque mi método de detección de colisión también usa la lista de matrices para detectar una posición de bloqueo. ¡POR FAVOR, AYÚDAME! No puedo publicar imágenes, pero está configurando el bloque en la textura del aire, pero crea un cuadrado negro (¿un espacio en el mabey de ArrayList?) Cerca de él. Debido a que hay demasiado código para publicar, aquí está el código fuente de todo el proyecto: BLOCKWORLD 2D Fuente

¿Fue útil?

Solución

Estás luchando con esto porque una lista de objetos que conocen su coordenada es una forma loca de representar esta estructura 2D. Está desordenado: puede revertir o barajar su lista de matrices y pintaría lo mismo. Tiene una actualización o (n), ya que debe buscar en la lista de matrices un objeto de la coordenada apropiada antes de poder reemplazarlo. Puede tener más de un objeto con la misma coordenada. Puede estar en un estado donde las coordenadas visibles no tienen objetos correspondientes en absoluto, que es lo que ha encontrado, aquí.

POR FAVOR, AYÚDAME

ESTÁ BIEN. Comience con una matriz bidimensional (matriz, no ArrayList) de Byte. Que le permite 256 tipos de bloque, y cuáles permiten a sus jugadores cavar sin asignar constantemente la memoria con su new AirBlock(0, 0) Locura. Para dibujar el mundo, iterar sobre coordenadas visibles y mapear bytes para mapa de bits o me gusta.

También: ya existe un 2D Minecraft. Se llama terraria.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top