You are on page 1of 5

Tutorial: Escribiendo Juegos en Python Muchos de nosotros gozamos a diario jugando videojuegos.

Y somos muchos los que siempre hemos querido hacer nuestro propio juego. Cuando yo era chico program infinidad de juegos en mi Atari. Pero programar un juego no es cosa sencilla, y aprender el lenguaje C no es para cualquiera. Existe una plataforma de cdigo libre para escribir juegos de manera sencilla, en un lenguaje poderoso. Esta es la primera parte de una serie de artculos que escribir para ensear a utilizar las libreras pygame para hacer videojuegos. Estas libreras son opensource y estn disponibles para las plataformas tradicionales (Linux, MacOSX y Windows). Qu es pygame? Pygame es un conjunto de libreras para el lenguaje Python que facilitan el escribir juegos. Hacen fciles tareas complicadas como cargar imgenes, desplegarlas en la pantalla, almacenar y tocar sonidos/msica; tambin te permiten abstraerte de problemas como qu tipo de hardware tienen los usuarios. Para aprender a usar pygame slo necesitas tener conocimientos de Python. Como el enfoque de este tutorial no es aprender Python, les dejo la pgina oficial con tutoriales sobre cmo aprender este lenguaje. Instalar pygame La manera ms sencilla de instalar Pygame es hacerlo en Linux :D, con un simple comando en el terminal. En Ubuntu la instalacin es as: sudo apt-get install python-pygame Se siguen las instrucciones y listo. En la pgina de Pygame pueden encontrar instrucciones para instalarlo en Windows y MacOSX Manos a la obra Lo primero que haremos ser crear un archivo de texto llamado "demo1.py", y copiar estas lneas en l. Luego les explicar qu significan.
import pygame from pygame.locals import * SCREEN_WIDTH = 800 SCREEN_HEIGHT = 600 def game(): pygame.init() screen = pygame.display.set_mode( (SCREEN_WIDTH,SCREEN_HEIGHT) ) pygame.display.set_caption( "demo1" ) while True: keyinput = pygame.key.get_pressed() if keyinput[K_ESCAPE] or pygame.event.peek(QUIT): raise SystemExit

if __name__ == '__main__': game()

Vamos por partes. Con las siguientes lneas lo que hacemos es decir que usaremos las libreras:
import pygame from pygame.locals import *

Luego definimos un par de constantes, como la resolucin de pantalla que usaremos para nuestro juego:
SCREEN_WIDTH = 800 SCREEN_HEIGHT = 600

As, nuestro juego correr en 800x600. Luego escribimos una funcin llamada "Game". Veamos el cuerpo de la funcin. Lo primero que hacemos es inicializar los sistemas de pygame:
pygame.init()

Despus le decimos a pygame la resolucin que usaremos y el nombre de nuestro juego. Como lo corremos (por ahora) dentro de una ventana, este nombre es el que se desplegar en el ttulo de la ventana.
screen = pygame.display.set_mode( (SCREEN_WIDTH,SCREEN_HEIGHT) ) pygame.display.set_caption( "demo1" )

Finalmente, entramos a lo que es el ciclo principal del juego. Este ciclo tomar todo el tiempo de juego. Es en este juego en que sucede la inteligencia de los personajes, se calculan las nuevas posiciones, se dibujan los grficos y se toca la msica. Demos un vistazo. Comenzamos el ciclo:
while True:

Ahora le pedimos a Pygame que nos d un arreglo con todas las teclas que estn siendo presionadas en este instante. Y luego vemos si la tecla ESCAPE est presionada. Si esto es as, procedemos a terminar el juego. Para terminar, basta con salir del ciclo principal.
keyinput = pygame.key.get_pressed() if keyinput[K_ESCAPE] or pygame.event.peek(QUIT): raise SystemExit

Y por ltimo, estas lneas sirven para que el juego comience. Son lneas tpicas de los programas en Python, as que no las explicaremos.
if __name__ == '__main__': game()

Corriendo nuestro juego

Ha llegado la hora correr el juego. Para eso, simplemente ejecuta este comando en un terminal abierto en la misma carpeta de tu juego:
python demo1.py

Y qu veremos? Pues muy poco hasta aqu. Simplemente veremos una ventana en negro con el ttulo de nuestro juego. Si presionas la tecla ESCAPE la ventana se cerrar.

No podemos decir que nuestro juego es muy interesante hasta ahora, pero es la base de todos los programas que podrs escribir de ahora en adelante. Agregando una imagen de fondo Vamos un poco ms all de lo bsico. Agregar una imagen de fondo a nuestro juego es muy sencillo. Primero debemos crear una funcin que es la que usaremos para leer imgenes desde el disco duro.
def load_image(filename, transparent = False): try: image = pygame.image.load(filename) except pygame.error, message: raise SystemExit, message image = image.convert() if transparent: color = image.get_at((0,0)) image.set_colorkey(color, RLEACCEL) return image

Esta funcin es bastante simple. Lo que hace es leer la imagen desde el disco duro y almacenarla en una variable temporal. Si el segundo parmetro es verdadero, entonces la funcin get_at se usa para obtener el color del pixel en la posicin (0,0). Esto lo haremos cuando trabajemos con personajes. Por ahora puedes ignorarlo.

Luego, descarga esta imagen y ponla en la misma carpeta que el juego. Ahora, los ltimos toques al cdigo. Haremos algunas modificaciones al mtodo principal. Antes del ciclowhile agregaremos las siguientes lneas:
screen = pygame.display.set_mode( (SCREEN_WIDTH,SCREEN_HEIGHT) ) background_image = load_image('back.jpg');

Lo que hicimos aqu fue crear una superficie. Las superficies son los objetos grficos de Pygame. Pero esta superficie en particular es la que representa a la ventana principal del juego. Lo que dibujemos en sta saldr dibujado en nuestro juego. Luego cargamos la imagen "back.jpg" en memoria y la almacenamos en la variablebackground_image. Ahora agregamos bajo el ciclo while estas otras lneas:
screen.blit(background_image, (0,0) ) pygame.display.flip()

Estas ltimas dos lneas hacen que por cada ciclo la imagen de fondo se dibuje sobre la superficie de la pantalla. Los parmetros (0, 0) son para indicarle al intrprete que la esquina superior izquierda de la imagen se dibuje sobre la esquina superior izquierda de la pantalla. En otras palabras, es la posicin en la pantalla. Resultado final El cdigo final de esta segunda versin slo es un poco ms largo. Veamos:
import pygame from pygame.locals import * SCREEN_WIDTH = 800 SCREEN_HEIGHT = 600 def load_image(filename, transparent = False): try: image = pygame.image.load(filename) except pygame.error, message: raise SystemExit, message image = image.convert() if transparent: color = image.get_at((0,0)) image.set_colorkey(color, RLEACCEL) return image def game(): pygame.init() screen = pygame.display.set_mode( (SCREEN_WIDTH,SCREEN_HEIGHT) ) pygame.display.set_caption( "demo1" ) background_image = load_image('back.jpg'); while True: screen.blit(background_image, (0,0) ) pygame.display.flip() keyinput = pygame.key.get_pressed() keyinput = pygame.key.get_pressed() if keyinput[K_ESCAPE] or pygame.event.peek(QUIT): raise SystemExit if __name__ == '__main__': game()

Si lo hiciste todo bien, tipeando "python demo1.py" deberas ver algo como esto:

Bueno, con esto terminamos la primera parte. En la segunda veremos cmo hacer personajes y lograr que stos se muevan por la pantalla. Nos vemos!

You might also like