從零開始學會用Python3做捕魚達人遊戲

加羣:526929231 獲取素材和源代碼

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

首先對捕魚達人這款遊戲做個簡單瞭解。捕魚達人是前幾年特別火的一款遊戲,他是一款以深海狩獵爲題材的休閒競技遊戲。2009年《捕魚達人》上線,最初以簡單輕鬆的捕魚玩法獲得了玩家的喜愛。隨後幾年,獲得了遊戲工委頒發的“遊戲十強”2015年度十大最受歡迎移動網絡遊戲獎等多項獎項。鄭重宣佈捕魚達人的地位。

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

如果你還沒有安裝這個遊戲引擎,那麼可以通過以下命令進行安裝:

pip3 install cocos2d

如果你還沒有遊戲素材,加羣:526929231獲取哦~~

初始化導演類:

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

from cocos.director import director
# 設置窗口的寬度是800像素,高度是400像素
director.init(width=800,height=480)

創建遊戲場景和層:

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

from cocos import layer
from cocos import scene
game_layer = layer.Layer()
game_scene = scene.Scene()

添加背景圖片:

遊戲都是在海底中玩的,因此要使用一張圖片來作爲遊戲的背景,不然遊戲就索然無味了。在cocos2d中,如果想要加載一張圖片,則必須使用到精靈(Sprite),以後我們遊戲中將會使用的魚、炮筒、網,都是通過精靈來實現的。並且精靈要放在層中,這裏我繼承了layer.Layer,重寫了一個子類(遊戲中用到的素材,搜羣:526929231獲取),代碼如下:
加羣:526929231 獲取素材和源代碼

添加炮筒:

炮筒需要通過精靈來實現,這裏我就直接寫了個子類,繼承自sprite.Sprite,然後創建了一個炮筒類,代碼如下:
加羣:526929231 獲取素材和源代碼

接收用戶點擊事件:

要想接收用戶點擊事件,要做兩件事情。第一,設置遊戲層的類屬性is_event_handler=True,第二,要實現on_mouse_press來接收用戶點擊事件,代碼如下:
加羣:526929231 獲取素材和源代碼

旋轉炮筒:

用戶點擊屏幕後要旋轉炮筒,並且撒網,這裏先來旋轉炮筒。因爲我們只知道屏幕的xy座標,不知道角度,因此這裏要用到三角函數來進行一個轉換,代碼如下:
加羣:526929231 獲取素材和源代碼

撒網:

在旋轉炮筒後,要把網撒出去,撒到鼠標點擊的地方,並且網在撒出去的時候要從小變大(網圖片素材搜裙:526929231),代碼如下:
加羣:526929231 獲取素材和源代碼

添加魚:

到目前位置,我們的遊戲場景中還沒有一條魚,因此我們這裏添加魚的類,並且讓他繼承自sprite.Sprite,魚在遊動的過程中,會不斷的更新自己的動作,因此不能簡單的使用一張圖片,而要使用到一組圖片,我們叫做關鍵幀動畫,如果不懂關鍵幀動畫或者需要魚的素材,搜裙:526929231。代碼如下:
加羣:526929231 獲取素材和源代碼

魚和網的碰撞檢測:

當網撒出去後,應該判斷有沒有和魚發生碰撞,如果碰撞到了,就要讓這條魚設置爲被捕獲的狀態。在cocos2d中,已經封裝好了碰撞檢測的模塊,通過cocos.collision_model即可完成。並且如果要給元素添加碰撞檢測,必須添加一個cshape屬性,這個屬性才能發生碰撞。這裏代碼有點多,我分開來列出來:
魚:
加羣:526929231 獲取素材和源代碼

網:
加羣:526929231 獲取素材和源代碼

檢測是否發生碰撞:
加羣:526929231 獲取素材和源代碼

寫在最後:

以上給大家提供了一個思路,如果沒有cocos2d開發經驗的同學,可能不是很好理解。因此我專門建了一個裙(526929231)給大家做答疑,如果大家想要遊戲素材和源代碼,以及完整教學視頻的,可以加下。最後附一張實現後的效果,祝大家學習愉快:
加羣:526929231 獲取素材和源代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章