Python游戏引擎开发(一):序

邂逅Python

写了这么久的html5,感觉html5学得差不多了,是时候去接触更多的语言来扩充自己的能力了。我先后看了Swift,Java等语言。首先开发Swift需要一台mac,对于我这个寒士而言,过于奢华了一些;Java吧,又感觉太胖了,不够苗条,身材不好,也看不上。最后遇到了Miss Python,先前也和她打过交道,不过感觉语法怪怪的,总是出现>>>这类符号(当时没有深入接触,不晓得是命令输入提示),实在是太高冷了。幸好遇见了廖雪峰大侠,在他的引荐下,我开始初步了解Python。俗话说:第一印象很重要,这倒不假,第一次深入学习Python大致给了我这些印象:

  • 易于使用,安装Python和代码编辑器即可
  • 语法性感,写Python就如写诗,错落有致
  • 功能强大,和Js相比,多出了线程控制以及类,tuple等元素
  • 跨平台,据说你可以带着你的Python从PC到Android,从Android到iOS
  • 易于学习,上文提到的廖大侠提供了全面的教程,我们可以轻松地初步掌握Python,大家可以到他的网站上找到这些教程

学习Python3快一个月了,虽然学的内容,不过由于有js等类似语言的撑腰,还是很快把基本的定义函数,类,变量等差不多掌握了。于是开始重操旧业,进行Python游戏开发。

Qt附体

Python和其他语言类似,有专有的GUI库来进行图形界面开发,这里我选择了PyQt。网上有人评价Qt说:“Qt是世界上最强大的引擎之一,如果不是最强的话”,不难否认,强大的Qt一定会给我们的开发带了巨大的方便。而PyQt就是Qt的Python版,和C++版用法基本没变,我选择使用PyQt4(最新是PyQt5),若问我原因,一者是因为我先前学习C++ Qt的时候,用的是Qt4,对Qt4更熟悉,而且可以直接在Qt Creator中查看文档;二者是因为PyQt4比PyQt5要轻一些,毕竟游戏开发用不到那么多功能,所以我们选择实用性更强的PyQt4。如果大家想要了解PyQt4可以先从官方网站下载,文档可以查看Qt C++版文档,使用方法基本没变。

利用Qt开发界面很方便,而且效果还不错:

阅读须知

本系列文章中用到的Python版本是3.4.3,总所周知和2.x是不兼容的,所以大家在学习前请先学习Python3,中文教程地址如下:

http://www.liaoxuefeng.com/wiki/…542c000

上文提及PyQt,它的使用方法可以在Qt官方网站看到,不过是C++版的,可能对于不熟悉C++的同学而言,不易于学习,不过没关系,接下来的文章中我会对其重要API进行讲解,方便大家学习。

为何要开发游戏引擎?

古人云:工欲善其事,必先利其器,在进行游戏开发之前,我们首先需要一个引擎来简化后续的开发。

PyQt虽然可以开发界面,但是不是专门用来写游戏的,所以我们要对它加以封装。由于用惯了lufylegend的语法,所以本次引擎开发准备参考它的语法,也就是flash的语法。虽然flash最近被骂得狗血淋头,不过我倒觉得flash中提供的类和开发思想真的很适合做游戏,所以“见贤思齐焉”,把这种优点传承下去。



预告:后续文章将开始一步一步构建一个可供游戏开发的Python库件,下一篇我们先来实现显示图片。


欢迎大家继续关注我的博客

转载请注明出处:Yorhom’s Game Box

http://blog.csdn.net/yorhomwang

时间: 2024-12-29 00:55:01

Python游戏引擎开发(一):序的相关文章

Python游戏引擎开发(四):TextField文本类

上一章我们主要介绍了显示对象和如何显示图片.本章来讲述显示文本. 以下是本系列教程前几章地址,在阅读本篇正文之前,请务必阅读前几章内容. Python游戏引擎开发(一):序 Python游戏引擎开发(二):创建窗口以及重绘界面 Python游戏引擎开发(三):显示图片 文本类TextField 使用过flash的朋友都知道,这个类其实不光是显示文本用的,还可以用于显示输入框.我这里就只实现一些基础实用的功能,以后有时间了慢慢拓展.和上一章一样,TextField是一个显示对象,继承自Displa

Python游戏引擎开发(六):动画的小小研究

今天我们来研究动画,其实这个动画就是一个Sprite+Bitmap的结合体.不造什么是Sprite和Bitmap?=__=#看来你是半路杀进来的,快去看看前几章吧: Python游戏引擎开发(一):序 Python游戏引擎开发(二):创建窗口以及重绘界面 Python游戏引擎开发(三):显示图片 Python游戏引擎开发(四):TextField文本类 Python游戏引擎开发(五):Sprite精灵类和鼠标事件 动画的原理 一般而言,我们的动画是用的这样一种图片: 播放动画的时候,像播放电影一

Python游戏引擎开发(三):显示图片

在上一章中我们讲了如何创建窗口以及对界面进行重绘.可能有朋友不理解为什么要进行全窗口的重绘呢?我在这里可以大致讲一下原因: 由于我们的游戏是动态的,所以我们每次更改数据后(例如播放动画时切换图片),要让界面显示更改后的结果,一般的想法是:首先进行擦除原先要改的地方,然后再把变更的内容画出来.不过这个看似简单,如果遇到了重叠放置的对象就麻烦了,比如说A在B的下面,我们要更改A,那么把A擦掉后,B也会被擦掉,原因在于我们的画布是2D的,无法控制Z方向的擦除.这样一来,我们除了重画A还要再把B画上去.

Python游戏引擎开发(二):创建窗口以及重绘界面

开发本地应用之前,我们得先有个窗口,用于显示界面.其次我们还得实现重绘机制,使游戏不停地刷新,达到动态化的目的.所以我们的引擎开发的第一个阶段就是创建窗口和重绘界面. 以下是之前的文章: Python游戏引擎开发(一):序 Qt的渲染机制 在上一章<序>中我们讲到本次开发用到了PyQt,也就是Qt的Python版.在开始实现引擎功能之前我们要先了解一下Qt,这里先了解渲染机制. 在Qt中,绘画用到的类叫做QPainter,顾名思义,就是个画家类吧.在这个类中,提供了非常多的方法用于操控这个&q

Python游戏引擎开发(五):Sprite精灵类和鼠标事件

本次来实现Sprite类和鼠标事件. 说起这个Sprite啊,涉及过2D游戏研究领域的看官应该都听说过它.它中文原意是"精灵",不过在不同人的眼中,它所表示的意义不同.比如说在cocos2d中,它可以是一张图片.不过在flash中,Sprite是一个类似于"层"的家伙.当然你把它定义为层并不是很准确,实际上它是一个含显示列表的显示对象.什么意思呢?各位看官如果阅读了前面的章节,那对显示列表并不陌生.它说白了就是一个包含其他显示对象的容器. 那也许你会想,为什么要有这

25 个超棒的 HTML5 &amp; JavaScript 游戏引擎开发库

25 个超棒的 HTML5 & JavaScript 游戏引擎开发库 就像在汽车中,引擎完成主要的工作,使汽车看起来不可思议.游戏引擎同理,游戏开发者完成细节的工作,使游戏看起来真实.吸引人眼球.游戏引擎负责其余的事情.早期,游戏开发者通常从草图做起,花费高昂,且不容易获利.为了让游戏开发更加简单容易,主要的开发者开始授权他们的基本游戏引擎,如 Unreal.而且,随着手机和平板游戏的出现,所需预算比以前更少,对 JAVASCRIPT 和HTML5 游戏引擎的需求大增. 如果你是一个游戏开发者,

libgdx游戏引擎开发笔记(四)文字显示BitmapFont

http://www.tuicool.com/articles/iAJbIj 由于Libgdx底层是用OpenGL实现的,所以Libgdx是可以支持中文的,在libgdx中的汉字都是通过贴图的方式显示,使用 BitmapFont和SpriteBatch 组合来完成文字的绘制,构造BitmapFont时需要一个描述文字构成的fnt文件,和一个提供文字图片的png文件.因此显示中文,归根结底就是读取一个包含中文信息的 .fnt文件 和相应的 .png文件 并展示出来的问题. 1.如何生成这两个文件那

使用Laya引擎开发微信小游戏(上)

本文由云+社区发表 使用一个简单的游戏开发示例,由浅入深,介绍了如何用Laya引擎开发微信小游戏. 作者:马晓东,腾讯前端高级工程师. 微信小游戏的推出也快一年时间了,在IEG的游戏运营活动中,也出现了越来越多的以小游戏作为载体运营的活动类型,比如游戏预约,抢先试完等等,都收到了非常良好的效果. 在支持微信小游戏的游戏引擎中,Cocos,Egret,Laya都对小游戏的开发提供了很多强大的支持.前段时间正好抽空研究了一下这块的内容,现做一个总结,针对如何使用Laya引擎开发微信小游戏给大家做一下

转:十大开源游戏引擎深入比较

在国内外,业界盛传有十大开源游戏引擎,分别是OGRE.Irrlicht.Panda3D.Crystal Space.jME.Blender Game Engine.Reality Factory.The Nebula Device 2.RealmForge.OpenScene- Graph.我们对这十款开源游戏引擎深入进行分析. (1) OGRE是面向对象图形渲染引擎(Object-Oriented Graphics Rendering Engine)的缩写,采用C++开发,以MIT许可证发布,