Pygame游戲開(kāi)發(fā)之太空射擊實(shí)戰(zhàn)圖像精靈下篇
視頻
圖像精靈
這是我們教程系列“使用 Pygame 進(jìn)行游戲開(kāi)發(fā)”的第 3 部分。它適用于對(duì)游戲開(kāi)發(fā)和提高Python編碼技能感興趣的初學(xué)者/中級(jí)程序員。您應(yīng)該從第 1 部分開(kāi)始:入門
變?yōu)閳D形精靈
彩色矩形很好 - 它們是開(kāi)始并確保游戲正常工作的好方法,但遲早你會(huì)想要為你的精靈使用很酷的宇宙飛船圖像或角色。這就引出了第一個(gè)問(wèn)題:您從哪里獲得游戲圖形。
在哪里可以找到藝術(shù)品
當(dāng)您的游戲需要美術(shù)時(shí),您有 3 種選擇:
- 自己畫
- 找一個(gè)藝術(shù)家為你畫畫
- 使用來(lái)自互聯(lián)網(wǎng)的預(yù)先存在的藝術(shù)品
如果您或您的朋友有藝術(shù)傾向,1和2是可以的,但是對(duì)于大多數(shù)程序員來(lái)說(shuō),創(chuàng)建漂亮的藝術(shù)并不在我們的技能范圍內(nèi)。記住你不應(yīng)該使用你沒(méi)有權(quán)利使用的藝術(shù)是非常重要的,特別是如果您打算將其放到網(wǎng)上并讓其他人看到它。
幸運(yùn)的是,有一個(gè)很好的解決方案:OpenGameArt.org。這個(gè)網(wǎng)站加載了大量的藝術(shù),聲音,音樂(lè)等等 - 這一切都是由藝術(shù)家慷慨授權(quán)的,供您在游戲中使用。你可以在那里找到最好的藝術(shù)家之一Kenney(只要把他的名字放在搜索框中)。
您也可以訪問(wèn)Kenney的網(wǎng)站。
我喜歡使用肯尼的藝術(shù)的原因是他喜歡成包發(fā)布它。這意味著您可以獲得風(fēng)格完全匹配的藝術(shù)品集,而不是嘗試混合和匹配來(lái)自多個(gè)藝術(shù)家的圖像。
在本課中,我們將使用 Kenney 的 Platformer Art Complete Pack,它有很多用于制作平臺(tái)游戲風(fēng)格的游戲的圖形。繼續(xù)下載并解壓縮。我們將使用圖像“p1_jump.png”:

您也可以只需單擊上面的圖像即可下載播放器圖像。
組織游戲組件
首先,我們需要一個(gè)文件夾來(lái)保存我們的組件,這是游戲開(kāi)發(fā)人員用來(lái)指代藝術(shù)和聲音等事物的術(shù)語(yǔ)。我簡(jiǎn)稱該文件夾為“img”,并將玩家圖像放入其中。
要在游戲中使用此圖像,我們需要告訴 Pygame 加載圖片文件,這意味著我們需要程序知道文件的位置。根據(jù)您使用的計(jì)算機(jī)類型,這可能會(huì)有所不同,并且我們希望能夠在任何計(jì)算機(jī)上運(yùn)行我們的程序,因此我們需要加載一個(gè)名為os 的Python庫(kù),然后指定我們的游戲所在的位置:
import pygame import random import os # set up asset folders game_folder = os.path.dirname(__file__)
特殊的 Python 變量__file__是指保存游戲代碼的文件夾,該命令os.path.dirname會(huì)找出該文件夾的路徑。如果您使用的是 Windows,則路徑可能如下所示:
C:\Users\chris\Documents\python\game.py
不同的操作系統(tǒng)使用不同的方法來(lái)描述事物在計(jì)算機(jī)上的位置。通過(guò)使用os.path命令,我們可以讓計(jì)算機(jī)找出正確的路徑是什么(例如,是使用“/”還是“\”)。
現(xiàn)在,我們可以指定我們的“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()
現(xiàn)在,我們已經(jīng)通過(guò)使用pygame.image.load()加載了我們的圖像,并且確保使用convert() ,這將通過(guò)將圖像轉(zhuǎn)換為在屏幕上繪制速度更快的格式來(lái)加快Pygame的繪制速度?,F(xiàn)在,我們準(zhǔn)備將 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)請(qǐng)注意,我們已經(jīng)刪除了self.image.fill(GREEN)命令- 我們不再需要用純色填充它。 get_rect()仍然可以正常工作,因?yàn)樗鼤?huì)找出self.image邊界矩形。
現(xiàn)在,如果您運(yùn)行該程序,您應(yīng)該看到一個(gè)漂亮的小卡通外星人在屏幕上奔跑。但是我們有一個(gè)問(wèn)題 - 一個(gè)我們看不到的問(wèn)題,因?yàn)楸尘澳壳笆呛谏摹⒌撞康拿?code>screen.fill()更改為其他命令 - 我決定使用BLUE.現(xiàn)在您可以看到問(wèn)題:

當(dāng)計(jì)算機(jī)上有圖像文件時(shí),該文件始終是像素的矩形網(wǎng)格。無(wú)論您繪制了什么形狀,圖像仍然有一個(gè)填充“背景”的邊框。我們需要做的是告訴Pygame忽略圖像中我們不關(guān)心的像素。在此圖像中,這些像素恰好是黑色的,因此我們可以添加以下內(nèi)容:
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,當(dāng)我們繪制圖像時(shí),我們要忽略指定顏色的任何像素。現(xiàn)在我們的圖像看起來(lái)好多了:

恭喜你,你現(xiàn)在已經(jīng)學(xué)習(xí)了使用Pygame的基礎(chǔ)知識(shí)!現(xiàn)在是時(shí)候開(kāi)始制作一款真正的游戲了。我們創(chuàng)建了一些教程,展示了從頭到尾創(chuàng)建完整游戲的過(guò)程。隨著我們的發(fā)展,它們變得越來(lái)越復(fù)雜,因此建議您按順序?qū)W習(xí)它們。
到此這篇關(guān)于Pygame游戲開(kāi)發(fā)之太空射擊實(shí)戰(zhàn)圖像精靈下篇的文章就介紹到這了,更多相關(guān)Pygame圖像精靈內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Pygame游戲開(kāi)發(fā)之太空射擊實(shí)戰(zhàn)碰撞改進(jìn)篇
- Pygame游戲開(kāi)發(fā)之太空射擊實(shí)戰(zhàn)添加圖形篇
- Pygame游戲開(kāi)發(fā)之太空射擊實(shí)戰(zhàn)子彈與碰撞處理篇
- Pygame游戲開(kāi)發(fā)之太空射擊實(shí)戰(zhàn)敵人精靈篇
- Pygame游戲開(kāi)發(fā)之太空射擊實(shí)戰(zhàn)精靈的使用上篇
- Pygame游戲開(kāi)發(fā)之太空射擊實(shí)戰(zhàn)入門篇
- Pygame游戲開(kāi)發(fā)之太空射擊實(shí)戰(zhàn)盾牌篇
相關(guān)文章
python實(shí)現(xiàn)決策樹ID3算法的示例代碼
這篇文章主要介紹了python實(shí)現(xiàn)決策樹ID3算法的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Django項(xiàng)目的創(chuàng)建全過(guò)程
本文介紹了如何在Windows系統(tǒng)上安裝和配置Python解釋器、切換默認(rèn)版本、使用虛擬環(huán)境安裝Django,并通過(guò)PyCharm創(chuàng)建和管理Django項(xiàng)目2025-01-01
opencv3/C++實(shí)現(xiàn)視頻背景去除建模(BSM)
今天小編就為大家分享一篇opencv3/C++實(shí)現(xiàn)視頻背景去除建模(BSM),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
python實(shí)現(xiàn)在sqlite動(dòng)態(tài)創(chuàng)建表的方法
這篇文章主要介紹了python實(shí)現(xiàn)在sqlite動(dòng)態(tài)創(chuàng)建表的方法,涉及Python操作SQLite數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)表的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-05-05
python 判斷網(wǎng)絡(luò)連通的實(shí)現(xiàn)方法
下面小編就為大家分享一篇python 判斷網(wǎng)絡(luò)連通的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
pyscript的簡(jiǎn)單應(yīng)用實(shí)現(xiàn)
本文主要介紹了pyscript的簡(jiǎn)單應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
詳解Python相關(guān)文件常見(jiàn)的后綴名
常見(jiàn)的 Python 文件后綴有:py、pyc 、pyo、 pyi、pyw、 pyd、 pyx 等。本文給大家介紹Python相關(guān)文件常見(jiàn)的后綴名,感興趣的朋友跟隨小編一起看看吧2021-05-05

