Introducción a Pygame
Por Nacho Cabanes, versión 0.10

2. Movimiento: algo que rebota en pantalla

En un juego real, es habitual que haya "enemigos" que se muevan de forma independiente. Como primer acercamiento, vamos a hacer que el marciano rebote por la pantalla mientras que no pulsemos la [X] para cerrar la ventana del juego.

Lo podríamos conseguir así:

# Mini-invaders, version 0.02
# (Imagen que rebota)
# Parte de la intro a Pygame, por Nacho Cabanes
 
import pygame
pygame.init()
 
ancho = 800
alto = 600
velocidadX = 3       # Nuevo en la version 0.02
velocidadY = 3       # Nuevo en la version 0.02
terminado = False    # Nuevo en la version 0.02
 
pantalla = pygame.display.set_mode( (ancho, alto) )
 
imagen = pygame.image.load("spaceinvader.png")
rectanguloImagen = imagen.get_rect()
rectanguloImagen.left = 300
rectanguloImagen.top = 200
 
while not terminado:                                     # Nuevo en 0.02
    for event in pygame.event.get():                     # Nuevo en 0.02
        if event.type == pygame.QUIT: terminado = True   # Nuevo en 0.02
 
    rectanguloImagen.left += velocidadX                   # Nuevo en 0.02
    rectanguloImagen.top += velocidadY                    # Nuevo en 0.02
    if rectanguloImagen.left < 0 or rectanguloImagen.right > ancho:
        velocidadX = -velocidadX                          # Nuevo en 0.02
    if rectanguloImagen.top < 0 or rectanguloImagen.bottom > alto:
        velocidadY = -velocidadY                          # Nuevo en 0.02
 
    pantalla.fill( (0,0,0) )                # Cambio en 0.02: repetitivo
    pantalla.blit(imagen, rectanguloImagen)
    pygame.display.flip()
 
# Nuevo en 0.02: Eliminada la pausa final
pygame.quit()
 

Los cambios son:


El resultado será muy similar al anterior (aunque con la ventana más grande y con movimiento):

pygame - ejemplo 002

Esto ya es algo más difícil, pero... ¿todavía asequible? Pues seguimos...