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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Lección 2]Taller de desarrollo de videojuegos con pygame.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Lección 2]Taller de desarrollo de videojuegos con pygame.  (Leído 7,976 veces)
braulio--
Wiki

Desconectado Desconectado

Mensajes: 896


Imagen recursiva


Ver Perfil WWW
[Lección 2]Taller de desarrollo de videojuegos con pygame.
« en: 3 Enero 2010, 14:26 pm »

Debido a que he visto que en el foro hay interés por python, he decidido que voy a hacer un pequeño taller sobre la librería para desarrollo de juegos pygame.
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.
Python viene preinstalado y para instalar pygame basta con bajarse el paquete de los repositorios.
Código:
# yum install pygame
[...]
$ sudo apt-get install pygame
[...]
# zypper install pygame
[...]
Depende de la distribución que uséis.
  • En windows
Python os lo podéis bajar de su web : (yo voy a usar la versión 2.6)
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)
A cada repetición que se hace de este esquema se le llama frame.
Empezando con pygame
Por el momento, para importar pygame haremos esto:
Código
  1. import pygame
  2.  
Creando la ventana y mostrando la primera imagen
Para crear la ventana se haría así:
Código
  1. import pygame
  2. ventana = pygame.display.set_mode((800,400))
  3. raw_input()
  4.  
Donde 800 y 400 son el tamaño de la ventana.
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
  1. import pygame
  2. ventana = pygame.display.set_mode((800,400))
  3. imagen = pygame.image.load('nombredeimagen')
  4. ventana.blit(imagen,(0,0))
  5. pygame.display.flip()
  6. raw_input()
  7.  
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.
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
  1. import pygame,time
  2. pantalla = pygame.display.set_mode((600,400)) # Crea la pantalla con esas dimensiones
  3. imagen = pygame.image.load('imagen.gif') # Carga la imagen
  4.  
  5. while 1:
  6. for i in range(400):
  7.  pantalla.blit(imagen,(i,i)) # Pone la imagen en las coordenadas que diga la variable
  8.  pygame.display.flip()
  9.  time.sleep(0.01)
  10. for i in range(400):
  11.  pantalla.blit(imagen,(400-i,400-i))
  12.  pygame.display.flip()
  13.  time.sleep(0.01)
  14.  
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.
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
  1. import pygame,time
  2. pantalla = pygame.display.set_mode((600,400)) # Crea la pantalla con esas dimensiones
  3. imagen = pygame.image.load('imagen.gif') # Carga la imagen
  4. fondo = pygame.Surface((600,400)) # Crea una imagen (Surface)
  5. fondo.fill([255,255,255]) # La rellena de color blanco (255,255,255esla representacion de rojo,amarillo y azul de la imagen)
  6. while 1:
  7. for i in range(400):
  8.  pantalla.blit(fondo,(0,0)) # Carga el fondo en la pantalla, tapando todo lo que hubiera antes
  9.  pantalla.blit(imagen,(i,i)) # Pone la imagen en las coordenadas que diga la variable i tapando esa parte del fondo
  10.  pygame.display.flip()
  11.  time.sleep(0.01)
  12. for i in range(400):
  13.  pantalla.blit(fondo,(0,0))
  14.  pantalla.blit(imagen,(400-i,400-i))
  15.  pygame.display.flip()
  16.  time.sleep(0.01)
  17.  
Y así se evita el problema.


« Última modificación: 5 Enero 2010, 14:30 pm por braulio23 » En línea

CaronteGold


Desconectado Desconectado

Mensajes: 339



Ver Perfil
Re: Taller de desarrollo de videojuegos con pygame.
« Respuesta #1 en: 4 Enero 2010, 02:21 am »



  Ya hice todo eso, está bien explicado  :P, ... una cosa, es normal que al cerrar la ventana de PyGame, en la X, se me trabe el PC¿?, se traba y tengo que cerrarlo con el "Administrador de Tareas".

  Saludos.


En línea

braulio--
Wiki

Desconectado Desconectado

Mensajes: 896


Imagen recursiva


Ver Perfil WWW
Re: Taller de desarrollo de videojuegos con pygame.
« Respuesta #2 en: 4 Enero 2010, 14:11 pm »

Es totalmente normal, pero lo que puedes hacer es irte a la ventana de la consola y darle a enter.
Creo que en un par de horas continuaré el curso.
En línea

Masita

Desconectado Desconectado

Mensajes: 120


pythoneando


Ver Perfil
Re: Taller de desarrollo de videojuegos con pygame.
« Respuesta #3 en: 4 Enero 2010, 16:50 pm »

Espero impacientementel. Muy buena idea lo del tutorial.  ;-)
En línea

En el cielo estan suspendidas las palabras que cantamos en nuestros sueños....
enritter

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Taller de desarrollo de videojuegos con pygame.
« Respuesta #4 en: 4 Enero 2010, 17:11 pm »

genial ;-)
En línea

braulio--
Wiki

Desconectado Desconectado

Mensajes: 896


Imagen recursiva


Ver Perfil WWW
Re: Taller de desarrollo de videojuegos con pygame.
« Respuesta #5 en: 4 Enero 2010, 19:09 pm »

Se ha puesto ya como mover las imágenes por la pantalla.
En línea

kyps

Desconectado Desconectado

Mensajes: 113



Ver Perfil
Re: [Lección 2]Taller de desarrollo de videojuegos con pygame.
« Respuesta #6 en: 5 Enero 2010, 15:45 pm »

Yo es que nose muxo de python pero como sabes las cordenadas para poner justamente hay la imagen?
En línea

Edad 15 Años,
--- Conocimientos ---
Carding 99%
Pharming 99%
Php 25%
Html & Css 45%
Python 65%
Visual Basic 5%
Batch 15%
Linux 55%
No esta Mal no?
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Lección 2]Taller de desarrollo de videojuegos con pygame.
« Respuesta #7 en: 5 Enero 2010, 15:54 pm »

Lo "calculas", es decir, tu mueves/colocas la imagen sobre un lienzo (ventana) que tu mismo has predefinido, así que la posición es en relación a dicho lienzo, y eso no es difícil de determinar.

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
CaronteGold


Desconectado Desconectado

Mensajes: 339



Ver Perfil
Re: [Lección 2]Taller de desarrollo de videojuegos con pygame.
« Respuesta #8 en: 5 Enero 2010, 16:11 pm »

Lo "calculas", es decir, tu mueves/colocas la imagen sobre un lienzo (ventana) que tu mismo has predefinido, así que la posición es en relación a dicho lienzo, y eso no es difícil de determinar.

Saludos


   Y esto no se podría hacer manualmente con alguna GUI ¿? , es decir mover las imágenes con el ratón.
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Lección 2]Taller de desarrollo de videojuegos con pygame.
« Respuesta #9 en: 5 Enero 2010, 16:20 pm »

No, pero eso es como en cualquier lenguaje, tu pones la imagen sobre la "pantalla", pero luego eres tu el que debe de poner la lógica a esos movimientos, los cuales reaccionan a eventos.

Por decir algo, ventana con imagen, se detecta que se presiona la flecha izquierda, que se hace? se mueve? y si hay otra imagen en su camino? hay colisión?, etc etc.

Eso si, con mucho trabajo se pueden conseguir buenos resultados ;D



:http://www.lazonakf.com/categoria/pygame

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines