首頁 > 軟體

Pygame遊戲開發之太空射擊實戰影象精靈下篇

2022-08-04 18:02:15

視訊

觀看視訊

影象精靈

這是我們教學系列“使用 Pygame 進行遊戲開發”的第 3 部分。它適用於對遊戲開發和提高Python編碼技能感興趣的初學者/中級程式設計師。您應該從第 1 部分開始:入門

變為圖形精靈

彩色矩形很好 - 它們是開始並確保遊戲正常工作的好方法,但遲早你會想要為你的精靈使用很酷的宇宙飛船影象或角色。這就引出了第一個問題:您從哪裡獲得遊戲圖形。

在哪裡可以找到藝術品

當您的遊戲需要美術時,您有 3 種選擇:

  • 自己畫
  • 找一個藝術家為你畫畫
  • 使用來自網際網路的預先存在的藝術品

如果您或您的朋友有藝術傾向,1和2是可以的,但是對於大多數程式設計師來說,建立漂亮的藝術並不在我們的技能範圍內。記住你不應該使用你沒有權利使用的藝術是非常重要的,特別是如果您打算將其放到網上並讓其他人看到它。

幸運的是,有一個很好的解決方案:OpenGameArt.org。這個網站載入了大量的藝術,聲音,音樂等等 - 這一切都是由藝術家慷慨授權的,供您在遊戲中使用。你可以在那裡找到最好的藝術家之一Kenney(只要把他的名字放在搜尋方塊中)。

您也可以存取Kenney的網站。

我喜歡使用肯尼的藝術的原因是他喜歡成包釋出它。這意味著您可以獲得風格完全匹配的藝術品集,而不是嘗試混合和匹配來自多個藝術家的影象。

在本課中,我們將使用 Kenney 的 Platformer Art Complete Pack,它有很多用於製作平臺遊戲風格的遊戲的圖形。繼續下載並解壓縮。我們將使用影象“p1_jump.png”:

您也可以只需單擊上面的影象即可下載播放器影象。

組織遊戲元件

首先,我們需要一個資料夾來儲存我們的元件,這是遊戲開發人員用來指代藝術和聲音等事物的術語。我簡稱該資料夾為“img”,並將玩家影象放入其中。

要在遊戲中使用此影象,我們需要告訴 Pygame 載入圖片檔案,這意味著我們需要程式知道檔案的位置。根據您使用的計算機型別,這可能會有所不同,並且我們希望能夠在任何計算機上執行我們的程式,因此我們需要載入一個名為os 的Python庫,然後指定我們的遊戲所在的位置:

 import pygame
 import random
 import os
 # set up asset folders
 game_folder = os.path.dirname(__file__)

特殊的 Python 變數__file__是指儲存遊戲程式碼的資料夾,該命令os.path.dirname會找出該資料夾的路徑。如果您使用的是 Windows,則路徑可能如下所示:

C:UserschrisDocumentspythongame.py

不同的作業系統使用不同的方法來描述事物在計算機上的位置。通過使用os.path命令,我們可以讓計算機找出正確的路徑是什麼(例如,是使用“/”還是“”)。

現在,我們可以指定我們的“img”資料夾:

 import pygame
 import random
 import os
 # set up asset folders
 game_folder = os.path.dirname(__file__)
 img_folder = os.path.join(game_folder, 'img')
 player_img = pygame.image.load(os.path.join(img_folder, 'p1_jump.png')).convert()

現在,我們已經通過使用pygame.image.load()載入了我們的影象,並且確保使用convert() ,這將通過將影象轉換為在螢幕上繪製速度更快的格式來加快Pygame的繪製速度。現在,我們準備將 sprite 中的普通綠色方塊替換為花哨的玩家影象:

class Player(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = player_img
        self.rect = self.image.get_rect()
        self.rect.center = (WIDTH / 2, HEIGHT / 2)

請注意,我們已經刪除了self.image.fill(GREEN)命令- 我們不再需要用純色填充它。 get_rect()仍然可以正常工作,因為它會找出self.image邊界矩形。

現在,如果您執行該程式,您應該看到一個漂亮的小卡通外星人在螢幕上奔跑。但是我們有一個問題 - 一個我們看不到的問題,因為背景目前是黑色的。將底部的命令screen.fill()更改為其他命令 - 我決定使用BLUE.現在您可以看到問題:

當計算機上有影象檔案時,該檔案始終是畫素的矩形網格。無論您繪製了什麼形狀,影象仍然有一個填充“背景”的邊框。我們需要做的是告訴Pygame忽略影象中我們不關心的畫素。在此影象中,這些畫素恰好是黑色的,因此我們可以新增以下內容:

class Player(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = player_img
	    self.image.set_colorkey(BLACK)
        self.rect = self.image.get_rect()
        self.rect.center = (WIDTH / 2, HEIGHT / 2)

set_colorkey()只是告訴Pygame,當我們繪製影象時,我們要忽略指定顏色的任何畫素。現在我們的影象看起來好多了:

恭喜你,你現在已經學習了使用Pygame的基礎知識!現在是時候開始製作一款真正的遊戲了。我們建立了一些教學,展示了從頭到尾建立完整遊戲的過程。隨著我們的發展,它們變得越來越複雜,因此建議您按順序學習它們。

到此這篇關於Pygame遊戲開發之太空射擊實戰影象精靈下篇的文章就介紹到這了,更多相關Pygame影象精靈內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com