PYGAME

PYGAME Por: Luis Morocho Contenido: INSTALACIÓN MARCO TEÓRICO EJEMPLO EJERCICIO Instalación para windows • Utilic

Views 57 Downloads 9 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

PYGAME Por: Luis Morocho

Contenido:

INSTALACIÓN MARCO TEÓRICO

EJEMPLO EJERCICIO

Instalación para windows •

Utilice python 3.7.7 o superior, porque es mucho más amigable, y además se ejecuta más rápido.



La mejor manera de instalar pygame es con la herramienta pip (que es lo que Python utiliza para instalar paquetes).

pip install pygame •

Usamos la marca --user para indicarle que se instale en el directorio principal, en lugar de globalmente.

py -m pip install -U pygame --user



Para ver si funciona, ejecute uno de los ejemplos incluidos:

py -m pygame.examples.aliens •

Si obtiene 'PermissionError: [WinError 5] Se deniega el acceso', antes de iniciar el símbolo del sistema, haga clic con el botón derecho y "Ejecutar como administrador".

(pygame, 2020)

Es un conjunto de módulos del lenguaje Python que permite la creación de videojuegos en dos dimensiones de una manera sencilla. Esta orientado al manejo de sprites. (Wikipedia, 2020)

Marco teórico

Además, es un marco que permite una fácil manipulación de elementos comunes del juego como: • Fondos • Sprites • Acciones y Movimientos

¿Que es pygame?

• Sonidos y Música

• Manejo de eventos Sprite: Es una imagen bidimensional que forma parte de una escena grafica aun mayor. Habitualmente es cierto tipo de objeto que interactúa, por ejemplo, un coche, una rana etc. (Vincent Craven, 2017)

Servicios principales

Visualización

Rect

Superficie

Sprite

Mezclador

Grupo

Pygame

Visualización(Display) Visualización es lo que se ve y la llamada real para mostrar la imagen en la pantalla • Init Inicializa las variables de visualización • Flip Reemplaza la pantalla actual por el búfer de pantalla apagado

Superficies(Surface)

• Surface es uno de los servicios principales con los que interactúas cuando usas pygame. • Surface se utiliza para representar una imagen o combinación de imágenes en la pantalla

Sprite

• Sprite también se utiliza a menudo en el desarrollo de juegos para representar a los actores • Es una clase base para representar objetos de juego • Viene con un gran conjunto de métodos incorporados que se encargan de las interacciones comunes con el entorno del juego

Grupo(Group) • Group es una clase contenedora para sprites. • Es muy útil para manipular grandes conjuntos de sprites • Definirá comportamientos más específicos para grupos de sprites

Rect

• Rect es la representación de nivel inferior de objetos como sprites. • Define y controla áreas específicas en las pantallas

Mezclador(Mixer) • Mixer es la forma en que el programador implementa efectos de sonido y música dentro del juego. • Tiene todos los métodos utilizados para controlar los sonidos en el juego.

Pygame

• Pygame básicamente sólo se utiliza para el método Init() que inicializa todos los módulos pygame importados. • También es capaz de manejar errores.

Conceptos principales

• Pygame es el paquete de nivel superior que es roto por varios submódulos que realizan los diversos servicios • Rect y Surface son ejemplos de clases que crean estos submódulos

• Hay varias clases como Display e Image y Font que crean submódulos de los submódulos de nivel inferior como Rect y Surface

• Ejemplo de construcción de un juego usando el framework Pygame (Stout, Meador, Seeland, & Robinson, 2020)

Descripción general de los módulos de Pygame

cdrom

Reproducción

cursors

cargar imágenes del cursor, incluye cursores estándar

display

controlar la ventana de visualización o la pantalla

draw

dibujar formas simples en una superficie

event

gestionar los eventos y la cola de eventos

font

crear y renderizar fuentes TrueType

image

guardar y cargar imágenes

joystick

gestionar dispositivos joystick

key

gestionar el teclado

mouse

gestionar el ratón

sndarray

manipular sonidos con numpy

surfarray

manipular imágenes con numpy

time

tiempo de control

transform

escalar, rotar y voltear imágenes

Ejemplo: Realizar un programa usando pygame que muestre una pelota en movimiento y que rebote en los perímetros de la pantalla. Primera parte •

Esta sección cuenta con los siguientes pasos



Importamos la librería



Inicializamos el motor del juego



Creamos una ventana de 800x600



Colocamos la etiqueta “Juego BALL” a la ventana



Capturamos los eventos

Todos los juegos tienen normalmente la misma estructura, es decir, un juego es un bucle infinito dónde se van obteniendo los eventos, que pueden ser las pulsaciones de teclas o las pulsaciones y movimientos del ratón, y según el evento que se vaya produciendo se va a provocar una operación u otra. En esta primera versión del juego el único evento que vamos a recoger es el evento QUIT, que es el evento que se produce cuando le damos al botón cerrar de la ventana. En ese caso terminaría el bucle y terminaría el programa.

import sys, pygame # Inicializamos pygame pygame.init() # Muestro una ventana de 800x600 size = 800, 600 screen = pygame.display.set_mode(size) # Cambio el título de la ventana pygame.display.set_caption("Juego BALL") # Comenzamos el bucle del juego run=True while run: # Capturamos los eventos que se han producido for event in pygame.event.get(): # Si el evento es salir de la ventana, terminamos if event.type == pygame.QUIT: run = False # Salgo de pygame pygame.quit()

Segunda parte: •

Después de crear la ventana inicializamos una serie de variables, anchura, altura y velocidad. Velocidad es una lista, porque es el número de coordenadas X e Y que se va a mover nuestro objeto.



Definimos un color



Creamos un objeto “ball” a partir de una imagen que tenemos de una pelota



Vamos a obtener el rectángulo de la imagen, que nos va a servir para mover la imagen o para ver si la imagen colisiona con algún elemento de la ventana



Dentro del bucle hemos añadido un delay y así esperar 2 milisegundos, para que la velocidad con la que se va a mover la pelota no sea muy rápida



Capturamos los eventos, como en la versión anterior, pero en esta ocasión vamos a mover la bola a la velocidad que hemos indicado



Además, vamos a comprobar si la pelota, el rectángulo, toca uno de los laterales de la ventana, entonces cambiamos la dirección de movimiento de la coordenada X o la dirección de movimiento de la coordenada Y.



Por último, actualizamos la ventana, para que se vea cómo la pelota se mueve alrededor de la ventana.



Si cambiamos el valor del delay a 1 la pelota se mueve más rápidamente.



(Domingo Muñoz, 2019)

import sys, pygame # Inicializamos pygame pygame.init() # Muestro una ventana de 800x600 size = 800, 600 screen = pygame.display.set_mode(size) # Cambio el título de la ventana pygame.display.set_caption("Juego BALL") # Inicializamos variables width, height = 800, 600 speed = [1, 1] white = 255, 255, 255 # Crea un objeto imagen y obtengo su rectángulo ball = pygame.image.load("ball.png") ballrect = ball.get_rect() # Comenzamos el bucle del juego run=True while run: # Espero un tiempo (milisegundos) para que la pelota no vaya muy rápida pygame.time.delay(2) # Capturamos los eventos que se han producido for event in pygame.event.get(): #Si el evento es salir de la ventana, terminamos if event.type == pygame.QUIT: run = False # Muevo la pelota ballrect = ballrect.move(speed) if ballrect.left < 0 or ballrect.right > width: speed[0] = -speed[0] if ballrect.top < 0 or ballrect.bottom > height: speed[1] = -speed[1] #Pinto el fondo de blanco, dibujo la pelota y actualizo la pantalla screen.fill(white) screen.blit(ball, ballrect) pygame.display.flip() # Salgo de pygame pygame.quit()

Ejercicio: Agregar un bate al programa anterior para que rebote la pelota

En este ejercicio deberá añadir lo siguiente: • Crear el bate desde una imagen # Crea un objeto imagen bate y obtengo su rectángulo bate = pygame.image.load("bate.png") baterect = bate.get_rect() # Pongo el bate en el centro de la pantalla baterect.move_ip(400, 260) •

Capturamos las pulsaciones de las teclas, en este caso, las pulsaciones de la tecla arriba o la tecla abajo, y eso permitira mover el bate hacia arriba o hacia abajo. # Compruebo si se ha pulsado alguna tecla keys = pygame.key.get_pressed() if keys[pygame.K_UP]: baterect=baterect.move(0, -1) if keys[pygame.K_DOWN]: baterect=baterect.move(0, 1)

• Comprobar si el bate colisiona con la pelota, y lo hace, cambiar el eje X de la pelota para que rebote. # Compruebo si hay colisión if baterect.colliderect(ballrect): speed[0] = - speed[0] •

Al ejecutar el programa se debe poder mover el bate con las teclas de arriba y abajo, y si tocamos la pelota con el bate va a rebotar. # Dibujo bate screen.blit(bate, baterect)

Bibliografía • Domingo Muñoz, J. (4 de Febrero de 2019). Cómo hacer un juego con PYGAME en 10 minutos. Obtenido de https://openwebinars.net/blog/como-hacer-un-juego-con-pygame-en-10-minutos/ • pygame. (1 de Enero de 2020). Pygame Installation. Obtenido de https://www.pygame.org/wiki/GettingStarted#Pygame%20Installation • Stout, R., Meador, J., Seeland, M., & Robinson, P. (1 de Enero de 2020). Pygame Framework. Obtenido de https://www.cs.colorado.edu/~kena/classes/6448/f08/framework_presentations/pygame.pdf • Vincent Craven, P. (1 de Enero de 2017). Programar Juegos Arcade con Python y Pygame. Obtenido de http://programarcadegames.com/index.php?chapter=introduction_to_sprites&lang=es • Wikipedia. (9 de Abril de 2020). Pygame. Obtenido de https://es.wikipedia.org/wiki/Pygame