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, ומקש הרווח משמיע את הצליל כדי שתוכלו לשמוע אותו. התאימו את הצליל להגדרה:

  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()

כל השיעורים ביחידה צליל ותחושת משחק

תרגלו בעצמכם: Pygame אונליין