- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
Entrada destacada
- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
Cargar imágenes
Para cargar una imagen usamos pygame.image.load("ruta"), el parámetro ruta va entre paréntesis y puede ser una ruta relativa o absoluta. En nuestro caso, como usamos 3 imágenes usamos un arreglo para almacenar las imágenes ya cargadas para después poder renderizarlas.def cargarImages(): img = [] img.append(pygame.image.load("images/giraffe.png")) img.append(pygame.image.load("images/hippo.png"))img.append(pygame.image.load("images/parrot.png"))
Para poder mostrar una imagen en la escena usamos pantalla.blit(imagen, pos), donde pantalla es un objeto pygame.display. Como usamos un arreglo de imágenes para poder dibujarlas usamos un for.
for img in imagenes: picture = pygame.transform.scale(img, [30, 30]) pantalla.blit(picture, [10, 10])
Con pygame.transform.scale podemos modificar el tamaño de las imágenes en nuestro caso a 30x30 pixeles y después la dibujamos en la posición (10,10). Podemos dibujar las imágenes sin escalarlas.
Cargar sonidos
Para cargar sonidos usamos pygame.mixer.load("ruta") y para reproducir el sonido usamos audio.play().def cargarSonidos(): sounds = [] sounds.append(pygame.mixer.Sound('sound/boop.wav')) sounds.append(pygame.mixer.Sound('sound/fire.wav')) sounds.append(pygame.mixer.Sound('sound/laser4.wav')) return sounds sonidos = cargarSonidos() sonidos[0].play()
Código fuente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | import pygame FONDO = (30, 155, 255) ROJO = (232, 47, 28) def colisiono(mouse, objeto): if (mouse[0] > objeto[0] and mouse[0] < objeto[0] + objeto[2]) and (mouse[1] > objeto[1] and mouse[1] < objeto[1] + objeto[3]): return True return False def reproducirSonido(audio): audio.play() def buscarPulsado(posMouse, listaRects): for cuadro in listaRects: if(colisiono(posMouse, cuadro[1] + cuadro[2])): reproducirSonido(cuadro[3]) def cargarImages(): img = [] img.append(pygame.image.load("images/giraffe.png")) img.append(pygame.image.load("images/hippo.png")) img.append(pygame.image.load("images/parrot.png")) return img def cargarSonidos(): sounds = [] sounds.append(pygame.mixer.Sound('sound/boop.wav')) sounds.append(pygame.mixer.Sound('sound/fire.wav')) sounds.append(pygame.mixer.Sound('sound/laser4.wav')) return sounds pygame.init() dimensiones = [400, 300] pantalla = pygame.display.set_mode(dimensiones) pygame.display.set_caption(" Click Play Sound") imgs = cargarImages() sounds = cargarSonidos() listaRects = [ [imgs[0],[20, 20], [80, 80], sounds[0]], [imgs[1],[125, 50], [100, 100], sounds[1]], [imgs[2], [230, 150], [120, 120], sounds[2]] ] game_over = False reloj = pygame.time.Clock() while not game_over: for evento in pygame.event.get(): if evento.type == pygame.QUIT: game_over = True if evento.type == pygame.MOUSEBUTTONDOWN : pos = pygame.mouse.get_pos() buscarPulsado(pos, listaRects) pantalla.fill(FONDO) for cuadro in listaRects: picture = pygame.transform.scale(cuadro[0], cuadro[2]) pantalla.blit(picture, cuadro[1]) pygame.display.flip() reloj.tick(10) pygame.quit() |
def colisiono(mouse, objeto): if (mouse[0] > objeto[0] and mouse[0] < objeto[0] + objeto[2]) and (mouse[1] > objeto[1] and mouse[1] < objeto[1] + objeto[3]): return True return False
La función colisiono recibe como los parámetros mouse (posición del cursor del ratón) y objeto que son la posición y medidas del objeto de la pantalla. Con la función colisiono se determina si el puntero del ratón está dentro del área de un objeto con forma rectangular, si la condición se cumple se devuelve verdadero.
def reproducirSonido(audio): audio.play()
La función reproducirSonido reproduce el audio que corresponde al objeto que ha sido pulsado, el parámetro que recibe es un audio previamente cargado.
def buscarPulsado(posMouse, listaRects): for cuadro in listaRects: if(colisiono(posMouse, cuadro[1] + cuadro[2])): reproducirSonido(cuadro[3])
Para buscar dentro del arreglo de objetos cual ha sido pulsado usamos la función buscarPulsado la cual usa como parámetros las posiciones del ratón y la lista de rectángulos, y usando un for recorremos la lista dentro del bucle buscando con la función colisiono si el puntero del ratón está dentro del rectángulo en cuestión, si colisiono nos devuelve verdadero reproducimos el audio del objeto, el cual está almacenado en el 4to indice de la lista que representa a cada objeto.
pygame.init() dimensiones = [400, 300] pantalla = pygame.display.set_mode(dimensiones) pygame.display.set_caption(" Click Play Sound") imgs = cargarImages() sounds = cargarSonidos() listaRects = [ [imgs[0],[20, 20], [80, 80], sounds[0]], [imgs[1],[125, 50], [100, 100], sounds[1]], [imgs[2], [230, 150], [120, 120], sounds[2]] ] game_over = False reloj = pygame.time.Clock()
Continuando con el código hacemos las configuraciones generales para la pantalla y llamamos a las funciones que cargan las imágenes y los sonidos. Después creamos la lista de rectángulos, los rectángulos a su vez están representados como una lista de atributos, su imagen, sus posiciones en (x,y), sus medidas y su audio. Las dos lineas finales son la variable que controla la terminación del programa y el reloj que nos ayuda a controlar los frames por segundo.
while not game_over: for evento in pygame.event.get(): if evento.type == pygame.QUIT: game_over = True if evento.type == pygame.MOUSEBUTTONDOWN : pos = pygame.mouse.get_pos() buscarPulsado(pos, listaRects) pantalla.fill(FONDO) for cuadro in listaRects: picture = pygame.transform.scale(cuadro[0], cuadro[2]) pantalla.blit(picture, cuadro[1]) pygame.display.flip() reloj.tick(10) pygame.quit()
Después de limpiar el fondo de la pantalla con el color de fondo predefinido, se dibujan los rectángulos con la ayuda de un for.
Recursos.
Imágenes y sonidos en las paginas de los autores:
https://kenney.nl/assets/animal-pac
https://opengameart.org/
Archivos fuente del proyecto.
Repositorio del proyecto
Comenta tus dudas en la sección de comentarios.
- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
Comentarios
Publicar un comentario