簡體   English   中英

如何在我的 py 游戲的背景中播放音樂?

[英]How can I make music play in the background of my py game?

import random

time = 120

WIDTH = 800
HEIGHT = 500

background = Actor("background")
player = Actor("player")
enemy = Actor("enemy")
money = Actor("money", pos=(300, 300))
player2 = Actor("alien")
score = 0
player.x = 200
player.y = 200
player2.x = 400
player2.y = 400

def draw():
    screen.clear()
    background.draw()
    player.draw()
    enemy.draw()
    money.draw()
    player2.draw()
    screen.draw.text("YFF-Spill score:", (200, 0), color="white")
    score_string = str(score)
    screen.draw.text(score_string, (327, 0), color="red")
    time_string = str(round(time))
    screen.draw.text(time_string, (50, 0), color="black")


def update(delta):
    global score, time
    time = time - delta
    if time <= 0:
        exit()
    if keyboard.right:
        player.x = player.x + 4
    if keyboard.left:
        player.x = player.x - 4
    if keyboard.down:
        player.y = player.y + 4
    if keyboard.up:
        player.y = player.y - 4
    if player.x > WIDTH:
        player.x = WIDTH
    if player.x < 0:
        player.x = 0
    if player.y < 0:
        player.y = 0
    if player.y > HEIGHT:
        player.y = HEIGHT
    if keyboard.d:
        player2.x = player2.x + 4
    if keyboard.a:
        player2.x = player2.x - 4
    if keyboard.s:
        player2.y = player2.y + 4
    if keyboard.w:
        player2.y = player2.y - 4
    if player.colliderect(player2):
        exit()
    if player2.x > WIDTH:
        player2.x = WIDTH
    if player2.x < 0:
        player2.x = 0
    if player2.y < 0:
        player2.y = 0
    if player2.y > HEIGHT:
        player2.y = HEIGHT
    dx1, dy1 = player.x - enemy.x, player.y - enemy.y
    dx2, dy2 = player2.x - enemy.x, player2.y - enemy.y
    dist1sq = dx1 * dx1 + dy1 * dy1
    dist2sq = dx2 * dx2 + dy2 * dy2

    player_near = player if dist1sq < dist2sq else player2

    if enemy.x < player_near.x:
        enemy.x += 1
    if enemy.x > player_near.x:
        enemy.x -= 1
    if enemy.y < player_near.y:
        enemy.y += 1
    if enemy.y > player_near.y:
        enemy.y -= 1
    if player.colliderect(enemy):
        exit()
    if player2.colliderect(enemy):
        exit()
    if money.colliderect(player):
        money.x = random.randint(0, WIDTH)
        money.y = random.randint(0, HEIGHT)
        score = score + 1
    if money.colliderect(player2):
        money.x = random.randint(0, WIDTH)
        money.y = random.randint(0, HEIGHT)
        score += 1
    if keyboard.d:
        player2.x = player2.x + 4
    if keyboard.a:
        player2.x = player2.x - 4
    if keyboard.s:
        player2.y = player2.y + 4
    if keyboard.w:
        player2.y = player2.y - 4
    if player.colliderect(player2):
        exit()
    if player2.x > WIDTH:
        player2.x = WIDTH
    if player2.x < 0:
        player2.x = 0
    if player2.y < 0:
        player2.y = 0
    if player2.y > HEIGHT:
        player2.y = HEIGHT

這是我在 mu 編輯器中制作的 pygame,有 2 名玩家試圖躲避敵人並試圖收錢。 我想在我的 pygame 的后台添加一首歌,我該怎么做? 我試圖在 mu 編輯器的音樂文件夾中放置一個 mp3 文件,但我不確定要放入什么代碼才能使其在游戲中播放。

使用 PyGame 的混音器功能添加音樂非常容易。 使用一個頻道播放音樂,使用另一個頻道播放任何音效。 這些“混合”在一起。 一個“問題”是混音器不喜歡 MP3 文件,因此您需要將聲音轉換為 .OGG 或其他支持的格式(使用Audacity之類的格式)。 這是由於 MP3 格式受專利保護(是否已過期?)。

無論如何,所以想法是制作兩個pygame.mixer.Channel ,一個用於音樂,一個用於聲音。

pygame.mixer.init()

# create separate Channel objects for simultaneous playback
channel1 = pygame.mixer.Channel(0)        # argument must be int
channel2 = pygame.mixer.Channel(1)

# Load and play a continuously looping music
background_sound = pygame.mixer.Sound( 'background_music.ogg' )
channel1.play( background_sound, -1 )        # loop the music forever

所以現在背景音樂將在channel1上永遠循環播放。

要播放單獨的基於事件的聲音,請使用channel2

whack_sound = pygame.mixer.Sound( 'whack.ogg' )
bloop_sound = pygame.mixer.Sound( 'bloop-bloop.ogg' )

# In main loop
    [...]
    channel2.play( bloop_sound )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM