Creando un fondo con scroll

Posted on May 16, 2007. Filed under: PyGame, Python |

Es una característica típica de los viejos juegos de naves, hay un tutorial en ingles muy bueno aquí, pero para este post hice algo diferente y mucho mas fácil de entender.

El codigo del ejemplo lo pueden descargar de aquí (se llama scroll.zip)

Hago una pequeña explicación, primero creamos la clase Fondo pero con 2 images, solo sirve para que puedan ver el efecto scroll con un fondo diferente

class Fondo(pygame.sprite.Sprite):   
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image, self.rect=load_image(‘fondo.jpg’,0)
        self.image2, self.rect2 = load_image(‘fondo2.jpg’,0)

En la función main() vemos el código clásico de cualquier juego en pygame, definimos la pantalla, creamos un fondo y un objeto de tipo clock que nos servirá para fijar los cuadros por segundos, en este caso lo fijaremos a 30 escribiendo clock.tick(30) dentro del while.

desplazamiento = 0
imagen_de_fondo=imagen.imagen2
while 1:
   
        for event in pygame.event.get():
            if event.type == QUIT:
                raise SystemExit
            if  event.type == MOUSEBUTTONDOWN:
                imagen_de_fondo=fondo.image
            elif event.type is MOUSEBUTTONUP:
                imagen_de_fondo=fondo.image2
               

        desplazamiento +=2
        if desplazamiento==64: desplazamiento=0
        screen.blit(imagen_de_fondo,(0,0), (desplazamiento,0,HEIGHT,WIDTH))
        pygame.display.flip()
        clock.tick(30)

Hay un par de cosas para remarcar:

  • Al clickear el mouse intercambiamos el fondo
  • Hay una variable desplazamiento que va desde 0 a 64 (de 2 en 2) eso hace que en cada cuadro desplacemos el fondo 2 pixels.

La función blit de este ejemplo copia la imagen de fondo en la superficie screen, pero en este caso le pasamos 2 parametros nuevos, uno sirve para posicionarlo en (0,0) es decir (no estoy seguro) en la esquina superior izquierda y con el 2do parámetro le enviamos un rectángulo de la imagen fondo, pero desplazado.
Las imagenes de fondo tienen 124 pixeles mas de ancho que la pantalla, si no hiciéramos eso no podríamos lograr el efecto de desplazamiento.

Powered by ScribeFire.

Make a Comment

Deja un comentario

6 respuestas to “Creando un fondo con scroll”

RSS Feed for Aprendiendo a Programar en Python con PyGame para hacer Video Juegos Comments RSS Feed

Lo estuve probando y me va genial. Gracias

Tu suposicion es correcta el primer parametro de screen.blit es la superficie que vas a poner en la pantalla, el segundo que pasas es la posicion (arriba, izquierda) donde va a ser dibujado, aunque en lugar de pasar una tupla tambien es valido pasar un rect.
El tercer parametro que pasas es optativo, y en eso consiste precisamente el truco, el tercer parametro es el pedazo de la superficie que quieres dibujar, debe ser mas pequeña que la original.

Muy bien explicado, se le agredece.

Aqui estoy de nuevo despues de un par de meses, estoy creando un blog de programacion de video juegos usando python y pygame, me gustaria que lo vieran y me dieran su opinion
http://www.creatusjuegos.blogspot.com

fijate ke los links estàn rotos, ademas no he podido hacer ke ejecute el programa,sale una ventana como una terminal i se cierra automaticamente «solo permanece dos segundos» y no carga nada, a pesar de ke ya instalè python y pygame incluso instalè numpy, pero nada…
no he podido hacer nada 😦 yo se ke python es un lenguaje interpretado pero si es asì de complejo «en el sentido de ke no corren ni aùn los ejemplos» pues me kedo mejor kon el C++ 😦

los enlaces están rotos como el ke hizo el post ke no ha sido capaz de mantener los enlaces o es ke no desea seguir administrando su blog???????
aunke se le agradece ke se haya tomado el trabajo de postear y ayudar a documentar pyton y pygame en español

Hola

CURSO DE PYGAME

Solo tiene que dirigirse a esta web y seguir los pasos para ingresar antes del 10 de marzo 2010 http://www.aprenderpython.com


Where's The Comment Form?

    Acerca de

    Notas personales de lo que aprendo en Programación de Video juegos en Python con PyGame

    RSS

    Subscribe Via RSS

    • Subscribe with Bloglines
    • Add your feed to Newsburst from CNET News.com
    • Subscribe in Google Reader
    • Add to My Yahoo!
    • Subscribe in NewsGator Online
    • The latest comments to all posts in RSS

    Meta

Liked it here?
Why not try sites on the blogroll...