Las lecciones de este taller se irán poniendo en este mismo post para que estén todas juntas.
Debo aclarar que esto no va a ser un análisis de los métodos y clases que ofrece pygame, sino una aplicación práctica de los que considero mas importantes.
Instalación
- En linux.
Código:
# yum install pygame
[...]
$ sudo apt-get install pygame
[...]
# zypper install pygame
[...]
- En windows
Y para pygame os podéis bajar el instalador desde esta web : http://www.pygame.org/download.shtml
Un poco de teoría
Todos los juegos que podéis imaginar, siguen este esquema:
Mientras no se termine:
- Procesar entradas (que pueden ser del teclado, del ratón...)
- Actualizar gráficos (puede ser mover un marcianito, cambiar de color una roca ...)
- Actualizar sonido (puede ser un disparo, los expectadores grintando gol ...)
- Mostrar gráficos (ponerlos en la pantalla)
- Reproducir sonidos (hacer que suenen)
Empezando con pygame
Por el momento, para importar pygame haremos esto:
Código
Creando la ventana y mostrando la primera imagen
import pygame
Para crear la ventana se haría así:
Código
Donde 800 y 400 son el tamaño de la ventana.
import pygame ventana = pygame.display.set_mode((800,400)) raw_input()
Si lo ejecutan verán que les aparece una ventana.
También les voy a aclarar que todo lo que se puede mostrar en esa ventana son objetos Surface de la librería pygame.
Para mostrar una imagen hay que hacer esto :
Código
pygame.image.load() crea una surface a partir de una imagen donde nombredeimagen es el nombre de una imagen que esté en el mismo directorio que el juego.
import pygame ventana = pygame.display.set_mode((800,400)) imagen = pygame.image.load('nombredeimagen') ventana.blit(imagen,(0,0)) pygame.display.flip() raw_input()
Lo que hace el método blit es colocar la Surface que le pasemos como argumento en las coordenadas que le pasemos como segundo argumento siendo 0,0 la esquina superior izquierda.
pygame.display.flip() lo que hace es mostrar los gráficos que tenga que mostrar.
Aquí acaba la primera lección, mas tarde seguiré.
Mover imágenes por la pantalla
Para mover imágenes por la pantalla lo que hay que hacer es ir actualizando un par de variables que servirán como cordenadas del método .blit(). De esta forma :
Código
Si prueban ese código verán que la imagen.gi (podéis cambiarle el nombre por el nombre de la imagen que usaron antes) se va moviendo en diagonal por la pantalla , pero , hay un problema y es que la imagen se va sobreponiendo sin borrar la anterior.
import pygame,time pantalla = pygame.display.set_mode((600,400)) # Crea la pantalla con esas dimensiones imagen = pygame.image.load('imagen.gif') # Carga la imagen while 1: for i in range(400): pantalla.blit(imagen,(i,i)) # Pone la imagen en las coordenadas que diga la variable pygame.display.flip() time.sleep(0.01) for i in range(400): pantalla.blit(imagen,(400-i,400-i)) pygame.display.flip() time.sleep(0.01)
En pygame , no se pueden borrar las imágenes que aparecen en la pantalla, pero lo que si se puede hacer es tapar lo que había antes con una imagen del tamaño de la ventana.De esta forma :
Código
Y así se evita el problema.
import pygame,time pantalla = pygame.display.set_mode((600,400)) # Crea la pantalla con esas dimensiones imagen = pygame.image.load('imagen.gif') # Carga la imagen fondo = pygame.Surface((600,400)) # Crea una imagen (Surface) fondo.fill([255,255,255]) # La rellena de color blanco (255,255,255esla representacion de rojo,amarillo y azul de la imagen) while 1: for i in range(400): pantalla.blit(fondo,(0,0)) # Carga el fondo en la pantalla, tapando todo lo que hubiera antes pantalla.blit(imagen,(i,i)) # Pone la imagen en las coordenadas que diga la variable i tapando esa parte del fondo pygame.display.flip() time.sleep(0.01) for i in range(400): pantalla.blit(fondo,(0,0)) pantalla.blit(imagen,(400-i,400-i)) pygame.display.flip() time.sleep(0.01)