Razón Artificial

La ciencia y el arte de crear videojuegos

Introducción a PySFML

Escrito por adrigm el 20 de marzo de 2011 en Desarrollo Videojuegos, Noticias, Programación | 0 Comentarios.

SFML es una biblioteca que permite crear aplicaciones multimedia de manera sencilla, tiene soporte para que puedas escribir tus aplicaciones en varios lenguajes y utiliza internamente la funcionalidad que provee opengl.

La poca documentación que existe de esta biblioteca es para SFML que está escrita en C++ y no para las adaptaciones a otros lenguajes, en este artículo voy a tratar de enseñar lo básico acerca de Pysfml. Doy por sentado que tienes correctamente instalado Python y PySFML.

Creando una ventana

Lo primero que tenemos que hacer es importar la bibliotecam a continuación creamos la ventana y por último creamos el llamado loop del juego, pero vamos primero a ver el código y lo explicamos mejor.

from PySFML import sf

window = sf.RenderWindow(sf.VideoMode(640, 480), "Hola Mundo")

run = True
while run:
    events = sf.Event()
    while window.GetEvent(events):
        if events.Type == sf.Event.Closed:
            run = False

        window.Display()

En la primera línea importamos PySFML. En la tercera línea creamos una ventana con sf.RenderWindow como vemos le pasamos dos parámetros (puede recibir más, pero se escapan del objetivo de este tutorial) que son el modo de video que lo establecemos con sf.VideoMode(640, 480) y el título de la ventana que es una cadena de texto.

En la quinta línea creamos una variable booleana auxiliar para controlar el bucle del juego. En la sexta línea empezamos el llamado Game Loop del juego, cuando run valga false será cuando se interrumpa el juego.

En la séptima línea declaramos otro variable llamada events que toma lo que devuelve sf.Event() y lo que devuelve es una lista de eventos que este recogiendo PySFML. La siguiente línea obtenemos los eventos que se proden sobre la ventana con el método GetEvent. En la octava línea comprobamos si el evento es de Closed, es decir, si es un evento de cierre de la ventana. En cuyo caso el la línea 9 cambiamos la variable run a False para salir del bucle.

Por último con la última línea llamamos el método Display() de la ventana que lo que hace es dibujarla. Con esto ya tenemos una ventana vacía con el título “Hola Mundo” que responde a eventos de cierre.

Añadir un Sprite

Ahora vamos a cargar una imagen. Yo voy a poner el logo de Razón Artificial en el centro de la pantalla pero puede ser cualquier imagen, simplemente ponerla en el mismo directorio que el script del ejemplo. Como antes, pongo el código y lo comentamos.

from PySFML import sf

window = sf.RenderWindow(sf.VideoMode(640, 480), "Hola Mundo")

logo_img = sf.Image()
logo_img.LoadFromFile('logo.png')
logo_sprite = sf.Sprite(logo_img)
logo_sprite.SetPosition(200, 100)

run = True
while run:
    events = sf.Event()
    while window.GetEvent(events):
        if events.Type == sf.Event.Closed:
            run = False

        window.Clear()
        window.Draw(logo_sprite)
        window.Display()

Líneas nuevas a partir de la 5. Creamos una variable llama logo_img y le pasamos sf.Image() con esto la creamos un objeto imagen de PySFML. A continuación llamamos al método LoadFromFile() y le pasamos como parámetro la ruta de nuestra imagen. Con esto tenemos nuestra imagen cargada, pero las imágenes no son dibujables en PySFML solo son un recurso. Lo que es dibujable es un Sprite que se pueden crear con una imagen.

En la línea 7 creamos un objeto Sprite llamado logo_sprite pasándole como parámetro nuestra imagen cargada. Ya tenemos nuestro Sprite listo. Los Sprites tienen varios métodos y parámetros que ya veremos en otros artículos, pero uno de ellos es SetPosition(x, y) que recibe los valores de las coordenadas donde queremos mostrar nuestra imagen como vemos en la línea 8.

Es hora de mostrar el Sprite en nuestra ventana. Lo hacemos en la linea 18 llamando al método Draw() de window y pasándole como parámetro nuestro Sprite. En parte es lógico casi se puede leer: ventana.Dubujar(Sprite).

Anteriormente en la lía anterior limpiamos la ventana con el parámetro Clear(), esto lo que hace es borrar la pantalla para dibujar de nuevo. Es lo que hace que al mover nuestro personaje se borre de un lado antes de ponerlo en otro. Este es el resultado:

Esto es una rápida introducción a PySFML, en futuros artículos miraremos esta estupenda biblioteca más en profundidad.

Deja un comentario