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