miércoles, 2 de mayo de 2012

Comenzando a programar juegos con python y pygame

Buenas Gente!

Hola a todos, este es mi primer blog y sepan que estoy aprendiendo. Estaré muy agradecido por cualquier recomendacion y/o crítica constructiva que tengan para mejorar este blog.

Ah que bien, entonces... De que va a ir el blog?

Éste blog tratará sobre programación. Mis primeras entradas serán acerca de
Pygame, ya que estoy trabajando en un proyecto para el bachillerato, el cual es hacer un
videojuego. Y como tengo un conocimiento aceptable sobre python, he decidido usar este
lenguaje.


Python es un lenguaje escrito en C y es bastante sencillo leerlo, es un lenguaje de alto nivel y no cuesta nada aprenderlo, a mi me parecio agradable, y cuando me enteré de que existía Pygame, me decidí a investigar para hacer videojuegos. El proyecto en cuanto a historia esta casi completo, y estoy trabajando junto con otras 2 personas que son mis condiscipulos en el bachillerato, los cuales me ayudan con la documentacion y el diseño de los personajes. Pero antes de llegar a ese nivel, tenemos que comenzar con cosas simples no? :)  Asi que explicare todas las cosas que aprendí y las que voy aprendiendo a medida que me profundizo en este lenguaje.

Ahora bien,

Qué es Pygame?

Pygame es un conjunto de módulos de Python diseñado para escribir juegos, y está publicado
bajo la licencia GPL.  Agrega funcionalidad de la librería SDL y además, esta bien documentado, y se pueden encontrar tutoriales y preguntar con facilidad (siempre que uno sepa inglés). Para más información acerca de pygame, visiten la página oficial de Pygame (está en inglés :p).

Yo voy a usar Python 2.7 porque me gusta más, si quieres usar Python 3 no hay ningún problema, solo recuerda usar la versión de pygame indicada para tu versión de python, tambien revisa si utilizas la versión de 32 bits o de 64 bits.

Ya veran que aprender a usar pygame es muy sencillo, y como me voy a concentrar en eso, les voy a decir que si no saben python, tomense un ratito al dia y aprendanlo, porque es muy facil.

Creando una ventana en pygame.

Ok, comenzemos!

import pygame 
from pygame.locals import *
 
pygame.init() 
 
pantalla = pygame.display.set_mode((640, 480))
pygame.display.set_caption('Titulo de ventana')
reloj = pygame.time.Clock() 

while 1:
     
     for event in pygame.event.get():
          if event.type == QUIT:
             pygame.quit() 
             sys.exit()
          elif event.type == KEYDOWN:
             if event.key == K_ESCAPE:
                pygame.quit()
                sys.exit()
     
     pygame.display.update()
     reloj.tick(60) 

Bien, voy a explicar el codigo, con "import pygame" importamos la libreria que les mencione al comienzo del post. Y si vamos a usar comandos para leer entradas por teclado o mouse del usuario, debemos poner tambien "from pygame.locals import * " porque es alli donde estan esas constantes, de otra forma, nos daria un error diciendo que las constantes QUIT, MOUSEMOTION, KEYDOWN, etc. no estan definidas.

Luego iniciamos pygame con la funcion 'pygame.init()', es necesario que hagamos esto, antes de que utilizemos algun comando de pygame. Con 'pygame.display.set_mode' le damos un tamaño a la ventana, y este valor lo guardamos en 'pantalla' esto de momento no nos es de utilidad, pero mas adelante ya veremos que esto nos sera util. 'pygame.display.set_caption' (como es obvio) es un comando que nos sirve para ponerle un titulo a la ventana. 'pygame.time.Clock' es un comando muy importante, ya que nos sirve para controlar la velocidad del juego.

Ahora iniciamos el bucle principal del juego, y ponemos otro bucle para revisar la lista de eventos de pygame y comprobar si el usuario ha presionado la tecla Escape, o la X (QUIT) para cerrar la ventana y asi poder salir. Seguidamente, afuera del bucle mostramos la escena con 'pygame.display.update' y decimos a cuantos fps queremos que ande el juego.

Bien, mañana estare publicando una entrada nueva, y voy a hablar sobre como poner un fondo y como interactuar con el. :)

Aqui un pensamiento mio sobre este lenguaje:
Segun tengo entendido, cada fps es una vuelta del bucle principal del juego, esto supone que si tengo que hacer un videojuego muy complicado, la velocidad de este se veria reducida. Entonces, cual es la solucion?. Pues no hacer el videojuego en python, porque hay lenguajes que manejan mejor los objetos y con mas precision y con alocacion de memoria a mano, etc. En si, un juego con comandos mas complicados y explicitos que python y pygame no nos los piden, para facilitarnos el trabajo (esto a cambio de rendimiento). Pero para lo que voy a hacer no es necesario, no tengo pensado hacer algo en 3D o que muuuuchos objetos diferentes interactuen entre si al mismo tiempo con caracteristicas distintas cada uno. En fin, no es lo que busco, y ademas es mas facil aprender python y pygame.

No hay comentarios:

Publicar un comentario