Foro de elhacker.net

Programación => Java => Mensaje iniciado por: kur79 en 17 Enero 2016, 17:10 pm



Título: Extraer partes de una imagen
Publicado por: kur79 en 17 Enero 2016, 17:10 pm
Siento si el título no está demasiado bien explicado, pero no sabía como exponer la cuestión. He empezado a trabajar recientemente con la interfaz gráfica de java y hasta el momento he creado juegos sencillos como el pacman, arkanoid, etc. He tenido siempre una imagen para cada elemento y movimiento pero ahora quiero tratar con cosas un poco más complicatas, quiero tratar de simular el Mario Bros. Para sistemas de esta envergadura he visto que se suele tener una imagen que contiene las distintas sub-imágenes pero no comprendo cómo puedo recortarlas para añadírselas a un objeto. Ando un poco perdido y sinceramente, no se ni si se puede hacer esto en java o este método está pensado para otros lenguajes.

https://gyazo.com/3ae672000af3bc62726c2958cea70db2


Título: Re: Extraer partes de una imagen
Publicado por: 0xFer en 17 Enero 2016, 17:22 pm
Hola, una pregunta ¿No sería mejor tener las imágenes en archivos separados? Lo que quieres hacer es que tu programa recorte las imágenes en tiempo de ejecución pero ¿no sería mejor para un juego hacerlo antes de que se esté ejecutando? A lo mejor no estoy entendiendo bien lo que quieres hacer, pero si es lo que pienso entonces yo los recortaría con algún programa como GIMP antes de hacer un código que haga lo mismo.


Título: Re: Extraer partes de una imagen
Publicado por: kur79 en 17 Enero 2016, 18:25 pm
Por ponerte un ejemplo fácil, los pack de texturas de los videojuegos. 'Todas' los obejtos están en una imagen que imagino que lo recorta al incio del programa solamente 1 vez. Imagino que haré lo de recortarlo yo mismo y me quito de problemas xD


Título: Re: Extraer partes de una imagen
Publicado por: MNicolas en 19 Enero 2016, 11:25 am
Hola,

Cuando estudiaba me hicieron de hacer un Pacman en una práctica. Tenía una imagen que contenía todos los fantasmas y los pacman. Usaba un array para guardar todas las posiciones de un fantasma (hacia arriba, abajo, derecha o izquierda). La segunda dimensión del array era porque había 2 fantasmas por cada posición que variaban ligeramente para hacer un efecto de movimiento.

Código:

Código
  1.  
  2. BufferedImage imagenesTroceadas = new BufferedImage[4][2];
  3. for(int i = 0; i<imagenesTroceadas.length; i++)
  4. {
  5. for(int j = 0; j<imagenesTroceadas[i].length; j++)
  6. {
  7. imagenesTroceadas[i][j] = imagenes.getSubimage(j*32, i*32, 32, 32);
  8. }
  9. }
  10.  
  11.  
  12.  
  13.  

Nota 32 era el tamaño en píxeles de cada fantasmita.

Saludos.


Título: Re: Extraer partes de una imagen
Publicado por: bengy en 22 Enero 2016, 05:11 am
googlea sprites + games


Título: Re: Extraer partes de una imagen
Publicado por: Uzumaki_Naruto en 23 Enero 2016, 22:57 pm
Crea un array de BufferedImage donde vas a guardar los resultados ( las partes de la imagen ). y usa el método getSubImage para hacer la división de la imagen tal como te muestra MNicolas, Saludos.