Python開發遊戲的正確姿勢
Python3在Python2的基礎之上做了非常多的改進,比如字串編碼,在Python3中預設字元使用的是unicode編碼,可以涵蓋這個地球上所有的字元,當然了,優勢不僅僅只有這一點。再加上Python這門語言本身開發效率特別高,因此今天我們教大家用Python3來開發爆款遊戲——捕魚達人!
首先對捕魚達人這款遊戲做個簡單瞭解。捕魚達人是前幾年特別火的一款遊戲,他是一款以深海狩獵為題材的休閒競技遊戲。2009年《捕魚達人》上線,最初以簡單輕鬆的捕魚玩法獲得了玩家的喜愛。隨後幾年,獲得了遊戲工委頒發的“遊戲十強”2015年度十大歡迎行動網路遊戲獎等多項獎項。鄭重宣佈捕魚達人的地位。Python3中有一個遊戲開發引擎叫做cocos2d。
這款遊戲引擎最初是Objective-C版本,只能在iOS系統上使用,後來國內大牛王哲把他給翻譯成了一個C++的版本,C++具有可移植性,因此迅速火爆起來。今天我們要用到的這個cocos2d,是Python版本的,python版本的cocos2d相對於C++的版本來講,開發效率更高,沒有那麼多野指標和記憶體洩漏的問題,並且同樣也支援跨平臺,開發出來的遊戲不需要更改一行程式碼就可以在Windows和Mac以及 上執行。如果你還沒有安裝這個遊戲引擎,那麼可以透過以下 進行安裝:
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,重寫了一個子類,程式碼如下:
炮筒需要透過精靈來實現,這裡我就直接寫了個子類,繼承自sprite.Sprite,然後建立了一個炮筒類,程式碼如下:
接收使用者點選事件:要想接收使用者點選事件,要做兩件事情。第一,設定遊戲層的類屬性is_event_handler=True,第二,要實現on_mouse_press來接收使用者點選事件,程式碼如下:
使用者點選螢幕後要旋轉炮筒,並且撒網,這裡先來旋轉炮筒。因為我們只知道螢幕的x和y座標,不知道角度,因此這裡要用到三角函式來進行一個轉換,程式碼如下:
在旋轉炮筒後,要把網撒出去,撒到滑鼠點選的地方,並且網在撒出去的時候要從小變大,程式碼如下:
到目前位置,我們的遊戲場景中還沒有一條魚,因此我們這裡新增魚的類,並且讓他繼承自sprite.Sprite,魚在遊動的過程中,會不斷的更新自己的動作,因此不能簡單的使用一張圖片,而要使用到一組圖片,我們叫做關鍵幀動畫,程式碼如下:
當網撒出去後,應該判斷有沒有和魚發生碰撞,如果碰撞到了,就要讓這條魚設定為被捕獲的狀態。在cocos2d中,已經封裝好了碰撞檢測的模組,透過cocos.collision_model即可完成。並且如果要給元素新增碰撞檢測,必須新增一個cshape屬性,這個屬性才能發生碰撞。這裡程式碼有點多,我分開來列出來:
魚:
網:
檢測是否發生碰撞:
以上給大家提供了一個思路。Python還是能做出很牛逼的2d遊戲的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2997245/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 開啟Git的正確姿勢Git
- 學習軟體開發的正確姿勢
- Python 操作 MySQL 的正確姿勢PythonMySql
- Python re 庫的正確使用姿勢Python
- Redis的正確使用姿勢Redis
- 開發函式計算的正確姿勢 —— 爬蟲函式爬蟲
- vue多頁面開發和打包的正確姿勢Vue
- django開發時遇到問題的正確求助姿勢Django
- 區塊鏈的正確開啟姿勢區塊鏈
- Git和GitHub的正確開啟姿勢Github
- 乾貨 | 學習Python的正確姿勢Python
- Postman 正確使用姿勢Postman
- Homestead 開啟mongodb正確姿勢MongoDB
- 開發函式計算的正確姿勢——OCR 服務函式
- 前後端協同開發,使用 GraphQL 正確的姿勢後端
- git commit 的正確姿勢GitMIT
- 玩轉 Ceph 的正確姿勢
- laravel 使用 es 的正確姿勢Laravel
- java關流的正確姿勢Java
- 使用快取的正確姿勢快取
- Fragment commit 的正確姿勢FragmentMIT
- 開源專案翻譯正確姿勢
- 用Python解鎖“吃雞”正確姿勢Python
- Goland 開啟一個專案的正確姿勢GoLand
- Python 開發者面向文件程式設計的正確姿勢Python程式設計
- 原始碼|使用FutureTask的正確姿勢原始碼
- 相容iphone x劉海的正確姿勢iPhone
- npm run dev 的正確使用姿勢NPMdev
- 限制UITextField字數的正確姿勢UI
- 使用 Java 8 Optional 的正確姿勢Java
- 解鎖 Redis 鎖的正確姿勢Redis
- MySQL 5.6建索引的正確姿勢MySql索引
- 解鎖redis鎖的正確姿勢Redis
- 演算法分析的正確姿勢演算法
- Java日誌正確使用姿勢Java
- 開發函式計算的正確姿勢——執行 Selenium Java函式Java
- 開發函式計算的正確姿勢 —— 排查超時問題函式
- 理解玩家的正確姿勢:遊戲到底意味著什麼?遊戲