Python 是當下最為火熱,且功能最為全面的一門編程語言。Python 之所以深受大家喜愛, 除了可以被應用到“人工智能”領域之外,還可以延伸到數(shù)據(jù)分析、Web 開發(fā)、自動化測試、自然語言處理、游戲開發(fā)等各個領域。這一切的實現(xiàn)得益于 Python 有一個強大的第三方庫(網(wǎng)址:https://pypi.org/),這個第三方庫相當于一個手機軟件市場,允許我們隨意下載各式各樣的軟件包,并且開箱即用,這大大提高了 Python 語言的編程效率和實用性。
“如果說我比其他人看的更遠,那是因為我站在巨人的肩膀上?!钡谌綆炀拖喈斢诰奕?,它為程序開發(fā)者們提供了眾多現(xiàn)成的模塊。
接下來,我們要講的 Pygame 就是第三庫中非常有趣、實用的一個模塊。
顧名思義,Pygame 是一個專門用來開發(fā)游戲的 Python 模塊,主要為開發(fā)、設計 2D 電子游戲而生,它是一個免費、開源的第三方軟件包,支持多種操作系統(tǒng),具有良好的跨平臺性(比如 Windows、Linux、Mac 等)。Pygame 是Pete Shinners 在 SDL(Simple DirectMedia Layer,一套開源的跨平臺多媒體開發(fā)庫)基礎上開發(fā)而來,其目的是取代 PySDL。
圖1:Pygame
截止到 2021 年 10 月 28 日,Pygame 已經(jīng)誕生 21 周年。
SDL 是一套開放源代碼的跨平臺多媒體開發(fā)庫,使用 C語言編寫,它提供了多種控制圖像、聲音、輸入/輸出的函數(shù),Pygame 可以看做是對 SDL 的封裝,在 SDL 庫基礎上提供了各種 Python 的 API接口。目前 SDL 主要用于多媒體領域,比如開發(fā)游戲、模擬器、媒體播放器等。
圖2:SDL
通過 Pygame 我們能夠創(chuàng)建各種各樣的游戲和多媒體程序,但相比于開發(fā)大型 3D 游戲來說,它更擅長與開發(fā) 2D 游戲,比如掃雷、紙牌游戲、貪吃蛇、超級馬里奧、飛機大戰(zhàn)等,如果是 3D 游戲,可以選擇一些功能更為全面的 Python 游戲開發(fā)庫,比如 Panda3D(迪士尼開發(fā)的3D游戲引擎),PyOgre(Ogre 3D渲染引擎)等。
Python 作為一門解釋型語言并不適合開發(fā)大型的 3D 游戲,但 Python 通過對其他語言的接口封裝,使自身具備了開發(fā)大型 3D 游戲的能力,例如 Panda3D 的底層是用 C++ 語言編寫的。一些較為知名的 3D 游戲,比如魔獸世界、文明帝國4、戰(zhàn)地風云2,這些游戲都是使用 Python 語言開發(fā)的,而國內(nèi)較為知名的“陰陽師”手游,也是由 Python 語言開發(fā)而成。
“俗話說,術(shù)業(yè)有專攻”,每一種語言都有自己擅長的一方面,不能因為某種語言不適合某一領域,就認為它是劣質(zhì)語言。
Pygame 官方網(wǎng)站(https://www.pygame.org/tags/all)提供許多豐富的游戲案例,它們?nèi)渴褂?Pygame 開發(fā),如下所示:
圖3:Pygame官方案例
通過官網(wǎng)可以很方便地找到并下載這些游戲?!?gt; 點擊前往。
這些項目案例能為您開發(fā)自己的游戲提供一些思路和幫助。
假如您從來沒有接觸過游戲開發(fā),那么學習 Pygame 是一個不錯的選擇,它非常適合初學者學習,您可以把它當做進入游戲開發(fā)世界的“敲門磚”,通過對 Pygame 的學習,您將了解到更為廣闊的世界。
如果您想做專業(yè)的游戲開發(fā)工程師,建議學習 C/C++、C# 語言,這些語言雖然語法略顯復雜,但是其性能相比于 Python 來說要好的多。就當下而言,市面上最為流行的游戲開發(fā)平臺(即游戲引擎)分別是 Unity
和 UE4,這兩個平臺的側(cè)重點不同,前者適合于移動端游戲的開發(fā)(支持 C# 語言),而后者更偏向于 PC 端游戲的開發(fā)(支持 C++ 語言),此處不做深入探討,如果您對它們感興趣的話,可以自行研究。
圖4:游戲開發(fā)引擎
UE4 和 Uinty 開發(fā)了許多優(yōu)秀的游戲,比如 UE4 開發(fā)了《絕地求生:刺激戰(zhàn)場》,而 Unity 開發(fā)了《使命召喚手游版》。
更多建議: