您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“怎么在你的Python游戲中添加一個玩家”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“怎么在你的Python游戲中添加一個玩家”這篇文章吧。
在 Pygame 中,玩家操控的圖標或者化身被稱作妖精。如果你現在還沒有任何可用于玩家妖精的圖像,你可以使用 Krita 或 Inkscape 來自己創建一些圖像。如果你對自己的藝術細胞缺乏自信,你也可以在 OpenClipArt.org 或 OpenGameArt.org 搜索一些現成的圖像。如果你還未按照上一篇文章所說的單***建一個 images
文件夾,那么你需要在你的 Python 項目目錄中創建它。將你想要在游戲中使用的圖片都放 images
文件夾中。
為了使你的游戲真正的刺激,你應該為你的英雄使用一張動態的妖精圖片。這意味著你需要繪制更多的素材,并且它們要大不相同。最常見的動畫就是走路循環,通過一系列的圖像讓你的妖精看起來像是在走路。走路循環最快捷粗糙的版本需要四張圖像。
注意:這篇文章中的代碼示例同時兼容靜止的和動態的玩家妖精。
將你的玩家妖精命名為 hero.png
。如果你正在創建一個動態的妖精,則需要在名字后面加上一個數字,從 hero1.png
開始。
在 Python 中,當你在創建一個你想要顯示在屏幕上的對象時,你需要創建一個類。
在你的 Python 腳本靠近頂端的位置,加入如下代碼來創建一個玩家。在以下的代碼示例中,前三行已經在你正在處理的 Python 腳本中:
import pygameimport sysimport os # 以下是新代碼 class Player(pygame.sprite.Sprite): ''' 生成一個玩家 ''' def __init__(self): pygame.sprite.Sprite.__init__(self) self.images = [] img = pygame.image.load(os.path.join('images','hero.png')).convert() self.images.append(img) self.image = self.images[0] self.rect = self.image.get_rect()
如果你的可操控角色擁有一個走路循環,在 images
文件夾中將對應圖片保存為 hero1.png
到 hero4.png
的獨立文件。
使用一個循環來告訴 Python 遍歷每個文件。
'''對象''' class Player(pygame.sprite.Sprite): ''' 生成一個玩家 ''' def __init__(self): pygame.sprite.Sprite.__init__(self) self.images = [] for i in range(1,5): img = pygame.image.load(os.path.join('images','hero' + str(i) + '.png')).convert() self.images.append(img) self.image = self.images[0] self.rect = self.image.get_rect()
現在已經創建好了一個 Player 類,你需要使用它在你的游戲世界中生成一個玩家妖精。如果你不調用 Player 類,那它永遠不會起作用,(游戲世界中)也就不會有玩家。你可以通過立馬運行你的游戲來驗證一下。游戲會像上一篇文章末尾看到的那樣運行,并得到明確的結果:一個空蕩蕩的游戲世界。
為了將一個玩家妖精帶到你的游戲世界,你必須通過調用 Player 類來生成一個妖精,并將它加入到 Pygame 的妖精組中。在如下的代碼示例中,前三行是已經存在的代碼,你需要在其后添加代碼:
world = pygame.display.set_mode([worldx,worldy])backdrop = pygame.image.load(os.path.join('images','stage.png')).convert()backdropbox = screen.get_rect() # 以下是新代碼 player = Player() # 生成玩家player.rect.x = 0 # 移動 x 坐標player.rect.y = 0 # 移動 y 坐標player_list = pygame.sprite.Group()player_list.add(player)
嘗試啟動你的游戲來看看發生了什么。高能預警:它不會像你預期的那樣工作,當你啟動你的項目,玩家妖精沒有出現。事實上它生成了,只不過只出現了一毫秒。你要如何修復一個只出現了一毫秒的東西呢?你可能回想起上一篇文章中,你需要在主循環中添加一些東西。為了使玩家的存在時間超過一毫秒,你需要告訴 Python 在每次循環中都繪制一次。
將你的循環底部的語句更改如下:
world.blit(backdrop, backdropbox) player_list.draw(screen) # 繪制玩家 pygame.display.flip() clock.tick(fps)
現在啟動你的游戲,你的玩家出現了!
根據你如何創建你的玩家妖精,在它周圍可能會有一個色塊。你所看到的是 alpha 通道應該占據的空間。它本來是不可見的“顏色”,但 Python 現在還不知道要使它不可見。那么你所看到的,是圍繞在妖精周圍的邊界區(或現代游戲術語中的“***區”)內的空間。
你可以通過設置一個 alpha 通道和 RGB 值來告訴 Python 使哪種顏色不可見。如果你不知道你使用 alpha 通道的圖像的 RGB 值,你可以使用 Krita 或 Inkscape 打開它,并使用一種獨特的顏色,比如 #00ff00
(差不多是“綠屏綠”)來填充圖像周圍的空白區域。記下顏色對應的十六進制值(此處為 #00ff00
,綠屏綠)并將其作為 alpha 通道用于你的 Python 腳本。
使用 alpha 通道需要在你的妖精生成相關代碼中添加如下兩行。類似***行的代碼已經存在于你的腳本中,你只需要添加另外兩行:
img = pygame.image.load(os.path.join('images','hero' + str(i) + '.png')).convert() img.convert_alpha() # 優化 alpha img.set_colorkey(ALPHA) # 設置 alpha
除非你告訴它,否則 Python 不知道將哪種顏色作為 alpha 通道。在你代碼的設置相關區域,添加一些顏色定義。將如下的變量定義添加于你的設置相關區域的任意位置:
ALPHA = (0, 255, 0)
在以上示例代碼中,0,255,0
被我們使用,它在 RGB 中所代表的值與 #00ff00
在十六進制中所代表的值相同。你可以通過一個優秀的圖像應用程序,如 GIMP、Krita 或 Inkscape,來獲取所有這些顏色值。或者,你可以使用一個優秀的系統級顏色選擇器,如 KColorChooser,來檢測顏色。
如果你的圖像應用程序將你的妖精背景渲染成了其他的值,你可以按需調整 ALPHA
變量的值。不論你將 alpha 設為多少,***它都將“不可見”。RGB 顏色值是非常嚴格的,因此如果你需要將 alpha 設為 000,但你又想將 000 用于你圖像中的黑線,你只需要將圖像中線的顏色設為 111。這樣一來,(圖像中的黑線)就足夠接近黑色,但除了電腦以外沒有人能看出區別。
運行你的游戲查看結果。
以上是“怎么在你的Python游戲中添加一個玩家”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。