viernes, 29 de junio de 2012

Genie y SDL un tandem de miedo


Genie no solo se puede ejecutar con una inteface como GTK también acepta otras como SDL que es un conocido motor de juegos en 2 dimensiones. Existen también la posibilidad de usar Cairo de GTK.
Este es un ejemplo de como Genie puede ayudarnos a hacer nuestros juegos. En cuanto a las posibilidades, sencillez y velocidad no hay nada comparado a vala. Realizar juegos con pygame es sencillo, con Genie también. ¿La diferencia? Tarde o temprano Python y Pygame te resultaran leeeeeeennnnnttooooooosssssss.

Una pelotita rebota por la pantalla es un buen puerto para zarpar con SDL como bandera y Genie como navío. Descubran nuevos mundos!!!!

Si quereís consultar los comandos de Genie + SDL no dudeis en consultar Valadoc en la sección de SDL. Alli encontrareis los primos SDLGraphics, Mixer, Image, Net,etc. Para buscar comandos en Valadoc se inserta la palabra clave SDL en el buscador superior izquierdo y hay se va desplegando la ayuda.

Para compilar este juego no olvideis que se necesitan instalar las librerias de SDL y SDL graphics para C.


$ sudo apt-get install libsdl1.2-dev
$ sudo apt-get install libsdl-gfx1.2-4


valac --pkg sdl --pkg sdl-gfx -X -lSDL_gfx juego_pelotita.gs


[indent=4]
uses SDL
uses SDLGraphics
screen: unowned SDL.Screen
alto: int16=400
ancho:int16 =600
init
    SDL.init(InitFlag.VIDEO)
    screen = SDL.Screen.set_video_mode (ancho, alto, 30, SurfaceFlag.FULLSCREEN | SurfaceFlag.DOUBLEBUF | SurfaceFlag.HWACCEL | SurfaceFlag.HWSURFACE)
    var fin = false
    var y=110
    var x=100
    var radius=10
    var color=1003232242
    var mov_x=1
    var mov_y=3
    while fin == false
        event: SDL.Event
        while (Event.poll (out event))== 1
            if event.type ==SDL.EventType.QUIT
                print "adios"
                fin= true
                break
            else if event.type == EventType.KEYDOWN
                fin=true
                break
        
        if x>ancho do mov_x=-mov_x
        if x<0 do mov_x=-mov_x
        if y>alto do mov_y=-mov_y
        if y<0 do mov_y=-mov_y
        x=x+mov_x
        y=y+mov_y
        
        
        Circle.fill_color (screen, x, y, radius, color);
        Circle.outline_color_aa (screen, x, y, radius, color);
        Rectangle.fill_color(screen,0, 0,ancho, alto,1801222)
        screen.flip()
    SDL.quit()

4 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. buen dia amigo aqui yo otra vez probe este pero me da el siguiente error
    juegoGenie.vala.c:7:17: fatal error: SDL.h: No existe el fichero o el directorio
    #include <SDL.h>
    ^
    compilation terminated.
    error: cc exited with status 256

    queria preguntarte por que arriba sale lo siguiente

    juegoGenie.vala.c:7:17: ¿por que salen 2 numeros 7 y 17 me imagino que 17 es la linea pero el 7?

    ResponderEliminar
  3. Seguramente no tengas instalados los vapis de SDL los tienes en la página Valadoc.

    Los números corresponden a la linea y columna de error pero del archivo .c generado no de nuestro código genie.

    ResponderEliminar
  4. Gracias por lo de la fila y columna ya que no sabia bien de que eran esos numeros, por lo otro de seguro me falta instalar algo, gracias.

    ResponderEliminar