在 Pygame 遊戲開發中,背景音樂和文字顯示是提升遊戲體驗的關鍵要素。本文將詳細說明如何在 Pygame 中實作這兩個功能。首先,使用 pygame.font.Font() 載入字型,接著利用 render() 方法將文字渲染成 Surface 物件,最後使用 blit() 方法將文字繪製到螢幕上。背景音樂則透過 pygame.mixer.music 模組,使用 load() 載入音樂檔案,再以 play() 方法播放,並可設定迴圈播放。以下程式碼範例整合了文字顯示和背景音樂播放功能,並包含詳細的程式碼註解,方便讀者理解和應用。

import pygame
from pygame import mixer

pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("copyassignment")

isRunning = True
player = pygame.image.load('athlete.png')

# 載入聲音檔案
mixer.music.load('sound.wav')
# 迴圈播放聲音
mixer.music.play(-1)

text = "copyassignment"
font = pygame.font.Font('freesansbold.ttf', 24)
textX = 10
textY = 10
textImage = font.render(text, True, (255, 255, 255))

playerX = 375
playerY = 500
Xchange = 0
Ychange = 0

while isRunning:
    screen.fill((167, 145, 55))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            isRunning = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                Ychange -= 0.5
            if event.key == pygame.K_DOWN:
                Ychange += 0.5
            if event.key == pygame.K_LEFT:
                Xchange -= 0.5
            if event.key == pygame.K_RIGHT:
                Xchange += 0.5
        if event.type == pygame.KEYUP:
            Ychange = 0
            Xchange = 0

    if playerX + Xchange > 775 or playerY + Ychange > 565 or playerX + Xchange < 0 or playerY + Ychange < 0:
        playerY += 0
        playerX += 0
    else:
        playerY += Ychange
        playerX += Xchange

    screen.blit(textImage, (textX, textY))
    screen.blit(player, (playerX, playerY))
    pygame.display.update()

在Pygame中新增背景音樂與文字

在前面的章節中,我們已經學習瞭如何在Pygame中新增圖片和基本的遊戲機制。現在,我們將進一步學習如何新增背景音樂和文字到我們的Pygame專案中。

新增文字到Pygame視窗

在Pygame中新增文字與新增圖片的方式不同。要新增文字,我們需要指定所使用的字型、文字的位置,然後將文字渲染成圖片,最後再將其繪製到視窗上。

首先,我們需要在遊戲迴圈之前宣告包含文字內容以及其X和Y座標的變數:

text = "CopyAssignment"
textX = 10
textY = 10

接下來,我們需要使用Pygame提供的font模組來指定字型。Font()方法用於從指定的檔案名稱或Python檔案物件載入新的字型。

font = pygame.font.Font('font.ttf', 32)

Font()方法的語法如下:

Font(filename, size) -> Font
Font(object, size) -> Font

載入字型後,我們可以使用render()方法將文字渲染成新的Surface物件。

text_surface = font.render(text, True, (255, 255, 255))

最後,我們可以在遊戲迴圈中將渲染好的文字Surface物件繪製到視窗上。

screen.blit(text_surface, (textX, textY))

程式碼範例

以下是一個完整的範例程式碼,展示瞭如何在Pygame視窗中新增文字:

import pygame

pygame.init()

screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Copy Assignment")

icon = pygame.image.load("task.png")
pygame.display.set_icon(icon)

isRunning = True

background = pygame.image.load("planet.png")
player = pygame.image.load('player.jpg')

playerx = 100
playery = 150

text = "CopyAssignment"
textX = 10
textY = 10

font = pygame.font.Font(None, 32)

while isRunning:
    screen.blit(background, (0, 0))
    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            isRunning = False
    
    screen.blit(player, (playerx, playery))
    
    text_surface = font.render(text, True, (255, 255, 255))
    screen.blit(text_surface, (textX, textY))
    
    pygame.display.update()

內容解密:

  1. 初始化Pygame和設定視窗:首先初始化Pygame並設定視窗的大小和標題。
  2. 載入資源:載入背景圖片、玩家圖片和圖示。
  3. 設定文字屬性:定義文字內容、位置和字型。
  4. 遊戲迴圈:在遊戲迴圈中,繪製背景、玩家圖片和文字。
  5. 更新視窗:使用pygame.display.update()更新視窗內容。

新增背景音樂

要新增背景音樂,可以使用Pygame的mixer模組。首先,需要初始化mixer模組。

pygame.mixer.init()

然後,可以使用music.load()方法載入音樂檔案,並使用music.play()方法播放音樂。

pygame.mixer.music.load('background_music.mp3')
pygame.mixer.music.play(-1)  # -1 表示迴圈播放

程式碼範例(包含背景音樂)

以下是一個完整的範例程式碼,展示瞭如何在Pygame專案中新增背景音樂:

import pygame

pygame.init()
pygame.mixer.init()

screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Copy Assignment")

icon = pygame.image.load("task.png")
pygame.display.set_icon(icon)

isRunning = True

background = pygame.image.load("planet.png")
player = pygame.image.load('player.jpg')

playerx = 100
playery = 150

text = "CopyAssignment"
textX = 10
textY = 10

font = pygame.font.Font(None, 32)

pygame.mixer.music.load('background_music.mp3')
pygame.mixer.music.play(-1)

while isRunning:
    screen.blit(background, (0, 0))
    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            isRunning = False
    
    screen.blit(player, (playerx, playery))
    
    text_surface = font.render(text, True, (255, 255, 255))
    screen.blit(text_surface, (textX, textY))
    
    pygame.display.update()

內容解密:

  1. 初始化Pygame和mixer模組:初始化Pygame和mixer模組以支援音樂播放。
  2. 載入和播放背景音樂:使用mixer.music.load()載入音樂檔案,並使用mixer.music.play()播放音樂。
  3. 其他部分與前面的範例相同

在Pygame中新增文字與聲音

載入字型與渲染文字

在Pygame中新增文字需要先載入字型,然後使用render()方法將文字渲染到畫面上。以下是具體步驟:

  1. 載入字型:使用pygame.font.Font()方法載入字型檔。

    font = pygame.font.Font('freesansbold.ttf', 24)
    

    在這個例子中,我們使用了Pygame內建的字型freesansbold.ttf,大小為24。

  2. 渲染文字:使用font.render()方法將文字渲染到一個新的Surface上。

    textImage = font.render(text, True, (255, 255, 255))
    

    render()方法接受四個引數:要渲染的文字、是否開啟抗鋸齒、文字顏色和背景顏色(可選)。在這個例子中,我們渲染了變數text中的文字,開啟了抗鋸齒,文字顏色為白色。

  3. 將文字畫到螢幕上:使用screen.blit()方法將渲染好的文字Surface畫到螢幕上。

    screen.blit(textImage, (textX, textY))
    

    在這個例子中,我們將文字畫在了座標(textX, textY)的位置。

內容解密:

  1. pygame.font.Font('freesansbold.ttf', 24):載入Pygame內建的字型,大小為24。
  2. font.render(text, True, (255, 255, 255)):將指定的文字渲染成白色圖片,開啟抗鋸齒功能。
  3. screen.blit(textImage, (textX, textY)):將渲染好的文字圖片畫到螢幕的指定位置。

新增聲音

在Pygame中新增聲音可以使用pygame.mixer.music模組。以下是具體步驟:

  1. 載入聲音檔案:使用mixer.music.load()方法載入聲音檔案。

    mixer.music.load('sound.wav')
    

    在這個例子中,我們載入了名為sound.wav的聲音檔案。

  2. 播放聲音:使用mixer.music.play()方法播放載入的聲音。

    mixer.music.play(-1)
    

    -1表示迴圈播放聲音。

內容解密:

  1. mixer.music.load('sound.wav'):載入指定的聲音檔案。
  2. mixer.music.play(-1):迴圈播放載入的聲音檔案。

程式碼範例

以下是完整的程式碼範例,展示瞭如何在Pygame中新增文字和聲音:

import pygame
from pygame import mixer

pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("copyassignment")

isRunning = True
player = pygame.image.load('athlete.png')

# 載入聲音檔案
mixer.music.load('sound.wav')
# 迴圈播放聲音
mixer.music.play(-1)

text = "copyassignment"
font = pygame.font.Font('freesansbold.ttf', 24)
textX = 10
textY = 10
textImage = font.render(text, True, (255, 255, 255))

playerX = 375
playerY = 500
Xchange = 0
Ychange = 0

while isRunning:
    screen.fill((167, 145, 55))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            isRunning = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                Ychange -= 0.5
            if event.key == pygame.K_DOWN:
                Ychange += 0.5
            if event.key == pygame.K_LEFT:
                Xchange -= 0.5
            if event.key == pygame.K_RIGHT:
                Xchange += 0.5
        if event.type == pygame.KEYUP:
            Ychange = 0
            Xchange = 0

    if playerX + Xchange > 775 or playerY + Ychange > 565 or playerX + Xchange < 0 or playerY + Ychange < 0:
        playerY += 0
        playerX += 0
    else:
        playerY += Ychange
        playerX += Xchange

    screen.blit(textImage, (textX, textY))
    screen.blit(player, (playerX, playerY))
    pygame.display.update()

圖表翻譯:

此範例程式展示瞭如何使用Pygame進行遊戲開發,包括如何新增文字和聲音。透過載入字型和渲染文字,可以在遊戲視窗中顯示自訂的文字。同時,利用pygame.mixer.music模組,可以為遊戲新增背景音樂或其他音效,提升遊戲的沉浸感。