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# 设置窗口的宽度是800像素,高度是400像素director.init(width=800,height=480)

创建游戏场景和层:

场景是游戏开发中的一个组成部分,一个场景游戏界面可以是一个场景。场景一般不会直接放游戏元素,比如鱼和炮筒。一般我们会把游戏元素放在层中,然后再把这个层放到场景中,层也可以用来接收用户的事件,比如点击事件。因此我们来初始化第一个场景和层:

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

添加背景图片:

游戏都是在海底中玩的,因此要使用一张图片来作为游戏的背景,不然游戏就索然无味了。在cocos2d中,如果想要加载一张图片,则必须使用到精灵(Sprite),以后我们游戏中将会使用的鱼、炮筒、网,都是通过精灵来实现的。并且精灵要放在层中,这里我继承了layer.Layer,重写了一个子类,代码如下:

添加炮筒:

炮筒需要通过精灵来实现,这里我就直接写了个子类,继承自sprite.Sprite,然后创建了一个炮筒类,代码如下:

接收用户点击事件:要想接收用户点击事件,要做两件事情。第一,设置游戏层的类属性is_event_handler=True,第二,要实现on_mouse_press来接收用户点击事件,代码如下:

加裙:526929231 获取素材和源代码

旋转炮筒:

用户点击屏幕后要旋转炮筒,并且撒网,这里先来旋转炮筒。因为我们只知道屏幕的x和y坐标,不知道角度,因此这里要用到三角函数来进行一个转换,代码如下:

撒网:

在旋转炮筒后,要把网撒出去,撒到鼠标点击的地方,并且网在撒出去的时候要从小变大,代码如下:

添加鱼:

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

鱼和网的碰撞检测:

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

鱼:

网:

检测是否发生碰撞:

写在最后:

以上给大家提供了一个思路。Python还是能做出很牛逼的2d游戏的。最后附一张实现后的效果,祝大家学习愉快:

如果你符合下面的情况中的任意一条,那我十分建议你加入跟着一起学习

1.准备从事编程工作,但是不知道选择什么语言好

2.只掌握了Python基础,缺乏系统性的学习以及企业级项目实战,达不到求职的能力

3.有一定Python基础,但是求职屡屡碰壁,各种问题频繁暴露,甚至怀疑自己不适合做开发

4.准备转行从事开发的同学

5.年满18即可

6.想利用Python副业月入3000-80000

****扫码二维码领取Python学习试学课程+课程咨询!

领取福利加小姐姐微信:SX77661

免费领取学习+课程规划

Python开发游戏的正确姿势,看这篇就够了相关推荐

  1. Python开发游戏的正确姿势

    Python3在Python2的基础之上做了非常多的改进,比如字符串编码,在Python3中默认字符使用的是unicode编码,可以涵盖这个地球上所有的字符,当然了,优势不仅仅只有这一点.再加上Pyt ...

  2. centos python_【建议收藏】Python虚拟环境最全教程,看这篇就够了!

    本篇文章主要围绕Pyenv, Virtualenv, Virtualenvwrapper三个Python库展开讨论. 熟悉Python的朋友一定知道python虚拟环境, 它可以让我们在不同项目中拥有 ...

  3. 【Web技术】云开发到底怎么用?看这篇就够了

    你有没有想过:为什么公司招聘前端工程师会更倾向于应届生,而不会选择工作很多年的35岁的程序员? 在程序界曾流传着这样一种说法:程序员的黄金5年.说的是一个人在毕业之后的5年内是知识获取的黄金时期,这段 ...

  4. 全国计算机非全研究生学校清单(python抓取),只看这篇就够了!

    1.前言 很多it从业者竟然不知道计算机专业也有非全日制,看了我上一篇文章后豁然开朗,但是不知道从哪里入手取报考,有哪些学校可以选择?针对这些问题然后就有了该篇文章.因此下面的内容主要围绕下面主题开展 ...

  5. Go语言开发工具攻略!看这篇就够了!

    工欲善其事必先利其器,一个强大的开发工具有助于提升开发效率,今天我们就来聊聊Go语言的常用开发环境,Let's go !!! 1.下载安装包 在选择开发工具之前,我们需要先安装Go语言开发包.下载地址 ...

  6. java和python可以在一个项目中同时使用么-java调用python的几种用法(看这篇就够了)...

    java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐 ...

  7. 使用pip进行Python包的安装方法(看这篇就够了)

    首先,在cmd窗口中,用pip安装Python包,经常会出现超时的现象,主要是由于很多包都是需要从国外的网站上进行下载,所以会限速,但是如果采用国内的镜像进行下载,就会特别快,这里给出几个非常好用的方 ...

  8. 小学生要学python开发游戏吗

    小学生要学python开发游戏吗 小学生要学python开发游戏吗?为什么 而学, 到底需要如何做到, 又该如何学习. 就我个人来说, 小学生要学python开发游戏吗很有意义, 不能不说非常重大. ...

  9. 在Windows上开发ROS的正确姿势

    在Windows上开发ROS的正确姿势 之前在Windows我安装ROS的Windows版本,由于国内没有Chocolatey的镜像,安装一遍ROS得花上一整天时间,还不一定能安装成功.另外一个缺点是 ...

最新文章

  1. Python3学习笔记(一):基础语法
  2. Oracle触发器(trigger):一般用法
  3. linux 修改用户组_linux小白到大神的成长之路:linux系统用户组的管理!
  4. Sonar 质量扫描的输出日志--对应源码的跟踪(二){sonar engine源码}
  5. Kafka常用命令之kafka-console-consumer.sh
  6. matlab仿真限幅发散,GSM通信系统性能分析与MATLAB仿真.doc
  7. mycat-mysql读写分离
  8. od 调试java_OD调试初步概念——修改窗口标题
  9. Linux之交叉编译器的构建
  10. Tcpip协议详解----动态选路
  11. 11_超级鹰学习及应用
  12. java mac excel 中文乱码_解决mac excel中文乱码的问题
  13. 【MySQL学习】DQL语言的学习 Data Query Language
  14. Jenkins项目配置-maven项目-全面
  15. 访问一个网页的全过程详解
  16. 计算机未来设计建筑,未来设计的趋势解析,参数化设计及创意设计案例欣赏
  17. 【万字解读】数据可视化图表使用场景大全 !
  18. office 2010 ppt 添加音乐等相关问题
  19. 计算机老师的英语怎么写,英语感谢信感谢我的计算机老师
  20. 俄罗斯方块游戏系统-c语言版

热门文章

  1. Transformer的前世今生
  2. PyTorch 多机多卡训练:DDP 实战与技巧
  3. 全新的AirPods Pro包邮送!
  4. 论文LaTeX、项目README:无脑套用格式、开源模板最高10万赞
  5. 美国高校开源迄今为止最大新冠肺炎CT数据集!
  6. CVPR 2020 Oral | 旷视研究院提出Circle Loss,革新深度特征学习范式
  7. 活久见!技术面试官竟然给我出了一个脑筋急转弯,还问我王者荣耀什么段位?...
  8. 为什么抢红包抢不过别人?学了这个算法就明白了!
  9. codis3数据迁移探索
  10. 基于OpenCV创建视频会议虚拟背景