Arka Plan Müziği
Coddy'nin Pygame Journey'sinin Ses ve Oyun Hissi bölümünün bir parçası. Ders 5 / 23.
Müzik, bir ses efektinden farklıdır. Uzundur, döngüye girer ve aynı anda yalnızca bir parça çalar. pygame'in bunun için ayrı bir oynatıcısı vardır: pygame.mixer.music. Bir Sound gibi dosyanın tamamını yüklemek yerine, çalarken dosyayı parça parça okur.
pygame.mixer.music.load("assets/music/level.ogg")
pygame.mixer.music.set_volume(0.6)
pygame.mixer.music.play(-1)load() parçayı seçer. play() çalmayı başlatır; parantez içindeki sayı, parçanın kaç kez daha tekrarlanacağını belirtir. Arka plan müziği için gereken, play(-1) ile parçanın sonsuza kadar tekrarlanmasıdır. play() veya play(0) parçayı bir kez çalar.
Müziği döngüden önce bir kez başlat. Döngü içinde çağrılırsa play(), parçayı her karede baştan başlatır. Müziğin kendi ses düzeyi vardır; bu düzey, 0.0 ile 1.0 arasında bir değer alan pygame.mixer.music.set_volume() ile ayarlanır. Efektlerden biraz daha kısık müzik, efektlerin öne çıkmasını sağlar.
Ses efektleri müziğin üzerine çalmaya devam eder: madeni para sesiyle parça birlikte duyulur.
Görev
KolayMadeni para oyununa arka plan müziği ekle. Döngüden önce:
assets/music/level.oggdosyasınıpygame.mixer.music.load()ile yükle.- Müziğin ses düzeyini
0.6olarak ayarla. - Döngüye girmesi için
play(-1)ile başlat.
Kendin dene
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Coins")
clock = pygame.time.Clock()
font = pygame.font.Font(None, 32)
coin_sound = pygame.mixer.Sound("assets/sounds/coin.ogg")
player = pygame.Rect(220, 160, 40, 40)
coin = pygame.Rect(100, 100, 16, 16)
score = 0
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
player.x -= 5
if keys[pygame.K_RIGHT]:
player.x += 5
if keys[pygame.K_UP]:
player.y -= 5
if keys[pygame.K_DOWN]:
player.y += 5
player.clamp_ip(screen.get_rect())
if player.colliderect(coin):
score += 1
coin_sound.play()
coin.x = random.randint(20, 444)
coin.y = random.randint(50, 324)
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (255, 210, 60), coin)
pygame.draw.rect(screen, (90, 200, 120), player)
score_text = font.render(f"Coins: {score}", True, (240, 240, 240))
screen.blit(score_text, (10, 10))
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