Pygame воспроизводит звук при нажатии на определенное место в графическом интерфейсе - PullRequest
0 голосов
/ 22 ноября 2011

Я любитель, очень неопытный программист. Я работал над арт-проектом, который я программирую, используя Pygame. Я столкнулся с препятствием, реклама не может понять, как сделать то, что мне нужно.

Мне нужно, чтобы он воспроизводил определенный звук при нажатии на определенное место в графическом интерфейсе. Например, при нажатии на красную кнопку проигрывается аудиофайл с надписью «красный»

Мне также нужно, чтобы он мог воспроизводить звуки, щелкая и перетаскивая часть холста.

Надеюсь, это достаточно подробно. Спасибо за помощь!

the GUI is the gif image

import pygame, sys, time, random
from pygame.locals import *

# set up pygame
pygame.init()
pygame.mixer.init

pygame.mixer.get_init
bgimg="GUIsmall.gif"
inst="instructionssm.gif"
white=(255,255,255)

screen=pygame.display.set_mode((800,600), pygame.RESIZABLE)
screen.fill(white)

bg=pygame.image.load(bgimg)
instrimg=pygame.image.load(inst)

screen.blit(bg, (0,0))

pygame.display.flip()

red=pygame.mixer.Sound("red.mp3")

while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            raise SystemExit
        elif event.type==pygame.MOUSEBUTTONDOWN:
            red.play(0,0,0)

1 Ответ

1 голос
/ 22 ноября 2011

Я думаю, у вас должна быть кнопка класса и набор кнопок:

class Button:

    __init__(self, name, position, image_file, sound_file):
         self.name = name
         self.image = pygame.image.load(image_file)
         self.sound = pygame.mixer.Sound(sound_file)
         self.position = position

         self.rect = pygame.Rect(position, self.image.get_size())

buttons = []
buttons.add( Button("red", (0,0), "red.png", "red.mp3") )
...

Тогда вы можете использовать его в основном цикле:

while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            raise SystemExit
        elif event.type==pygame.MOUSEBUTTONDOWN:
            for b in buttons:
                 if b.rect.collidepoint(event.pos):
                      b.sound.play()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...