Programación con Pygame I

Post on 13-Jun-2015

7.745 views 21 download

description

Conceptos básicos de Pygame

Transcript of Programación con Pygame I

PYGAME (I)Conceptos Básicos

¿Qué es Pygame?

¿Qué es Pygame?

Una librería que permite trabajar con imágenes y sonido...

¿Qué es Pygame?

Una librería que permite trabajar con imágenes y sonido...

¡Abierta y gratuita!

¿Qué es Pygame?

Una librería que permite trabajar con imágenes y sonido...

¡Abierta y gratuita!

¡Animadas!

¿Qué es Pygame?

Una librería que permite trabajar con imágenes y sonido...

¡Abierta y gratuita!

¡Animadas!

... que gestiona su interacción...

¿Qué es Pygame?

Una librería que permite trabajar con imágenes y sonido...

¡Abierta y gratuita!

¡Animadas!

... que gestiona su interacción...Sprites

¿Qué es Pygame?

Una librería que permite trabajar con imágenes y sonido...

¡Abierta y gratuita!

¡Animadas!

... que gestiona su interacción...Sprites

... y que controla el Hardware.

¿Qué es Pygame?

Una librería que permite trabajar con imágenes y sonido...

¡Abierta y gratuita!

¡Animadas!

... que gestiona su interacción...Sprites

... y que controla el Hardware.

Buclede

Eventos

Esquema General

Esquema General

Importación

Esquema General

Importación

Inicialización

Esquema General

Importación

Inicialización

Ejecución

Importación

Importación

import pygamefrom pygame.locals import *import sys

Importación

import pygamefrom pygame.locals import *import sys

El módulo sys es importante para trabajar correctamente con el sistema operativo.

En particularsys.exit( )

Importación

import pygamefrom pygame.locals import *import sys

El módulo sys es importante para trabajar correctamente con el sistema operativo.

En particularsys.exit( )

Contiene variables y constantes muy útiles

Inicialización

Inicialización

pygame.init( )

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

display.set_mode( ) crea la superficie de visualización.

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

display.set_mode( ) crea la superficie de visualización.

Tamaño de la superficie

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

display.set_mode( ) crea la superficie de visualización.

Tamaño de la superficie

Opciones

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

display.set_mode( ) crea la superficie de visualización.

Tamaño de la superficie

Opciones

Profundidad de color

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

visor contiene un objeto Surface que puede ser una ventana o la pantalla completa.

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

visor contiene un objeto Surface que puede ser una ventana o la pantalla completa.

¡Aquí es donde se mostrarán las

animaciones!

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

Opciones

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

FULLSCREEN Pantalla completa.

Opciones

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

FULLSCREEN Pantalla completa.

Opciones

RESIZABLE Tamaño variable.

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

FULLSCREEN Pantalla completa.

Opciones

RESIZABLE Tamaño variable.

NOFRAME Sin bordes ni título.

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

FULLSCREEN Pantalla completa.

Opciones

RESIZABLE Tamaño variable.

NOFRAME Sin bordes ni título.

OPENGL Para 3D.

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

FULLSCREEN Pantalla completa.

Opciones

RESIZABLE Tamaño variable.

NOFRAME Sin bordes ni título.

OPENGL Para 3D.

DOUBLEBUF Doble bufer.

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

FULLSCREEN Pantalla completa.

Opciones

RESIZABLE Tamaño variable.

NOFRAME Sin bordes ni título.

OPENGL Para 3D.

DOUBLEBUF Doble bufer.

HWSURFACE Acelerada por Hardware.

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

FULLSCREEN Pantalla completa.

Opciones

RESIZABLE Tamaño variable.

NOFRAME Sin bordes ni título.

OPENGL Para 3D.

DOUBLEBUF Doble bufer.

HWSURFACE Acelerada por Hardware.

Puedo poner varias con | de separador

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

Profundidad de color (en bits)

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

Profundidad de color (en bits)

8 256 colores.

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

Profundidad de color (en bits)

8 256 colores. 15 32 768 colores con transparencia.

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

Profundidad de color (en bits)

8 256 colores. 15 32 768 colores con transparencia.

16 65 536 colores.

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

Profundidad de color (en bits)

8 256 colores. 15 32 768 colores con transparencia.

16 65 536 colores. 24 16.7 millones de colores.

Inicialización

pygame.init( )visor = pygame.display.set_mode((640, 480), 0, 32)

Profundidad de color (en bits)

8 256 colores. 15 32 768 colores con transparencia.

16 65 536 colores. 24 16.7 millones de colores.

32 16.7 millones de colores con transparencia.

Ejecución

Ejecución

Mostrar imágenes y sonido

Ejecución

Mostrar imágenes y sonido

Responder a las acciones del jugador

Ejecución

Mostrar imágenes y sonido

Responder a las acciones del jugador

Detectar las incidencias en el juego

Ejecución

Mostrar imágenes y sonido

Responder a las acciones del jugador

Detectar las incidencias en el juego

Y debo hacerlo una y otra vez, continuamente, durante todo el juego.

Ejecución

Mostrar imágenes y sonido

Responder a las acciones del jugador

Detectar las incidencias en el juego

Y debo hacerlo una y otra vez, continuamente, durante todo el juego.

FPSFotogramas por Segundo

Buclede

Eventos

Bucle de Eventos

Todo lo que ocurre durante el juego debe estar aquí.

Bucle de Eventoswhile True: ... for event in pygame.event.get( ): ... if event.type == QUIT: pygame.quit( ) sys.exit( )

Todo lo que ocurre durante el juego debe estar aquí.

Bucle de Eventoswhile True: ... for event in pygame.event.get( ): ... if event.type == QUIT: pygame.quit( ) sys.exit( )

Todo lo que ocurre durante el juego debe estar aquí.

Mirar la lista de eventos

Bucle de Eventoswhile True: ... for event in pygame.event.get( ): ... if event.type == QUIT: pygame.quit( ) sys.exit( )

Todo lo que ocurre durante el juego debe estar aquí.

Mirar la lista de eventos

Responder al tipo de evento

Bucle de Eventoswhile True: ... for event in pygame.event.get( ): ... if event.type == QUIT: pygame.quit( ) sys.exit( )

Todo lo que ocurre durante el juego debe estar aquí.

Mirar la lista de eventos

Responder al tipo de evento from pygame.locals import *

while True: ... for event in pygame.event.get( ): ... if event.type == QUIT: pygame.quit( ) sys.exit( )

while True: ... for event in pygame.event.get( ): ... if event.type == QUIT: pygame.quit( ) sys.exit( )

Haz sin parar: ... Mira cada evento pendiente: ... Si el tipo de evento es salir: sal de pygame sal del programa

Observa lo que se está haciendo...

while True: ... for event in pygame.event.get( ): ... if event.type == QUIT: pygame.quit( ) sys.exit( )

Haz sin parar: ... Mira cada evento pendiente: ... Si el tipo de evento es salir: sal de pygame sal del programa

Observa lo que se está haciendo...

Aquí se pondrán el resto de los

procesos...

while True: ... for event in pygame.event.get( ): ... if event.type == QUIT: pygame.quit( ) sys.exit( )

Haz sin parar: ... Mira cada evento pendiente: ... Si el tipo de evento es salir: sal de pygame sal del programa

Observa lo que se está haciendo...

Aquí se pondrán el resto de los

procesos...

... y eventos.

Dibujado en Pantalla

Dibujado en PantallaPara evitar artefactos se dibuja offscreen y luego se vuelca todo en pantalla.

Dibujado en PantallaPara evitar artefactos se dibuja offscreen y luego se vuelca todo en pantalla.

Usando el métodovisor.blit( )

Dibujado en PantallaPara evitar artefactos se dibuja offscreen y luego se vuelca todo en pantalla.

Usando el métodovisor.blit( )

Usando el métodopygame.display.update( )

Dibujado en PantallaPara evitar artefactos se dibuja offscreen y luego se vuelca todo en pantalla.

Usando el métodovisor.blit( )

Usando el métodopygame.display.update( )

FrameFotograma

Dibujado en PantallaPara evitar artefactos se dibuja offscreen y luego se vuelca todo en pantalla.

Usando el métodovisor.blit( )

Usando el métodopygame.display.update( )

FrameFotograma

¡Muchos fotogramas

producen una

animación...

... si son diferentes!

En realidad hay más métodos para dibujar offscreen...

En realidad hay más métodos para dibujar offscreen...

blit( ) para imágenes.

En realidad hay más métodos para dibujar offscreen...

blit( ) para imágenes.

draw.line( ) líneas

En realidad hay más métodos para dibujar offscreen...

blit( ) para imágenes.

draw.line( ) líneas

draw.circle( ) círculos

En realidad hay más métodos para dibujar offscreen...

blit( ) para imágenes.

draw.line( ) líneas

draw.circle( ) círculos

draw.ellipse( ) elipses

En realidad hay más métodos para dibujar offscreen...

blit( ) para imágenes.

draw.line( ) líneas

draw.circle( ) círculos

draw.ellipse( ) elipses

draw.rect( ) rectángulos

En realidad hay más métodos para dibujar offscreen...

blit( ) para imágenes.

draw.line( ) líneas

draw.circle( ) círculos

draw.ellipse( ) elipses...

draw.rect( ) rectángulos

En realidad hay más métodos para dibujar offscreen...

blit( ) para imágenes.

draw.line( ) líneas

draw.circle( ) círculos

draw.ellipse( ) elipses

Consulta la documentación.

...

draw.rect( ) rectángulos

¿Cómo defino Colores y Posiciones?

¿Cómo defino Colores y Posiciones?

Colores con tuplas RGB.

colorVerde = (0,255,0)r g b

¿Cómo defino Colores y Posiciones?

Colores con tuplas RGB.

Posiciones con tuplas 2D.

colorVerde = (0,255,0)

punto = (223,327)

r g b

x y

¿Cómo defino Colores y Posiciones?

Colores con tuplas RGB.

Posiciones con tuplas 2D.

Y zonas con tuplas RECT.

colorVerde = (0,255,0)

punto = (223,327)

zona = (0,0,300,200)

r g b

x y

¿Y cómo dibujar Texto ?

¿Y cómo dibujar Texto ?

Primero, definimos el tipo de letra.

¿Y cómo dibujar Texto ?

Primero, definimos el tipo de letra.

Segundo, generamos el texto.

¿Y cómo dibujar Texto ?

Primero, definimos el tipo de letra.

Segundo, generamos el texto.

Y tercero, lo dibujamos offscreen.

¿Y cómo dibujar Texto ?

Primero, definimos el tipo de letra.

Segundo, generamos el texto.

Y tercero, lo dibujamos offscreen.

tipoLetra = pygame.font.SysFont(‘arial’, 48)

¿Y cómo dibujar Texto ?

Primero, definimos el tipo de letra.

Segundo, generamos el texto.

Y tercero, lo dibujamos offscreen.

tipoLetra = pygame.font.SysFont(‘arial’, 48)

texto = tipoLetra.render('Hola', True, color1, color2)

¿Y cómo dibujar Texto ?

Primero, definimos el tipo de letra.

Segundo, generamos el texto.

Y tercero, lo dibujamos offscreen.

tipoLetra = pygame.font.SysFont(‘arial’, 48)

texto = tipoLetra.render('Hola', True, color1, color2)

de texto de fondoSuavizar

¿Y cómo dibujar Texto ?

Primero, definimos el tipo de letra.

Segundo, generamos el texto.

Y tercero, lo dibujamos offscreen.

tipoLetra = pygame.font.SysFont(‘arial’, 48)

texto = tipoLetra.render('Hola', True, color1, color2)

visor.blit(texto, textRect)

de texto de fondoSuavizar

¿Y cómo dibujar Texto ?

Primero, definimos el tipo de letra.

Segundo, generamos el texto.

Y tercero, lo dibujamos offscreen.

tipoLetra = pygame.font.SysFont(‘arial’, 48)

texto = tipoLetra.render('Hola', True, color1, color2)

visor.blit(texto, textRect)

de texto de fondoSuavizar

lugar

¡Todo es un objeto!

¡Todo es un objeto!Siempre podemos acceder a sus propiedades o usar sus métodos.

¡Todo es un objeto!Siempre podemos acceder a sus propiedades o usar sus métodos.

xCentro = visor.get_rect( ).centerx

¡Todo es un objeto!Siempre podemos acceder a sus propiedades o usar sus métodos.

xCentro = visor.get_rect( ).centerx

visor.fill((0,0,0))

¡Todo es un objeto!Siempre podemos acceder a sus propiedades o usar sus métodos.

xCentro = visor.get_rect( ).centerx

visor.fill((0,0,0))

Consulta la Documentación.

¿Preguntas?