14
Introducion a: Introducion a: Por: Ricardo Daniel Quiroga Email: [email protected] Web: http://www.l2radamanthys.tk Disclaimed:Perdón por si encuentran un error ortografico :P, Al menos espero que les guste la charla.

Intro pygamev2

Embed Size (px)

Citation preview

Page 1: Intro pygamev2

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.

Page 2: Intro pygamev2

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

Page 3: Intro pygamev2

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.

Page 4: Intro pygamev2

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...

Page 5: Intro pygamev2

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

Page 6: Intro pygamev2

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

Page 7: Intro pygamev2

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.

Page 8: Intro pygamev2

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:

Page 9: Intro pygamev2

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.

Page 10: Intro pygamev2

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.

Page 11: Intro pygamev2

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))...

Page 12: Intro pygamev2

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

Page 13: Intro pygamev2

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??

Page 14: Intro pygamev2

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...