Menu
CoddyTech

Tải âm thanh

Thuộc phần Âm thanh và cảm giác chơi trong hành trình Pygame của Coddy. Bài học 1 trên 23.

pygame phát các âm thanh ngắn qua pygame.mixer.Sound. Truyền đường dẫn đến tệp âm thanh để tạo một đối tượng Sound:

jump_sound = pygame.mixer.Sound("assets/sounds/jump.ogg")

pygame.init() khởi động bộ trộn âm thanh, vì vậy hãy tạo các Sound sau khi gọi hàm này. Tạo mỗi Sound một lần, trước vòng lặp. Việc tải sẽ đọc tệp từ ổ đĩa; nếu đặt trong vòng lặp, chương trình sẽ đọc tệp 60 lần mỗi giây.

Đến lúc phát âm thanh, hãy gọi play():

jump_sound.play()

play() bắt đầu phát âm thanh rồi trả về ngay. Trò chơi vẫn tiếp tục chạy trong khi bạn nghe âm thanh, và cùng một Sound có thể phát lại trước khi âm thanh kết thúc.

Thư mục assets/sounds/ chứa các âm thanh bạn có thể dùng: nhảy, xu, tăng sức mạnh, tia laser, vụ nổ, va chạm và nhiều âm thanh khác, tất cả đều là tệp .ogg. Mở thẻ Assets bên cạnh trò chơi để nghe thử.

challenge icon

Thử thách

Dễ

Phát âm thanh khi hình vuông màu xanh lá nhảy.

  1. Trước vòng lặp, tải assets/sounds/jump.ogg vào jump_sound.
  2. Gọi jump_sound.play() tại nơi bắt đầu cú nhảy, bên cạnh speed_y = -14.

Nhấn Chơi rồi nhấn phím cách: bạn sẽ nghe thấy âm thanh khi nhảy. Sau đó, nhấn Kiểm tra.

Tự làm thử

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Jump")
clock = pygame.time.Clock()

player = pygame.Rect(220, 280, 40, 40)
speed_y = 0

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_SPACE and player.bottom == 320:
                speed_y = -14

    speed_y += 1
    player.y += speed_y
    if player.bottom > 320:
        player.bottom = 320
        speed_y = 0

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (80, 80, 100), (0, 320, 480, 40))
    pygame.draw.rect(screen, (90, 200, 120), player)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Tất cả bài học trong Âm thanh và cảm giác chơi

Tự luyện tập: Playground Pygame