Wilfredo Meneses
Profesor universitario
Es una colección de imágenes que se reproducen secuencialmente (usualmente 24 frames (imágenes) por segundo)
Unos 90 minutos de filmación 129,600 imágenes
(90 min son 5400 segundos * 24)
La única diferencia con las películas es cómo las imágenes son creadas
Generadas por computadoras
Filmadas
Dibujadas a mano
Funcionan de la misma forma que las filmaciones. Se crean muchas imágenes por segundo, aunque tratando de tener unos 30 frames por segundos (entre más mejor)
La diferencia es que cada imagen no es estática, sino que es generada dinámicamente.
Ciclo
Muestra gráficos y reproduce sonidos
Obtiene entradas (teclado, mouse, control, etc.)
Verificar colisiones
Provee algunas herramientas como (manipulación de imágenes, timers, mostrar texto )
pip install pygameEs la imagen que el usuario ve al final de cada ciclo del juego..
Solo hay un display surface. Una imagen fuera del mismo simplemente no se mostrará
La lógica completa del juego estará en torno al game loop (ciclo del juego)
Para agregar una imagen se necesita una superficie, hay dos: display surface el cual solo hay uno y siempre se muestra al usuario y surface que es básicamente uno por imagen y es ilimitado su número, será visible si está en el display surface.
Las superficies pueden ser creadas de tres maneras:
Para ubicarlo
surface_display.blit(surface, posición)
donde posición son pares de (x, y)
pygame incluye muchas opciones predeterminadas de colores.
También se puede especificar un color rgb en una tupla
(red, green, blue)
(0-255, 0-255, 0-255)
Origen (0, 0)
Eje Y
Eje X
+ y mueve hacia abajo
+x mueve a la derecha
posición (x, y)
200
5ms -> while
1000 ms
5 ms
= 200
El juego correrá de forma inconsistente en diferentes sistemas
Una solución es limitar la cantidad de frames
Hacen más fácil y preciso la ubicación de superficies
Son utilizados para colisiones
Son utilizados para dibujo
Posición en un solo eje
Posición en doble eje
Debe crearse la interfaz y un rectángulo: por ejemplo la superficie almacena una imagen y el rectángulo almacena la posición y el movimiento.
display_surface.blit(surface, pos or rect)
Sólo se mueve el rectángulo
Soporte diferentes dispositivos: mouse, teclado, pantalla táctil y controles.
Se puede acceder a las entradas desde el ciclo de eventos o fuera de él, este último es el más común.
Surface
Imágenes individuales (nave, fondo)
Puede haber un número ilimitado
rect
Se usan para ubicación y colisiones
Puede haber un número ilimitado
rect puede ser usado para dibujar formas
pygame.draw
ellipse
Surface puede ser transformado (escalar o voltear)
pygame.transform.scale
flip
Delta time mide cuánto tiempo toma crear un marco (frame)
Por ejemplo, si un framerate es de 60 fps, delta time es 1s/60 = 0.0167
Apróx. 17 milisegundos
Esta información es importante para mantener la velocidad a pesar del framerate.
Esencialmente multiplicamos cualquier movimiento con el delta time.
Con el conteo delta, el juego corre a la misma velocidad en cualquier framerate
Problema - rect se mueven con enteros y delta time mueve con flotantes
pygame toma el tiempo desde que inicia la aplicación pygame.init()
Nosotros podemos crear nuestro temporizador
Funciona parecido al laser con la diferencia que se mueve hacia abajo. Aparecen de forma aleatoria.
Se requiere un temporizador para la aparición de los asteroides.
pygame permite detectar si dos rectángulos se superponen
Es posible detectar que tan cerca están dos rectángulos.
También permite controlar las colisiones por píxel
Se importa el archivo de sonido
Usamos un método para reproducir el sonido
También podemos reproducir el sonido de forma cíclica
By Wilfredo Meneses