Problema con recortes de imagen en PySFML

Tratamos sobre el manejo de APIs frecuentemente utilizadas en el desarrollo de videojuegos, como SDL, pygame o SFML.

Problema con recortes de imagen en PySFML

Notapor Mightygaver » Mar Oct 05, 2010 9:18 pm

Bueno, hoy he sacado un ratito y me he puesto a empezar un pequeño proyectito de un mini-RPG, para ver a que puedo llegar :P
La cuestión, es que ha surgido un problema bastante extraño que no comprendo. Tengo el siguiente código Python, utilizando PySFML

Código: Seleccionar todo
        map_background = sf.Image()
        map_background.LoadFromFile("img/map_background.jpg")
        grass_img = sf.Image()
        grass_img.Create(65,65)
        grass_img.Copy(map_background, 0, 0, sf.IntRect(0, 0, 65, 65))


Lo he estado probando y de repente termina el programa en Python sin mostrar ningún error, ni nada. A base de prints he localizado que donde falla es en el primer Copy(). Me temía que faltaban las llamadas a Create, pero a pesar de haberlos añadido no han solucionado nada en la versión Python. Lo que más me ha frustrado es que he probado con su "equivalente" en código C++ y sí que funciona...

Aquí dejo el código C++:

Código: Seleccionar todo
    sf::Image origen;
    if (!origen.LoadFromFile("img/map_background.jpg"))
        return EXIT_FAILURE;

    sf::Image grass;
    grass.Create(65,65);
    grass.Copy(Origen,0,0,sf::IntRect(0,0,65,65));


Si alguien me echa un cable le estaré agradecido :D

Saludos.
Mightygaver
 
Mensajes: 69
Registrado: Vie Ago 27, 2010 5:46 pm
Ubicación: Vila-real, España

Re: Problema con recortes de imagen en PySFML

Notapor Mightygaver » Mié Oct 06, 2010 8:48 am

Sorry por el doble post, pero pensé que en pilas habría una solución a esto, ya que debían usar recortes para los sprites, así que lo busqué y encontre la magnífica función SetSubRect()
Modifiqué el código para utilizarla:

Código: Seleccionar todo
        map_background = sf.Image()
        map_background.LoadFromFile("img/map_background.jpg")
        self.grass_sprite = sf.Sprite(map_background)
        self.grass_sprite.SetSubRect(sf.IntRect(0,0,64,64))
        self.path_sprite = sf.Sprite(map_background)
        self.path_sprite.SetSubRect(sf.IntRect(66,200,66+64,264))


Intentaré solucionar lo de los números mágicos, pero de momento me sirve para ir probando :P
De todas formas, si alguien conoce la razón por la que el primer código fallaba (o fallaba yo... XD), la verdad que me gustaría verlo :P
Mightygaver
 
Mensajes: 69
Registrado: Vie Ago 27, 2010 5:46 pm
Ubicación: Vila-real, España


Volver a Sobre las bibliotecas multimedia

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado