martes, 3 de julio de 2012

Seguimos con la implementación para juegos SDL para Genie. Ahora en vez de mostrar una pelotita creada con la librería de gráficos. Vamos a mostrar un archivo gráfico con la librería SLDImage

Atentos a la orden de compilación puesto que tendremos que poner los nombres de las librerias.

$ valac --pkg sdl --pkg sdl-mixer --pkg sdl-gfx --pkg sdl-image -X -lSDL_gfx -X -lSDL_image "SDL1.gs" --Xcc=-I/usr/include/SDL

Este es el código para introducir una imagen desde un archivo PNG.

boy.png


Puedes copiar este y llamarlo boy.png dejandolo en la misma carpeta del programa.



uses SDL
uses SDLGraphics
uses SDLImage

screen: unowned SDL.Screen
alto: int16=400
ancho:int16 =800
imagen: SDL.Surface
sr:Rect
dr:Rect
a: int=0

init
   
    SDL.init()
   
    screen = SDL.Screen.set_video_mode (ancho, alto,15,  SurfaceFlag.FULLSCREEN| SurfaceFlag.DOUBLEBUF | SurfaceFlag.HWACCEL | SurfaceFlag.HWSURFACE)
   
    var fin = false
    var y=110
    var x=100
    var mov_x=2
    var mov_y=2
    var old_x=0
    var old_y=0
   
   
    sr.x = 0
    sr.y = 0
    sr.w = 50
    sr.h = 50
   

    dr.x = 30
    dr.y = 30
    dr.w = sr.w;
    dr.h = sr.h;

   
    imagen =  SDLImage.load ("/home/gontzal/Mahaigaina/boy.png")
    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-50 do mov_x=-mov_x
        if x<0 do mov_x=-mov_x
        if y>alto-50 do mov_y=-mov_y
        if y<0 do mov_y=-mov_y
   
           
        x=x+mov_x
        y=y+mov_y
        old_x=dr.x
        old_y=dr.y
       
        dr.x=x
        dr.y=y
       
        Rectangle.fill_color(screen,old_x-20, old_y-20,old_x+60, old_y+60,0355)
        imagen.blit(sr,screen,dr)
        screen.flip()
       
    SDL.quit()
   





   
Basicamente es el mismo ejemplo que el anterior código pero va rellenando de color de negro el anterior cuadro ocupado por la imagen, para así borrar las huellas.

Explico los pasos para mostrar una imagen:

imagen: SDL.Surface
sr:Rect
dr:Rect


Defino imagen como Objeto surface puesto que asi se debe declarar las imagenes de SDL. En cuanto a Rect es un objeto rectangular para el control de imagenes y choques o colisiones de SDL. Las coordenadas del objeto se definen con dr. y sr son las coordenadas dentro del hueco de la imagen.

imagen =  SDLImage.load ("/home/gontzal/Mahaigaina/boy.png")


cargamos la imagen con load y la imprimimos en pantalla con:

imagen.blit(sr,screen,dr)

si  cambio el valor de dr la imagen se moverá, sin embargo habrá que eliminar la anterior imagen. Es decir que tendremos antes que borrar toda la pantalla o el lugar específico que ha cambiado.

Si quereis 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.






No hay comentarios:

Publicar un comentario en la entrada