首頁 >系統教程 >Linux >Python開發遊戲的正確姿勢

Python開發遊戲的正確姿勢

王林
王林轉載
2024-01-12 11:54:04976瀏覽

Python開發遊戲的正確姿勢
# Python3在Python2的基礎之上做了非常多的改進,例如字串編碼,在Python3中預設字元使用的是unicode編碼,可以涵蓋這個地球上所有的字符,當然了,優勢不僅僅只有這一點。再加上Python這門語言本身開發效率特別高,因此今天我們教大家用Python3來開發爆款遊戲-捕魚達人!

先對釣魚達人這款遊戲做個簡單了解。捕魚達人是前幾年特別火紅的遊戲,他是一款以深海狩獵為主題的休閒競技遊戲。 2009年《捕魚達人》上線,最初以簡單輕鬆的釣魚玩法獲得了玩家的喜愛。隨後幾年,獲得了遊戲工委頒發的「遊戲十強」2015年度十大最受歡迎行動網路遊戲獎等多項獎項。鄭重宣布捕魚達人的地位。 Python3中有一個遊戲開發引擎叫做cocos2d。

這款遊戲引擎最初是Objective-C版本,只能在iOS系統上使用,後來國內大牛王哲把他給翻譯成了一個C 的版本,C 具有可移植性,因此迅速火爆起來。今天我們要用到的這個cocos2d,是Python版本的,python版本的cocos2d相對於C 的版本來講,開發效率更高,沒有那麼多野指針和內存洩漏的問題,並且同樣也支持跨平台,開發出來的遊戲不需要更改一行程式碼就可以在Windows和Mac以及Linux上運行。如果你還沒有安裝這個遊戲引擎,那麼可以透過以下指令來安裝:

pip3 install cocos2d
初始化導演類別:

cocos2d中,導演類別是用來安排整個遊戲的進程的。並且在遊戲過程中是一個單例物件。使用cocos2d做的第一件事就是初始化director:

from cocos.director import director 
director.init(width=800,height=480)   # 设置窗口的宽度是800像素,高度是400像素
創建遊戲場景和圖層:

場景是遊戲開發中的一個組成部分,一個場景遊戲介面可以是一個場景。場景一般不會直接放遊戲元素,例如魚和砲筒。一般我們會把遊戲元素放在層中,然後再把這個層放到場景中,層也可以用來接收用戶的事件,例如點擊事件。因此我們來初始化第一個場景和層:

from cocos import layer
from cocos import scene
game_layer = layer.Layer()
game_scene = scene.Scene()
新增背景圖片:

遊戲都是在海底中玩的,因此要使用一張圖片來作為遊戲的背景,不然遊戲就索然無味了。在cocos2d中,如果想要載入一張圖片,則必須使用到精靈(Sprite),以後我們遊戲中將會使用的魚、砲筒、網,都是透過精靈來實現的。而精靈要放在層中,這裡我繼承了layer.Layer,重寫了一個子類,程式碼如下:
Python開發遊戲的正確姿勢

新增砲筒:

砲筒需要透過精靈來實現,這裡我就直接寫了個子類,繼承自sprite.Sprite,然後創建了一個砲筒類,程式碼如下:
Python開發遊戲的正確姿勢
接收用戶點擊事件:要接收用戶點擊事件,要做兩件事。第一,設定遊戲層的類別屬性is_event_handler=True,第二,要實作on_mouse_press來接收使用者點擊事件,程式碼如下:
Python開發遊戲的正確姿勢

旋轉砲筒:

用戶點擊螢幕後要旋轉砲筒,並且撒網,這裡先來旋轉砲筒。因為我們只知道螢幕的x和y座標,不知道角度,所以這裡要用到三角函數來進行一個轉換,程式碼如下:
Python開發遊戲的正確姿勢

撒網:

在旋轉砲筒後,要把網撒出去,撒到滑鼠點擊的地方,並且網在撒出去的時候要從小變大,程式碼如下:
Python開發遊戲的正確姿勢

新增魚:

到目前位置,我們的遊戲場景中還沒有一條魚,因此我們這裡添加魚的類,並且讓他繼承自sprite.Sprite,魚在遊動的過程中,會不斷的更新自己的動作,因此不能簡單的使用一張圖片,而要使用到一組圖片,我們叫做關鍵影格動畫,程式碼如下:
Python開發遊戲的正確姿勢

魚和網的碰撞偵測:

當網撒出去後,應該判斷有沒有和魚發生碰撞,如果碰撞到了,就要讓這條魚設定為被捕獲的狀態。在cocos2d中,已經封裝好了碰撞偵測的模組,透過cocos.collision_model即可完成。而如果要為元素添加碰撞檢測,則必須新增一個cshape屬性,這個屬性才能發生碰撞。這裡程式碼有點多,我分開來列出來:

魚:
Python開發遊戲的正確姿勢
網:
Python開發遊戲的正確姿勢
檢測是否發生碰撞:
Python開發遊戲的正確姿勢
以上給大家提供了一個思路。 Python還是能做出很屌的2d遊戲的。

以上是Python開發遊戲的正確姿勢的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:linuxprobe.com。如有侵權,請聯絡admin@php.cn刪除