مستوى الصوت
جزء من قسم الصوت وإحساس اللعب في رحلة 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() بمستوى صوت ما حاليًا.
التحدي
سهليزيد مفتاحا Up وDown مستوى volume أو يخفضانه من 0 إلى 10، ويشغّل مفتاح Space صوت النقر لتتمكن من سماعه. اجعل صوت النقر يتبع الإعداد:
- بعد
volume = 5، استدعِclick_sound.set_volume(volume / 10). - استدعِه مجددًا في كل مرة يغيّر فيها مفتاح 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