阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Python开发游戏的正确姿势

92次阅读
没有评论

共计 1792 个字符,预计需要花费 5 分钟才能阅读完成。

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 游戏的。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计1792字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中