0

0

Python开发游戏的正确姿势

王林

王林

发布时间:2024-01-12 11:54:04

|

1077人浏览过

|

来源于Linux就该这么学

转载

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开发游戏的正确姿势

Artflow.ai
Artflow.ai

可以使用AI生成的原始角色、场景、对话,创建动画故事。

下载
撒网:

在旋转炮筒后,要把网撒出去,撒到鼠标点击的地方,并且网在撒出去的时候要从小变大,代码如下:
Python开发游戏的正确姿势

添加鱼:

到目前位置,我们的游戏场景中还没有一条鱼,因此我们这里添加鱼的类,并且让他继承自sprite.Sprite,鱼在游动的过程中,会不断的更新自己的动作,因此不能简单的使用一张图片,而要使用到一组图片,我们叫做关键帧动画,代码如下:
Python开发游戏的正确姿势

鱼和网的碰撞检测:

当网撒出去后,应该判断有没有和鱼发生碰撞,如果碰撞到了,就要让这条鱼设置为被捕获的状态。在cocos2d中,已经封装好了碰撞检测的模块,通过cocos.collision_model即可完成。并且如果要给元素添加碰撞检测,必须添加一个cshape属性,这个属性才能发生碰撞。这里代码有点多,我分开来列出来:

立即学习Python免费学习笔记(深入)”;

鱼:
Python开发游戏的正确姿势
网:
Python开发游戏的正确姿势
检测是否发生碰撞:
Python开发游戏的正确姿势
以上给大家提供了一个思路。Python还是能做出很牛逼的2d游戏的。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

716

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

626

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

739

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

617

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1236

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

575

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

699

2023.08.11

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.4万人学习

Git 教程
Git 教程

共21课时 | 2.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号