Upload
ricardo-daniel-quiroga
View
680
Download
1
Tags:
Embed Size (px)
Citation preview
Introducion a:Introducion a:
Por: Ricardo Daniel QuirogaEmail: [email protected]: http://www.l2radamanthys.tk
Disclaimed:Perdón por si encuentran un error ortografico :P, Al menos espero que les guste la charla.
Que se vera en esta Charla?
Que es PyGame?
En que se usa PyGame?
Distribución de Módulos en PyGame
Instalando PyGame
Importando e inicializando PyGame
Procesando eventos del teclado
La Clase Rect (Rectángulo)
Cargando y Dibujando Imágenes en Pantalla
Moviendo Imágenes
Sprites
Temporizador
Que es Pygame?
Pygame es una Libreria Multimedia Basada en SDL(Simple DirectMedia Layer) que nos ofrece una interfaz de acceso al los recursos de la maquina (gestionar el manejode imagenes, sonidos, gestion de ventana, dispositivos tales como el teclado, joistick, mouse, temporizadores, colciones.. etc.) independientemente del Sistema Operativo. La misma Fue creada por Peter Shinners.
En que usar PyGame?
Como su nombre lo dice principalmente programacion de Juegos.
Realizar Prueabas Cientificas (Principalmente el campo de la fisica.)
Y cualquier idea loca que pase por nuestra mente...
Distribución de Módulos en PyGame
Cdrom, Cursors, Display, Draw, Event, Font, Image, Joystick, Key, Music, Mouse, Movie, Mixer, Overlay, Pixelarray, Rect, Sndarray, Sprite, Surface, Surfarray, Time,Transform
De todos los módulos anteriormenteDe todos los módulos anteriormente vistos los mas útiles o vistos los mas útiles o los que mas comúnmente usaremos son:los que mas comúnmente usaremos son:
Display, Event, Joystick, Image, Key, Mouse,Rect, Sprite, Surface, Time
mas info: http://www.pygame.org/docs
Instalando PyGame
Primero antes que nada para instalar PyGame se requiere tener instalada alguna version de Python :P, a la fecha la ultima versión de PyGame es la 1.8.1.
En GNU\Linux (Distribucion Debian)
En MS. Win
Nota: PyGame funciona ademas tambien en S.O. Mac OS, Solaris, FreeBSD, OlePC, Celulares Nokia S60 y cualquier cosa a la que se le pueda instalar Python.
Descargar desde la pagina de PyGame la versión de PyGame compatible con su versión de Python y ejecute el instalador.
>> sudo apt-cache update>> sudo apt-get install python-pygame
En la consola ejecute:
Codigo FuenteDescargue el paquete precompilado desde la pagina el paquete, descomprima el mismo y en la consola ejecute la siguiente instrucion:
>> python setup.py install
Iniciando PyGame
001 import pygame002 from pygame.locals import *003004 pygame.init()005 screen = pygame.display.set_mode((320,240))006 pygame.display.set_caption(“Hola Mundo”)
Aprarecera una ventana como esta.
Procesando eventos del teclado
teclas = pygame.key.get_pressed()
if teclas[K_a]:# hacer algo si se preciona la# tecla Aprint “Presionaste la tecla \'a\'“
...
Capturando eventos del teclado
K_a, K_b, ... K_zK_1,....K_9K_LEFT, K_RIGHT, K_UP, K_DOWN, K_SPACE, K_INTRO...NUM_1,...,NUM_9...
nota: estos identificadores otros mas se encuentran en pygame.locals, de ahí la importancia de importar este modulo por aparte.
Algunas Teclas:
La Clase Rect (Rectángulo)
Distintas formas de crear un objeto tipo Rect
pygame.Rect(left, top, width, height): return Rectpygame.Rect((left, top), (width, height)): return Rectpygame.Rect(object): return Rectimage.get_rect() return rect
Atributos de la clase rect
top, left, bottom, right, topleft,
bottomleft, topright, bottomright,
midtop, midleft, midbottom, midright,
center, centerx, centery, size, width, height,
x, y, w, h h
PyGame utiliza los objetos Rect para cargar y manipular áreas rectangulares, un objeto Rect puede crearse a partir de su posición izquierda superior (x,y) y su ancho y alto (width, height), también puede crearse con objetos de Python que sean rectángulos o tengan un atributo rect.
Cargando y Dibujando Imágenes en Pantalla
pygame.image.load(filename): return Surface pygame.image.save(Surface, filename): return None una_imagen.get_rect() return Rect surface.blit(source, dest, area=None, special_flags = 0) surface.fill(color) surface.get_at(x, y) return (r,g,b,a) surface.set_at(x, y, color) return None
Transparencia surface.set_colorkey(un_color)
surface.convert()
Algunas operaciones con imagenes
PyGame soporta los formatos BMP, BMP, PCX, TGA, JPG, JPEG, GIF(sin animacion), PNG. Pero si se desea se puede ampliar la cantidad de formatos de imagenes soportados usando PyGame junto a la librería PIL.
Moviendo Imágenes
Para posicionar un objeto sobre la pantalla, necesitamos decirle a la función Blit donde poner la imagen. En pygame siempre pasamos las coordenadas como pares (x, y). Esto representa el número de pixels a la derecha, y el número de pixels hacia abajo, desde un punto situado en la esquina superior izquierda de la pantalla.
y
x
(0,0)
(10,10)
pantalla
A
imagen
B
actual (5,10) Destino (35,10) actual (35,10)
...
img = pygame.image.load(“teke.png”)x,y = 5,10 # cordenadas # A (x=5,y=10)
screen.blit(img,(x,y)) pygame.display.flip()#movemos la imagenx = x + 30 #B (x=35,y=10)screen.blit(img,(x,y))...
Sprite
Un sprite es cualquier objeto que aparece en nuestro juego aunque normalmente nos referimos a las imágenes de los personajes, los sprites pueden ser estáticos (los tiles del mapa) o dinámicos (un personaje de nuestro juego). Normalmente un sprite trae consigo un conjunto de atributos los mas comunes, imagen y posición en pantalla.
Pygame nos proporciona una clase (que se llama??? Adivinen..Sprites) para el manejo de grupos de sprites. La misma sirve para agrupar todos los atributos relacionados con el personaje
Class MiPersonaje(Sprite):
def __init__(self):
self.image = pygame.image.load(‘personaje.bmp’)
self.rect = self.image.get_rect()
....
def update(self):
# definir el comportamiento de mi personaje
self.rect.x += 3
...
imagerect
Sprite
update(argv*)
diagrama
Temporizador
No todos tenemos la misma PC (algunos tienen una Súper-maquina, otros una con velocidad razonable, y algunos por contrariedad tenemos un Dinosaurio en casa :P) y bien a que viene esto, es que si no controlamos la velocidad del juego notaremos que el juego corre demasiado rápido en las primera y algo lento en las ultimas por lo que se hace necesario encontrar una forma para que el juego corra a la misma velocidad en casi todas la PC.
reloj = pygame.time.Clock()
...
loop = True
#bucle principal del juego
While loop:clock.tick(cuadros_por_segundo)
...
pygame.time.wait(milliseconds)
pygame.time.Clock(): return Clock
Clock.tick(framerate=0): return milliseconds
Entonces como controlamos la velocidad del Juego??
Preguntas sobre esta primera parte?
Agunos Sitios Web de Interes
http://www.pygame.org/docs
http://www.python.org
http://www.pyar.org.ar
http://www.losersjuegos.org.ar
Falta la parte de armar el Juego...