Menu
CoddyTech

Volume Suara

Termasuk bagian Suara dan Sensasi Bermain dalam perjalanan Pygame di Coddy. Pelajaran 3 dari 23.

Setiap Sound memiliki volumenya sendiri, dari 0.0 (senyap) hingga 1.0 (sekeras suara dalam file). Sound baru dimulai pada 1.0. Ubah volumenya dengan set_volume():

step_sound.set_volume(0.3)

Gunakan ini untuk menyeimbangkan game. Suara langkah kaki yang terus diputar sebaiknya pelan, sedangkan ledakan yang jarang terjadi bisa keras. Nilai di atas 1.0 dihitung sebagai 1.0, jadi set_volume(5) memutar suara dengan volume penuh, bukan lima kali lebih keras.

Layar pengaturan sering menampilkan volume dari 0 hingga 10 agar lebih mudah dibaca. Bagi dengan 10 untuk mendapatkan nilai Sound:

volume = 5
click_sound.set_volume(volume / 10)

Sound mempertahankan volumenya sampai kamu mengaturnya lagi. Saat pemain mengubah volume, panggil set_volume() lagi, atau Sound akan diputar pada tingkat volume sebelumnya. get_volume() memberi tahu tingkat volume Sound saat ini.

challenge icon

Tantangan

Mudah

Tombol Atas dan Bawah mengubah volume dari 0 menjadi 10, dan Spasi memutar bunyi klik agar kamu bisa mendengarnya. Buat bunyi klik mengikuti pengaturannya:

  1. Setelah volume = 5, panggil click_sound.set_volume(volume / 10).
  2. Panggil lagi setiap kali tombol Atas atau Bawah mengubah volume.

Coba sendiri

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

Semua pelajaran di Suara dan Sensasi Bermain

Latihan sendiri: Playground Pygame