Menu
CoddyTech

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.

challenge icon

Görev

Kolay

Madeni para oyununa arka plan müziği ekle. Döngüden önce:

  1. assets/music/level.ogg dosyasını pygame.mixer.music.load() ile yükle.
  2. Müziğin ses düzeyini 0.6 olarak ayarla.
  3. 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

Kendi başına pratik yap: Pygame playground