在 Pygame 中建立滾動背景


Pygame 是一個流行的 Python 庫,用於構建遊戲和多媒體應用程式。遊戲開發最重要的方面之一是能夠建立滾動背景。在本文中,我們將介紹在 Pygame 中建立滾動背景的基本步驟。我們還將提供現實世界的示例和程式碼片段,以幫助您更好地理解這些概念。

其他也可用於 Python 遊戲開發的庫 -

  • Arcade - Arcade 是一個現代、易於使用的庫,用於建立 2D 街機風格的遊戲。它旨在易於學習和使用,並提供一系列功能,包括圖形、聲音和輸入處理。

  • PyOpenGL - PyOpenGL 是 OpenGL 3D 圖形庫的 Python 包裝器。它提供了一系列用於建立 3D 遊戲的功能,包括圖形、照明和紋理對映。

  • Panda3D - Panda3D 是一個遊戲引擎和圖形框架,提供了一系列用於建立 3D 遊戲的功能。它旨在易於使用,並支援一系列平臺,包括 Windows、Mac 和 Linux。

  • Pyglet - Pyglet 是一個跨平臺遊戲庫,提供了一系列用於建立 2D 和 3D 遊戲的功能。它旨在快速高效,並提供了一系列用於處理圖形、聲音和輸入的工具。

這些庫的優勢可能因您的特定需求而異。使用這些庫的一些優勢可能包括 -

  • 易用性 - 許多這些庫都旨在易於使用和學習,這使得它們成為初學者或剛接觸遊戲開發的開發人員的理想選擇。

  • 靈活性 - 這些庫提供了一系列用於建立遊戲的特性和工具,這可以更容易地建立適合您特定需求的遊戲。

  • 效能 - 其中一些庫旨在快速高效,這可以幫助提高遊戲的效能。

  • 跨平臺支援 - 許多這些庫都支援各種平臺和作業系統,這可以幫助您的遊戲更容易被更廣泛的受眾所訪問。

先決條件

在我們深入瞭解在 Pygame 中建立滾動背景的細節之前,讓我們回顧一些先決條件。

  • pip install pygame

  • 預計使用者可以訪問任何獨立的 IDE,例如 VS-Code、PyCharm、Atom 或 Sublime text。

  • 甚至可以使用線上 Python 編譯器,例如 Kaggle.com、Google Cloud 平臺或任何其他編譯器。

  • 更新版本的 Python。在撰寫本文時,我使用了 3.10.9 版本。

  • 瞭解 Jupyter notebook 的使用方法。

  • 熟悉 Pygame 庫

  • 對 2D 圖形和遊戲開發概念的基本理解

如果您不熟悉這些先決條件中的任何一個,我們建議您花一些時間熟悉它們,然後再繼續。

建立滾動背景的步驟

建立滾動背景涉及幾個步驟。我們將詳細介紹每一個步驟,並提供一些現實世界的例子來幫助您入門。

步驟 1:設定遊戲視窗

建立滾動背景的第一步是設定您的遊戲視窗。這可以使用 `pygame.display.set_mode()` 函式完成。以下是一個示例 -

import pygame
pygame.init()

設定遊戲視窗

screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("Scrolling Background Tutorial")

在這個例子中,我們匯入了 Pygame 庫並初始化它。然後,我們將遊戲視窗的寬度和高度分別設定為 800 畫素和 600 畫素。最後,我們將 `screen` 變數設定為新建立的遊戲視窗,標題為“滾動背景教程”。

步驟 2:載入背景影像

下一步是載入將要滾動的背景影像。這可以使用 `pygame.image.load()` 函式完成。以下是一個示例 -

#Load background image
background_img = pygame.image.load("background.jpg")

在這個例子中,我們載入名為“background.jpg”的影像,並將其儲存在 `background_img` 變數中。

步驟 3:滾動背景

下一步是滾動背景影像。這可以透過更改背景影像在遊戲視窗中的位置來完成。以下是一個示例 -

# Scroll the background
scroll_x = 0
scroll_y = 0
background_x = 0

while True:
   for event in pygame.event.get():
      if event.type == pygame.QUIT:
         pygame.quit()

   # Scroll the background horizontally
   scroll_x -= 1
   background_x -= 1

   #Draw the background twice to create seamless scrolling effect
   screen.blit(background_img, (scroll_x, scroll_y))
   screen.blit(background_img, (background_x, scroll_y))

   #Reset the background position when it goes off screen
   if scroll_x <= -screen_width:
      scroll_x = screen_width

   if background_x <= -screen_width:
      background_x = screen_width

   pygame.display.update()

在這個例子中,我們將背景影像的初始位置設定為 `(0,0)`。然後,我們建立一個 `while` 迴圈,它將持續執行,直到遊戲關閉。在 `while` 迴圈內,我們將 `scroll_x` 和 `background_x` 變數遞增 `-1` 以將背景影像向左移動。然後,我們使用 `screen.blit()` 函式繪製兩次背景影像。這會產生一個無縫的滾動效果。

步驟 4:新增遊戲物件

最後一步是將遊戲物件新增到視窗中。這可以使用 Pygame 庫的各種繪圖函式來完成。以下是一個示例 -

 #Add game objects
player_img = pygame.image.load("player.png")
player_x = 400
player_y = 300

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()

     #Scroll the background horizontally
    scroll_x -= 1
    background_x -= 1

     #Draw the background twice to create seamless scrolling effect
    screen.blit(background_img, (scroll_x, scroll_y))
    screen.blit(background_img, (background_x, scroll_y))

     #Reset the background position when it goes off screen
    if scroll_x <= -screen_width:
        scroll_x = screen_width

    if background_x <= -screen_width:
        background_x = screen_width

     #Add game objects
    screen.blit(player_img, (player_x, player_y))

    pygame.display.update()

在這個例子中,我們使用 `screen.blit()` 函式將一個玩家物件新增到螢幕上。我們還將玩家物件的初始位置設定為 `(400,300)`。

最終程式,程式碼

# libraries
import pygame
pygame.init()

#Setting up the window
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("Scrolling Background Tutorial")

#Load background image
background_img = pygame.image.load("background.jpg")

# Scroll the background
scroll_x = 0
scroll_y = 0
background_x = 0

while True:
   for event in pygame.event.get():
      if event.type == pygame.QUIT:
      pygame.quit()

   # Scroll the background horizontally
   scroll_x -= 1
   background_x -= 1

   #Draw the background twice to create seamless scrolling effect
   screen.blit(background_img, (scroll_x, scroll_y))
   screen.blit(background_img, (background_x, scroll_y))

   #Reset the background position when it goes off screen
   if scroll_x <= -screen_width:
      scroll_x = screen_width

   if background_x <= -screen_width:
      background_x = screen_width

   pygame.display.update()

#Add game objects
player_img = pygame.image.load("player.png")
player_x = 400
player_y = 300

while True:
   for event in pygame.event.get():
      if event.type == pygame.QUIT:
         pygame.quit()

   #Scroll the background horizontally
   scroll_x -= 1
   background_x -= 1

   #Draw the background twice to create seamless scrolling effect
   screen.blit(background_img, (scroll_x, scroll_y))
   screen.blit(background_img, (background_x, scroll_y))

   #Reset the background position when it goes off screen
   if scroll_x <= -screen_width:
      scroll_x = screen_width

   if background_x <= -screen_width:
      background_x = screen_width

   #Add game objects
   screen.blit(player_img, (player_x, player_y))

   pygame.display.update()

輸出

在上一節中,我們可以看到有兩個輸出顯示了背景影像的過渡或滾動,因此程式可以正確地輸出預期的結果。

結論

在本教程中,我們介紹了在 Pygame 中建立滾動背景的基本步驟。我們還提供了一些現實世界的例子和程式碼片段,以幫助您更好地理解這些概念。有了這些知識,您應該能夠建立具有滾動背景的引人入勝的遊戲。編碼愉快!

更新於: 2023年4月25日

1K+ 閱讀量

啟動你的 職業生涯

透過完成課程獲得認證

立即開始
廣告