> For the complete documentation index, see [llms.txt](https://pygame.gitbook.io/razrabotchiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://pygame.gitbook.io/razrabotchiki/teoriya/muzyka-i-zvuki/primer-so-zvukom.md).

# пример со звуком

#### Пример: Воспроизведение звука по нажатию на кнопку

Давайте создадим простой пример на Pygame, в котором по нажатию на кнопку воспроизводится звук. В этом примере мы будем использовать Pygame для создания окна с кнопкой и воспроизведения звукового файла.

**Шаги:**

1. Создадим окно с кнопкой.
2. Загрузим звуковой файл.
3. По нажатию на кнопку будем воспроизводить звук.

**Необходимые файлы:**

* Звуковой файл (например, `фанфары.mp3`). Пример можно скачать [здесь](https://drive.google.com/file/d/11LSb9bFUJfa-QHikYTnTvLCz6ZRHDK72/view?usp=sharing)

**Код:**

```python
import pygame
import sys
from pygame.locals import QUIT, MOUSEBUTTONDOWN

# Инициализация Pygame
pygame.init()

# Установка размера окна
WINDOW_WIDTH = 400
WINDOW_HEIGHT = 300
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption('Sound Button Example')

# Определение цветов
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GRAY = (200, 200, 200)

# Загрузка звукового файла
sound = pygame.mixer.Sound('фанфары.mp3')  # или путь к файлу r'путь_к_файлу/фанфары.mp3'


class Button:
    """
    Класс, представляющий кнопку в Pygame.

    Атрибуты:
    rect (pygame.Rect): Прямоугольник, определяющий размеры и положение кнопки.
    text (str): Текст, отображаемый на кнопке.
    color (tuple): Цвет кнопки.
    hover_color (tuple): Цвет кнопки при наведении курсора.
    action (function, optional): Функция, выполняемая при нажатии на кнопку.
    """

    def __init__(self, x, y, width, height, text, color, hover_color, action=None):
        """
        Инициализирует кнопку с заданными координатами, размерами, текстом и цветами.

        Параметры:
        x (int): Координата X верхнего левого угла кнопки.
        y (int): Координата Y верхнего левого угла кнопки.
        width (int): Ширина кнопки.
        height (int): Высота кнопки.
        text (str): Текст на кнопке.
        color (tuple): Цвет кнопки.
        hover_color (tuple): Цвет кнопки при наведении.
        action (function, optional): Функция, выполняемая при нажатии на кнопку.
        """
        self.rect = pygame.Rect(x, y, width, height)
        self.text = text
        self.color = color
        self.hover_color = hover_color
        self.action = action

    def draw(self, surface):
        """
        Отрисовывает кнопку на заданной поверхности. Меняет цвет кнопки при наведении курсора.

        Параметры:
        surface (pygame.Surface): Поверхность, на которой будет отрисована кнопка.
        """
        # Получение позиции мыши
        mouse_pos = pygame.mouse.get_pos()

        # Проверка, находится ли курсор мыши над кнопкой
        if self.rect.collidepoint(mouse_pos):
            pygame.draw.rect(surface, self.hover_color, self.rect)
        else:
            pygame.draw.rect(surface, self.color, self.rect)

        # Отображение текста на кнопке
        font = pygame.font.SysFont(None, 36)
        text_surf = font.render(self.text, True, BLACK)
        text_rect = text_surf.get_rect(center=self.rect.center)
        surface.blit(text_surf, text_rect)

    def check_click(self, event):
        # если кнопка мыши была нажата и была нажата именно кнопка в окне
        if event.type == MOUSEBUTTONDOWN and self.rect.collidepoint(event.pos):
            if self.action:
                self.action()


# Функция для воспроизведения звука
def play_sound():
    sound.play()


# Создание кнопки
button = Button(WINDOW_WIDTH//2-100, WINDOW_HEIGHT//2-25, 200, 50, 'Play Sound', GRAY, WHITE, play_sound)

# Игровой цикл
while True:
    window.fill(WHITE)
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        button.check_click(event) # передаем все события, которые происходят в окне

    button.draw(window)
    pygame.display.update()
```

Этот код создает окно с кнопкой, при нажатии на которую воспроизводится звук. Убедитесь, что звуковой файл `фанфары.mp3` находится в той же директории, что и скрипт.
