elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: ¿Usas Skype? Protégete de los Skype Resolver


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderador: Eleкtro)
| | |-+  TUTORIAL DE PROGRAMACION DE JUEGOS CON PYTHON Y PYGAME
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: TUTORIAL DE PROGRAMACION DE JUEGOS CON PYTHON Y PYGAME  (Leído 13,272 veces)
Checmated

Desconectado Desconectado

Mensajes: 7


Ver Perfil
TUTORIAL DE PROGRAMACION DE JUEGOS CON PYTHON Y PYGAME
« en: 15 Diciembre 2008, 17:08 »

Que onda gente..?

Bueno pues, soy poco conocido en este foro... Pero para darme conocido, ire posteando un tutorial de programacion de juegos con pygame que estoy desarollando continuamente

______________________
Programación de Videojuegos con Python y Pygame
By: Checmated


Nota: El siguiente curso ah sido desarrollado por David Salvatore Pensa Uzcategui (Checmated)...Por ello se pide respetar los derechos de autor: En caso de publicar este tutorial en otro foro, pagina, entre otros, se pide identificar a su autor como: David S. Pensa U. o Checmated

Escrito para: foro.code-makers.es y ahora para foro.elhacker.net



Introducción a Pygame

Pygame, es un conjunto de módulos creados exclusivamente para su uso en Python… Estos módulos están desarrollados en C y tienen como fin ayudar al desarrollo de videojuegos en Python. Pygame, trabaja con la librería SDL como base y provee a Python de métodos fáciles y sencillos con los cuales controlar Imágenes, Videos, Sonidos y Entradas de datos, tanto en ratón como en el teclado, todo esto de manera simultanea, fácil, rápida y eficaz


Historia

Pygame comenzó en el verano del 2000.Creada por Sam Lantinga, es una biblioteca multiplataforma para controlar multimedia, comparable a DirectX. A sido usada para cientos de juegos comerciales y de código abierto.

Conocimientos Previos

Para continuar con este Tutorial, es necesario tener conocimientos previos en el lenguaje de programación Python…No quiero entrar mucho en detalles ya que existen buenos tutoriales y quiero “orientar” este tutorial solo a la programación de Videojuegos en Python, ya que hay escasa existencia de material bueno y bien explicado en español

Para continuar con este tutorial, debes tener:

*Conocimiento Básico/Avanzado de Python
*Estar familiarizado con la sintaxis de Python
*Pygame (Lo podemos descargar desde aquí: LINK)
*Python (Recomendado: 2.5.2)
*Interés en la programación de Videojuegos
*Ganas de aprender

Y como ultimo pero no menos importante: Paciencia

________


Comenzando en lo básico
De Pygame

Importar Pygame:

Para realizar una aplicación en Pygame, es necesario primero exportar los módulos de este al programa… La mayoría de los juegos realizados con python y pygame importan todo pygame de la siguiente manera

Código
  1. import pygame
  2. from pygame.locals import*

La primera linea es la realmente necesaria, ya que se encarga de importar todos los módulos que están dentro del paquete de pygame… La segunda coloca un grupo limitado de constantes y funciones dentro del espacio de nombres global de su script.

Iniciar Pygame:

Antes de poder hacer mucho con pygame, debemos iniciar este… Esto lo logramos con esta linea:

Código
  1. pygame.init()

Esto intentara iniciar todos los módulos, pero también podemos iniciar cada modulo por separado… Esto lo logramos de una manera muy facil:

Supongamos que queremos llamar al módulo ‘Font’, para ello colocamos:

Código
  1. pygame.font.init()

Notaran que si se produce un error cuando inicializa con "pygame.init()", este fallará silenciosamente. Cuando inicializa módulos a mano como este, cualquier error producirá una excepción. Cualquiera de los módulos que deba ser inicializado también tiene una función "get_init()", que retornará True (verdadero) si el módulo ha sido inicializado.

Es seguro llamar a la función "init()" por cada módulo mas de una vez.



Módulos de Pygame:

Existen distintos modulos, cada uno permite un control de un área en especifico, los modulos mas destacados son:

Cdrom: administra los dispositivos CDROM y la reproducción de CDs de audio.
Cursors: carga imágenes de cursor, incluyendo los cursores por defecto.
Display: controla la ventana principal o pantalla.
Draw: dibuja figuras simples sobre objetos Surface.
Event: administra eventos y la cola de eventos.
Font: genera e imprime fuentes tipográficas Truetype.
Image: lee y graba imágenes.
Joystick: administra dispositivos de joystick.
Key: administra el teclado.
Mouse: permite controlar el mouse
Movie: reproduce películas en formato MPEG.
Sndarray: manipula sonidos con Numeric.
Surfarray: manipula imágenes con Numeric.
Time: controlador de tiempo.
Transform: puede escalar, rotar e invertir imágenes.

Empezando por lo básico y principal

Bien, ahora comenzaremos a jugar con python y pygame… Algo fundamental de un juego al que nunca se le presta atención es a la ventana de la aplicación… Todos le damos doble clic al icono del juego y comenzamos a jugar… Bueno, en pygame una venta se crea de manera muy sencillo, la mas común y facil es con pygame.display.set_mode()

Probamos lo siguiente:

Código
  1. import pygame
  2. pygame.init()
  3. #colocamos las medidas en una variable, especificando que primero sera width y luego height (Ancho y luego  Largo)
  4. size = width, height = 320, 240
  5. screen = pygame.display.set_mode(size)
  6. raw_input()

Esto no requiere de mucha explicación ya que es algo sencillo… Bien, normalmente pygame no responderá a cierres, es decir, que muchas veces se quedara colgado cuando lo intenten cerrar… Esto se arregla con colocando “pygame.quit()” al final de todo code sencillo, como el que acabamos de ver en este momento, entonces, nos quedaría así:


Código
  1. import pygame
  2. pygame.init()
  3. size = width, height = 320, 240
  4. screen = pygame.display.set_mode(size)
  5. raw_input()
  6. pygame.quit()
  7.  

Estableciendo fondo a una ventana:

Bien, ya creamos nuestra ventana, pero ahora queremos colocar una imagen de fondo, esto lo hacemos de manera muy sencilla con “screen.blit()”

Para esto hay que usar un “image.load” que nos permite cargar una imagen de una dirección específica… La sintaxis es muy sencilla:

Código
  1. pygame.image.load(“ruta/de/archivo/nombredeimagen.extension)

En caso de que nuestra imagen este en la misma ubicación donde nos encontramos nosotros, no es necesario especificar la ruta… De igual manera, si la imagen se encuentra en una ruta que nos incluye anteriormente (Ejemplo estamos en la carpeta CM y la imagen esta en Mis documentos/CM/imágenes/imagen.jpg) solo debemos colocar el resto de la ruta (En este caso imágenes/imagen.jpg)

Entonces, declaramos en una variable la imagen y luego le colocamos la variable como valor al “screen.blit”
Pero basta de teoria y miremos el siguiente code


Citar
import pygame
pygame.init()
#Colocamos el code anterior
size = width, height = 320, 240
screen = pygame.display.set_mode(size)
#Aqui colocamos el fondo
Imagen = pygame.image.load(“Mis documentos/imágenes/hola.jpg”)
screen.blit(imagen, (0,0))
#Ahora si lo colocamos xD
raw_input()
pygame.quit()

Y listo, ya hemos agregado un fondo a la imagen… Algunos se preguntaran para que coloco “(0,0)” luego de colocar la variable con la imagen… Esto se hace para no alterar el tamaño de la imagen

Bueno aquí termina esta entrega, espero que la disfruten y le sea igualmente útil… En la próxima haremos cosas mas interesantes aun…

Avanzando en el camino del aprendizaje

En la entrega anterior vimos como crear una ventana y como colocar un fondo a esta ventana… Ahora seguiremos con otro complemento muy importante

Antes de comenzar quiero aclarar algo que cuando estaba comenzando a escribir esta entrega me dijeron

¿Hasta que nivel piensas llegar en este curso?

Bueno, realmente planeo avanzarlo hasta tal punto que se llegue a el desarrollo de aplicaciones básicas

También otra pequeña cosa que alguien del foro me pregunto por correo

¿Cuál es la diferencia entre programar un juego por Python y hacerlo por C++?

La verdad, C++ tiene mas “Logros” en el mundo de los juegos, pero cabe destacar que python se usa en los juegos desde hace no mucho… Python es más facil y posee una sintaxis mas limpia, lo que permite desarrollar el juego con más facilidad, pero sin embargo C++ pone en tus manos una optimización impresionante…

Resumiendo, mi respuesta a esa pregunta es: Que los que se programan es C++ están hechos en C++ y que los que se programan en Python están hechos en Python, tan sencillo como eso…

Bien, ahora exploraremos ese complemento importante de los juegos que nombre atrás: Los Sonidos

¿Que seria de un juego sin sonido? ¿Sin efectos sonoras? ¿Sin música que haga el suspenso 3 segundos antes de que aparezca el tipo malo? Bueno creo que estoy exagerando xD

La reproducción de sonido se logra con el “Mixer”, este maneja la mayor parte de lo que se refiera a sonido… Antes de ver el código de ejemplo hay que decir que colocando la clásica linea “pygame.init()” no es iniciado este modulo, por eso debemos colocar “pygame.mixer.init()” ya que como dije en la primera entrega, en “pygame.init()” Intenta iniciar todos, pero no siempre lo logra, por eso sugiero siempre respaldar los modulos que importan iniciándolos de manera manual, bien, comenzamos:

Código
  1. import pygame
  2. from pygame.locals import*
  3. #Inciamos el "mixer"
  4. pygame.mixer.init()
  5. #Ahora cargamos el sonido
  6. pygame.mixer.music.load("rutadelarchivodesonido/nombre.extension")
  7. pygame.mixer.music.play()
  8. raw_input()
  9. pygame.exit()

Destacamos de igual manera que:

En caso de que nuestro sonido este en la misma ubicación donde nos encontramos nosotros, no es necesario especificar la ruta… De igual manera, si el sonido se encuentra en una ruta que nos incluye anteriormente (Ejemplo estamos en la carpeta CM y el sonido esta en Mis documentos/CM/sonidos/sonido.wav) solo debemos colocar el resto de la ruta (En este caso sonidos/sonido.wav)

Lectura del teclado


Que tal gente… Antes de todo pido disculpas por el retraso al colocar una nueva entrega, el motivo de esto es la falta de tiempo, ya que eh comenzado con las actividades escolares y carezco del tiempo necesario… Bueno en esta 4ta entrega pasaremos a la lectura del teclado… Esto se logra con la función “pygame.key.get_pressed()”… Bien, para mostrar como hacer coloco un simple código:

Código
  1. Import pygame
  2. from pygame.locals import*
  3. pygame.init()
  4. k = pygame.key.get_pressed()
  5. if k[K_SPACE] :
  6.   print “Pisaste la tecla espacio”
  7.   raw_input()
  8.   sys.exit()

Creo que es perfectamente entendible este código, pero de igual manera lo explicare

Importamos e iniciamos pygame

Citar
Import pygame
from pygame.locals import*
pygame.init()

Declaramos en la variable “k” la función “pygame.key.get_pressed()” que es la que se usara para asignar una evento a una tecla

Código
  1. k = pygame.key.get_pressed()

Definimos el inicio de función para la barra espaciadora…

Código
  1. if k[K_SPACE] :

Colocamos el resto de la función y salimos

Código
  1.   print “Pisaste la tecla espacio”
  2.   raw_input()
  3.   sys.exit()



NOTA: IRE EDITANDO CONTINUAMENTE


« Última modificación: 15 Diciembre 2008, 17:15 por CHECMATED » En línea

zZznewbiezZz

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Re: TUTORIAL DE PROGRAMACION DE JUEGOS CON PYTHON Y PYGAME
« Respuesta #1 en: 16 Noviembre 2010, 03:28 »

GRACIASSSS MUY BUENO jejej recien estoy empezando python y esto me ayuda bastante  ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D


En línea

Gabriela-

Desconectado Desconectado

Mensajes: 182


Ver Perfil
Re: TUTORIAL DE PROGRAMACION DE JUEGOS CON PYTHON Y PYGAME
« Respuesta #2 en: 16 Noviembre 2010, 12:56 »

Ole!!!!!!!!!!!!!!!!! por tu aporte. En este foro se aprende o se aprende ( para el que quiere, como el compañero que te responde antes, yo tmbien, voy en los primeros pasos, y todo tutorial se agradece.

Gabriela
En línea

seele

Desconectado Desconectado

Mensajes: 137


Ver Perfil
Re: TUTORIAL DE PROGRAMACION DE JUEGOS CON PYTHON Y PYGAME
« Respuesta #3 en: 16 Noviembre 2010, 15:23 »

muy buen tutorial Checmated ;)

esperamos ver pronto un juego por aqui

saludos
En línea

flony


Desconectado Desconectado

Mensajes: 563



Ver Perfil
Re: TUTORIAL DE PROGRAMACION DE JUEGOS CON PYTHON Y PYGAME
« Respuesta #4 en: 16 Noviembre 2010, 15:46 »

copiando se agradece
En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: TUTORIAL DE PROGRAMACION DE JUEGOS CON PYTHON Y PYGAME
« Respuesta #5 en: 16 Noviembre 2010, 18:41 »

Por favor.. el post es del 2008.
En línea

Gabriela-

Desconectado Desconectado

Mensajes: 182


Ver Perfil
Re: TUTORIAL DE PROGRAMACION DE JUEGOS CON PYTHON Y PYGAME
« Respuesta #6 en: 17 Noviembre 2010, 00:20 »

Cambia algo que sea del 2008? Es que si es así dilo, por favor.

Para los que estamos comenzando, que lo hayan traido a las fechas actuales resulta bueno, salvo que la antiguedad influya en algo negativo, errores, etc.

Gracias.

Gabriela.
En línea

flony


Desconectado Desconectado

Mensajes: 563



Ver Perfil
Re: TUTORIAL DE PROGRAMACION DE JUEGOS CON PYTHON Y PYGAME
« Respuesta #7 en: 17 Noviembre 2010, 01:19 »

gaby +1  ;-)
En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[python][pygame] Programa que realiza la grafica de funciones.
Scripting
braulio-- 6 7,943 Último mensaje 27 Junio 2011, 00:11
por zZznewbiezZz
[python] algún tutorial pygame?
Scripting
zZznewbiezZz 6 3,727 Último mensaje 4 Marzo 2012, 23:22
por UnboundDarkness
[python] menu pygame aporte
Scripting
daryo 0 1,449 Último mensaje 2 Mayo 2013, 02:45
por daryo
[DUDA]Funciona Pygame en Python 3.4.1
Scripting
Proxmond 3 1,470 Último mensaje 11 Julio 2014, 18:44
por Yidu
[Python-Pygame] Cruel Hangman 0.2
Scripting
BigBear 0 438 Último mensaje 19 Diciembre 2014, 15:02
por BigBear
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines