Ses Düzeyi
Coddy'nin Pygame Journey'sinin Ses ve Oyun Hissi bölümünün bir parçası. Ders 3 / 23.
Her Sound'un 0.0 (sessiz) ile 1.0 (dosyanın sesi kadar yüksek) arasında kendi ses düzeyi vardır. Yeni bir Sound, 1.0 düzeyinde başlar. set_volume() ile değiştir:
step_sound.set_volume(0.3)Bunu bir oyundaki sesleri dengelemek için kullan. Sürekli çalan bir ayak sesi kısık olmalı; nadir duyulan bir patlama ise yüksek olabilir. 1.0'ın üzerindeki bir değer 1.0 olarak kabul edilir; yani set_volume(5), sesi beş kat daha yüksek değil, tam ses düzeyinde çalar.
Bir ayarlar ekranında ses düzeyi genellikle 0 ile 10 arasında gösterilir; bu, ekranda daha anlaşılır görünür. Sound'un değerini elde etmek için 10'a böl:
volume = 5
click_sound.set_volume(volume / 10)Sound'un ses düzeyi, sen yeniden ayarlayana kadar aynı kalır. Oyuncu volume değerini değiştirdiğinde set_volume() işlevini yeniden çağır; aksi takdirde Sound eski düzeyde çalar. get_volume(), Sound'un mevcut ses düzeyini bildirir.
Görev
KolayYukarı ve Aşağı tuşları volume değerini 0'dan 10'a değiştirir ve Boşluk tuşu tıklama sesini çalar, böylece duyabilirsin. Tıklama sesini ayara göre değiştir:
volume = 5satırından sonraclick_sound.set_volume(volume / 10)çağrısını yap.- Yukarı veya Aşağı tuşu
volumedeğerini her değiştirdiğinde bu çağrıyı tekrarla.
Kendin dene
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()
Ses ve Oyun Hissi bölümündeki tüm dersler
4Ekran Sarsıntısı ve Darbe Parlaması
Ekran SarsıntısıDarbe ParlamasıDarbe DurdurmasıAbartıdan Kaçının6Yıldız Devriyesini Geliştir
Yıldız Devriyesi SesleriHer Vuruşta KıvılcımlarKendi başına pratik yap: Pygame playground