Menu
CoddyTech

مستوى الصوت

جزء من قسم الصوت وإحساس اللعب في رحلة Pygame على Coddy. الدرس 3 من 23.

لكل صوت مستوى صوت خاص به، من 0.0 (صامت) إلى 1.0 (بأعلى مستوى صوت للملف). يبدأ الصوت الجديد عند 1.0. غيّره باستخدام set_volume():

step_sound.set_volume(0.3)

استخدم ذلك لموازنة أصوات اللعبة. ينبغي أن تكون خطوات الأقدام التي تتكرر باستمرار هادئة؛ أما الانفجار النادر فيمكن أن يكون مرتفع الصوت. تُعامل القيمة التي تتجاوز 1.0 على أنها 1.0، لذا فإن set_volume(5) يشغّل الصوت بأقصى مستوى، وليس أعلى بخمسة أضعاف.

تعرض شاشة الإعدادات غالبًا مستوى الصوت من 0 إلى 10، إذ يسهل قراءة ذلك على الشاشة. اقسم على 10 للحصول على قيمة الصوت:

volume = 5
click_sound.set_volume(volume / 10)

يحتفظ الصوت بمستوى صوته حتى تضبطه مرة أخرى. عندما يغيّر اللاعب volume، استدعِ set_volume() مجددًا، وإلا فسيُشغّل الصوت بالمستوى القديم. تخبرك get_volume() بمستوى صوت ما حاليًا.

challenge icon

التحدي

سهل

يزيد مفتاحا Up وDown مستوى volume أو يخفضانه من 0 إلى 10، ويشغّل مفتاح Space صوت النقر لتتمكن من سماعه. اجعل صوت النقر يتبع الإعداد:

  1. بعد volume = 5، استدعِ click_sound.set_volume(volume / 10).
  2. استدعِه مجددًا في كل مرة يغيّر فيها مفتاح Up أو Down قيمة volume.

جرّب بنفسك

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Volume")
clock = pygame.time.Clock()
font = pygame.font.Font(None, 32)

click_sound = pygame.mixer.Sound("assets/sounds/click.ogg")
volume = 5

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP and volume < 10:
                volume += 1
            elif event.key == pygame.K_DOWN and volume > 0:
                volume -= 1
            elif event.key == pygame.K_SPACE:
                click_sound.play()

    screen.fill((30, 30, 46))
    label = font.render(f"Volume: {volume}", True, (240, 240, 240))
    screen.blit(label, (40, 120))
    for i in range(10):
        color = (90, 200, 120) if i < volume else (60, 60, 80)
        pygame.draw.rect(screen, color, (40 + i * 40, 170, 32, 40))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

جميع دروس الصوت وإحساس اللعب

تدرّب بنفسك: Playground لـ Pygame