Post on 13-Jun-2015
description
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?