基于Python的Pygame框架研究.docx

上传人:b****6 文档编号:4518892 上传时间:2022-12-01 格式:DOCX 页数:24 大小:205.18KB
下载 相关 举报
基于Python的Pygame框架研究.docx_第1页
第1页 / 共24页
基于Python的Pygame框架研究.docx_第2页
第2页 / 共24页
基于Python的Pygame框架研究.docx_第3页
第3页 / 共24页
基于Python的Pygame框架研究.docx_第4页
第4页 / 共24页
基于Python的Pygame框架研究.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

基于Python的Pygame框架研究.docx

《基于Python的Pygame框架研究.docx》由会员分享,可在线阅读,更多相关《基于Python的Pygame框架研究.docx(24页珍藏版)》请在冰豆网上搜索。

基于Python的Pygame框架研究.docx

基于Python的Pygame框架研究

 

齐齐哈尔大学

 

毕业设计(论文)

题目基于Python的Pygame框架研究

 

学院计算机与控制工程学院

 

专业班级计本111

 

学生姓名王攀拓

 

指导教师赵鑫

 

成绩

2015年06月19日

摘要

该论文论述了Python语言中Pygame库的框架结构和一些常用的该库的API,使用Pygame库进行2D游戏开发时需要注意的事项,以及进行2D游戏开发的常用技巧,站在开发者的角度,理论系统的讲解了Pygame游戏开发中的使开发技巧。

本论文旨在帮助入门级Pygame游戏开发者能够快速的适应和熟悉该框架的开发规范,能够迅速的使用Pygame框架进行相应的游戏开发。

这个Pygame框架是一个对所有程序员开放的Python库。

Pygame作为Python语言的扩展,它的所有书写规范都完全按照Python的语法规则来进行设计和开发。

而作为一个开放的语言库,意味着开发者能够更多的看到底层代码的运行原理,甚至修改底层代码从而对开发者自身的程序进行优化,当然着所有都得建立在开发者熟悉Python语言的基础上。

本论文站在理论的高度对Python下的Pygame框架进行了全面详细的介绍和说明,还有更进一步游戏开放方面的技术指导,作为Python入门级的介绍,本论文足以满足Pygame初学者的学习需求。

关键字:

Pygame;框架;游戏开发;源代码开放

Abstract

ThispaperdiscussestheframeworkPygamePythonlanguagelibraryandthelibrarysomecommonAPI,mattersneedattentionwhenusingPygamelibrary2Dgamedevelopment,aswellascommon2Dgamedevelopmentskills,developer’sperspectiveisstanded,systemtheorytoexplainthePygamegamedevelopmentmakedevelopmentskills。

Thispaperaimstohelpentry-levelPygamegamedeveloperstoquicklyadaptandbecomefamiliarwithdevelopmentspecificationsoftheframeworkcanquicklyusePygamegamedevelopmentframeworkaccordingly。

TheframeworkisrunningunderthePythonlanguageanopenedsourceruntime.PygamePythonasanextensionlanguage,it’sallwrittenspecificationsarefullyinaccordancewiththerulesofgrammarPythontocarryoutdesignanddevelopment。

Thelibraryasanopenedlanguage,meaningthatdeveloperscanseemoreoftheoperatingprincipleunderlyingcode,orevenmodifytheunderlyingcodesodevelopersoptimizetheirprograms,ofcourse,withallthefamiliardeveloperhadtobuildinlanguagePythonbasis.

Inthispaper,attheheightofthetheoreticalframeworkforPythonPygameunderacomprehensivedetailedintroductionanddescriptionofthegameaswellasafurtheropeningupoftechnicalguidance,asPythonentry-levelintroduction,thispaperissufficienttomeetthelearningneedsofbeginnersPygame。

Keywords:

Pygame;Frame;GameDevelopment;Opensource

 

第1章绪论

电子游戏自上个世纪诞生以来,以着不可思议的速度发展着,从最初的按钮丢硬币简单的游戏到如今的模拟的视频游戏,电子游戏从最初的纯娱乐产品到现在的游戏行业,他的生命力越发的旺盛和持久,甚至游戏行业可以在美国经济萧条的时候力挽狂澜而成为主要产业。

诚然,所有的游戏开发都离不开游戏开发人员的辛勤耕耘,而支撑这些繁荣景象的正式一行行的程序代码,优秀的代码才能生产出令人满意的游戏。

但是作为世界级的前端技术,由于技术的封闭,程序开发始终只能是少数高端技术员的天下,在保护技术不扩散的同时,也大大的限制了程序开发的创新和发展,毕竟智慧藏于群众。

而Python语言的出现,正是有力的打破了程序开发的技术壁垒,开源的程序语言为更多的项目开发提供了更多的语言选择,而开源语言的有点也在这体现,各种方便的接口API和别人书写好的库源代码更好的方便了开发人员的技术选择,从而加快了开发人员的开发进度,而所有的这一切正是与当今要求速度的市场需求不谋而合。

作为开源语言的领军人物,Python语言正以着势不可挡的势头冲破并领军整个IT开发行业。

Pygame是Python下的一个开源游戏框架,继承了Python开源、快速的优点,还增加了更多的游戏开发的API,使得2D游戏开发进度大大的加快.

1.1课题研发的目的与意义

告诉的经济发展给我们带来的不仅仅是生活水平的提高,增加的生活压力使得人们在日常上班之余需要更多的娱乐项目来放松自己.无论是传统的服务行业还是新兴的娱乐行业都是旨在为大众提供一种消遣时间放松自己的方式,而电子游戏的出现更是给传统的消费市场注入了一种前所未有的新鲜活力。

从简单的按钮游戏到模拟逼真的视频游戏,不断提高的游戏开发技术给人们带来了越来越丰富的游戏体验。

但是,随着移动设备的增加和人们加快的生活节奏,“小轻快”的移动端游戏席卷了整个游戏市场,例如《疯狂的小鸟》、《飞机大战》等上手速度快、画面精美的2D游戏引来不少玩家的疯狂追捧。

伴随着玩家需求的迅速变化以及游戏市场的时间效应,游戏的开发周期和开发效率成为众多游戏开发者的热枕对象。

Python语言作为一种开源的非编译语言,强大的可扩展性以及简单的语法结构迅速的走入了游戏开发者的视野。

而Python下的Pygame开源库就是这样一个能够承载游戏开发程序员开发效率的这样一个开源的可扩展的库。

作为一个开源的游戏开发库,Pygame为游戏开

发工作者提供了很多方便的接口API,借助这些API大大的缩短了开发周期,减少了游戏的研发成本。

手游搜索量XX搜索量如下图所示:

图1—1手游搜索量

作为新兴的Python开源语言,Python近四年的XX搜索量如下图所示:

图1—2python搜索量

1.2可行性分析

Python是一门开源的语言,其对平台的支持性表现的较为出色,目前市面上流行的windows系列、MAC系列甚至移动设备的Android系统都提供良好的平台支持.所以对游戏开发者而言,选择Python语言来开发游戏源代码就不用考虑程序代码不同平台的兼容性。

Pygame作为Python下的开源库,不仅良好的继承Python特有的语言优势,诸如语法简单、数据类型强大、API操作简单、面向对象的编码方式云云,还增加了自己特有的框架优势,提供的像pygame。

cdrom光驱模块能够直接调用设备光驱从而大大减少了程序开发人员代码编写量。

当然,Pygame还有很多的特别方便的模块函数来提供相应的技术支持.

对于玩家来讲,一个游戏首当其冲的应该是游戏画面是否符合他们的口味,而轻量级的Pygame库对于画面渲染的支持更是绰绰有余,尤其是针对2D游戏开发来讲,Pygame在这个方面表现的甚至比其他语言表现的更加优秀,而这也正是选择Pygame来进行2D游戏开发的最有利的技术支持.

总上所述,无论是Pygame库的技术支持,还是对游戏开发效率的考虑,Pygame在2D游戏开发方面都有着无比天然的优势存在,而这些正式本文对于Pygame框架研究的理论和实践动机。

1.3国内外研究现状

Python从诞生之初就以其简单的语法、良好的易读性、开放的可扩展性吸引了大批的程序员纷纷学习使用,随之而来的,更多的国外大学机构使用Python来进行计算和授课,甚至许多的知名大学吧Python语言作为程序员入门级别的必学语言。

比如说麻省理工学院的计算机科学与编程导论、卡耐基梅隆大学的编程基础都用Python语言讲授,还有很多的科学机构也在采用Python来进行大型的科学计算,众望所归,Python语言在科学计算方面表现的非常优异。

Pygame作为Python的优秀的扩展库之一,也吸引了越来越多的开发者使用Pygame来进行游戏开发.随着Python语言的流行,更多的游戏开发者将加入Pygame开发游戏者的大军中.

相对于国外对Pygame研究的热火朝天,国内则显得比较冷淡,甚至市场上都没有一本完整的介绍Pygame框架的指导书,所有的有关Pygame的资料只能从Pygame的官方网站的文档里来获取,但这些远远不能够满足国内一线游戏开发人员的开发需求。

本文立足Pygame的官方文档为技术支持,加上自己对游戏开发的理解,全面而系统的对Pygame框架进行介绍和讲解,从而来填补国内这个方面的就属空白,希望能对更多的游戏开发人员更大的启发。

 

第2章Pygame基础

对于任何的开发游戏而程序员来讲,对开发语言的了解一定要有基本的了解,正所谓兵马未动粮草先行,本章节就简单的介绍一下Pygame相关的开发需求和Pygame的语言基础语法。

2.1Pygame来自Python

Python作为现代编程语言的一种,也是一种面向对象的语言,由于它的非编译性而且更多的是一种解释性语言,可以很好的包装进其他的语言种类,具有这样的性质,我们可以称它为胶水语言.Python俨然成为一种更高层次的通用解释型的语言种类,正是由于这些特征,使得它能够跻身成为目前全世界范围内最受欢迎的编程语言之一。

即使我们更多的称呼它为脚本语言,但是也是有很多的大型项目采用Python语言来进行架构,比如豆瓣网、Google的后台等等.

Python的特点可以归类为已下几个特征:

1.简单易学:

Python的关键字较少,结构固定且简单,语法相对简单,很快就能学会。

2。

可读性强:

Python代码定义的更清晰.

3.维护简单:

Python的源代码维护起来非常方便.

4.丰富的标准库:

Python的最吸引人的地方就是平台兼容性好,可兼容windows和MAC等平台.

5。

即时调试:

人机的交互是即时展现的,可在控制台输入即执行。

6。

黏合性好:

多种硬件平台的Python接口都相同,硬件黏合性表现优异。

7.易于扩展:

程序员可以根据需要来添加任意低层次的库。

8。

良好的数据库支持:

目前市面上所有的商业数据库都有Python支持的接口。

9.支持GUI编程:

GUI编程的良好支持可以一直多种平台。

作为一个开源的语言种类,Python被全世界的程序员扩展出了各种各样的库,Pygame就是其中之一.Pygame是一种使用SDL(SimpleDirectMediaLayer)编写的游戏库,即使SDL是采用C语言进行编写的,不过他也可以采用C++来进行编写和扩展,正如你所见Pygame就是Python下的一个开源的数据库。

随着越来越多的优秀的程序员加入Pygame的开发,Pygame的完善性会越来越好。

2.2Pygame环境的要求

Pygame作为Python下的一个开源框架,平台的兼容性非常的好,目前市面上流行的几乎所有的操作系统都有很好的支持,随意对平台要求不是很高。

而且,作为一个非编译的语言种类,对开发平台的硬件需求也不会有很大的要求,一般的平台配置就满足开发需求。

而本文为方便起见所有的代码都运行在windows7下的平台上,其他操作系统例如MAC系统可以参照windows7系统下的操作来进行环境的配置和搭建。

2.3Python语法简介

Python设计之初就是是为了语言代码的可读性高度完美。

在语言设计之初就考虑到了这点,语言尽量使用其他种类的语言中常见的单词语法,标点符号也是采用其他语言的标点,这样Python代码结构看起来相当美观。

有别于静态语言诸如C语言那样大量的重复性语句,也不会有特殊的语法出现显得代码结构不协调。

Python采用缩进的强制性代码书写规范使得所有Python的程序员养成优秀的代码书写习惯。

采用缩进规则的好处就是,使用缩进的位置来控制代码块的退出和进入,而不是其他代码用特殊符号例如花括号来控制语句块。

Python的控制语句和其他语言基本类似,主要有以下几种:

if语句,当条件成立时运行语句块。

和if配和使用的有else和elif。

for语句,作为最重要的遍历语句,可以使用for语句便利所有的Python数据结构。

while语句,当控制条件为true时,代码块中的代码会循环执行。

try语句。

except,finally配合try语句块使用以此处理程序代码中的异常情况

class语句。

用于定义类型。

def语句。

可以进行函数或者类型的自定义。

pass语句.慈航代码不执行,以空行执行.

assert语句。

调试程序时采用此语句来测试运行条件是否满足.

with语句。

在Python2。

6新增的语法语句用来把语句块在一个场景中运行.例如代码块对数据进行加密,退出代码块后即时进行数据解密。

yield语句。

迭代器时使用,返回值是一个迭代器的元素。

就是从Python2。

5以来这个语句变成一个运算符.

raise语句。

制造一个错误。

import语句.导入一个模块或包。

fromimport语句。

导入包中的某个模块或者导入模块中的某个对象.

importas语句.将导入的对象赋值给一个变量。

in语句。

判断一个对象是否在一个字符串/列表/元组里.

Python语言的表达式和C/C++有许多相同之处.区别只是很少的一部分。

主要的大部分算术运算符与C/C++类似。

加法或者取正、减法或者取负、乘法、除法、整除、乘方、取补、取模的表示方法使用+,—,*,/,//,**,~,%表示。

〉〉,〈〈表示右移和左移。

&,|,^表示二进制的AND,OR,XOR运算。

比较两个值时使用〉,<,!

=,==,>=,〈=,分别表示大于、小于、不等于、等于、大于等于、小于等于。

在这些运算符里面,~,|,^,&,<<,〉〉必须在整数中使用。

Python的逻辑运算使用and、or、not。

Python对于字符串的处理则采用‘(单引号)和“(双引号)来表示字符串。

Python更为高级的一点,支持对list数据格式的切割,可以保存完整数据或者一部分数据。

对函数的递归、默认参数、可变参数都有很好的支持,但函数的重载并不支持.对象的方法是指绑定到对象的函数.作为动态系统的一种,Python作为一种面向对象的语言支持程序员根据需要进行类型的自定义。

2。

4Pycharm简介

工欲善其事,必先利其器,Python作为一种开源语言它的IDE编辑器有许许多多,其功能和方便程度也是更有千秋.本文所使用的IDE是Pycharm,它是目前Python界比较流行的一个IDE编辑器,其界面和eclipse高度相似,所以使用起来也不会有太大的违和感。

目前Pycharm已经更新到4.5版本,其高度的稳定性和友好的使用界面使得它更瘦Python开发者的青睐。

作为一款IDE,Pycharm完整的具备了普通IDE具有的功能.语法高亮、调试、Project管理、自动完成、智能提示、代码跳转、版本控制、单元测试。

当然,PyCharm还为Django提供了许多的功能模块内,同时对GoogleAppEngine也提供了很好的支持,更让程序员们兴奋的是,PyCharm对IronPython也有很好的支持.

它的安装和常见的软件安装一样,找到Pycharm官网之后下载相应版本安装,安装过程较为简单,在此就不做赘述。

2.6Pygame环境搭建

作为Python下的语言库,安装Pygame之前首先得配置好Python的框架运行环境。

Python的安装比较简单下面就进行介绍。

本书所有的程序代码均在win7系统下编写调试,所以仅列出windows系统下的安装方法,其他操作系统的安装方法可参考https:

//www.python.org/,再次就不一一赘述。

在Windows操作系统上配置Python环境。

首先,从Python的官方网站www。

python.org找对对应的平台版本,注意电脑的操作系统是32位或者64位下载最新的2。

7.9版本,地址是这个:

http:

//www.python。

org/ftp/python/2.7。

9/python-2.7.9.msi然后,运行下载的MSI安装包,在选择安装组件的一步时,勾上所有的组件:

install—python—windows特别要注意选上pip和Addpython.exetoPath,接下来按照提示说明一步一步的安装即可完成安装。

Python默认安装到C盘目录下,如有需要请自行调整,控制台输入如下代码即说明Python已经成功安装,输出65+46的和:

图2-1安装成功示例

ok,安装成功,下面需要配置pip的环境变量,否则,window系统是不认识pip命令的。

下图是pip的安装路径:

图2—3文件路径

下面介绍常用的比较方便的安装方法:

第一步:

浏览器地址栏输入:

https:

//raw.github。

com/pypa/pip/master/contrib/get-pip。

py,直接打开了get—pip。

py的源代码,可以直接把内容拷贝出来,然后在本地创建get-pip.py

第二步:

运行cmd值get-pip.py所在目录,运行代码:

图2—2安装pip

在python中Scripts目录下,将这个目录添加进环境变量中就能完成环境配置!

下面运行pip安装python包:

C:

\bak>pipinstallpygame卸载包:

C:

\bak〉pipuninstallpygame

第3章Pygame模块

承载游戏的主题就是游戏的各个模块,这些模块正式组成整个游戏程序的骨头和血肉,只有神企鹅的了解各个模块的功能和用法,才能使我们的游戏程序设计更加的得心应手。

3.1Pygame文件结构

作为一个完整的框架,Pygame有着自己的一个标准的文件结构,当然你也可以有自己的文件结构,但常用的规范的文件结构可以加快你的开发进程使得更多的时间用在代码的开发和实现上。

一个典型的pygame脚本结构如下:

图3-1文件结构图

Pygame的源代码被统一存放在lib目录下,用于声音、图像等相关模块的源代码.至于data就是存放整个游戏的资源文件,例如图像、声音等文件放在这个文件夹里。

当然,所有的这些都是为了给一个更好的开发规范,完全可以按照自己的喜好来进行文件的结构设计,本文的所使用的文件结构就以它为模板来进行程序的设计与开发。

3。

2事件

许多的高级程序的设计语言都支持事件机制,因为模拟现实世界的最重要的特征就是游戏开发者在游戏设计过程中一项重要的任务,更多的事件机制来增加人机交互的亲密度,使得游戏更加的人性化和友好.事件机制就是很好的一例。

我们需要事件来来增加我们的游戏友好度。

3.2.1事件机制

正如哲学所诉说的那样,世界中最普遍就是事物之间的联系,所有的事物联系在一起才组成了这个现实的世界。

无论是个体的状态改变还是移动亦或是某个时间的进展过程中的具体某一个阶段均可以引发一个事件,任何一个事件的产生都会引发另外的事件发生,而这些都会在人的大脑皮层中反应,从而进一步的影响你做出的决策。

不管怎么说,所有的反应都会决定我们最终做出一个实质性的决定。

下图示例了反应的流程机制:

图3-2事件的流程

3。

2.2事件处理函数

Pygame中使用处理所有的事件的方法是pygame。

event.get(),但这是一个开放的方法,就好比敞开大门允许所有的人随意进出。

Pygame在处理这种情况时又给出了pygame.event。

wait()方法来控制进出,顾名思义,此方法就是等到一个事件发生后再继续下去,就像限流一样,有门票的一个跟一个才能进入,因为游戏往往是需要动态运作的;而另外一个方法pygame。

event。

poll()在这个方面做的鼻前两者更好,他会根据现有的事件来返回给程序一个真实的事件,也可以是什么都没有。

下表是一个常用事件集:

表3-1事件监听函数及功能对应表

事件

参数

事件监听

用户按下关闭按钮

none

QUIT

Pygame被激活或者隐藏

gain,state

ATIVEEVENT

键盘被按下

unicode,key,mod

KEYDOWN

键盘被放开

key,mod

KEYUP

鼠标移动

pos,rel,buttons

MOUSEMOTION

鼠标按下

pos,button

MOUSEBUTTONDOWN

鼠标放开

pos,button

MOUSEBUTTONUP

游戏手柄(Joystickorpad)移动

joy,axis,value

JOYAXISMOTION

游戏球(Joyball)?

移动

joy,axis,value

JOYBALLMOTION

游戏手柄(Joystick)?

移动

joy,axis,value

JOYHATMOTION

游戏手柄按下

joy,button

JOYBUTTONDOWN

游戏手柄放开

joy,button

JOYBUTTONUP

Pygame窗口缩放

size,w,h

VIDEORESIZE

Pygame窗口部分公开(expose)?

none

VIDEOEXPOSE

触发了一个用户事件

code

USEREVENT

3.2.3鼠标事件处理

MOUSEMOTION监听鼠标移动事件,当检测到鼠标移动时触发此方法,其中有三个参数:

buttons–这个参数包含了三个数字的数组,这三个值分别表示右键、左键、中间的键,如果是1就表示按下,反之为0.

pos–当然就是鼠标的位置了。

rel–表示此时距离上次鼠标发生时间时的像素距离.

和MOUSEMOTION类似的,我们还有MOUSEBUTTONDOWN触发鼠标按下事件MOUSEBUTTONUP触发鼠标弹起事件,看名字就明白是什么意思了。

更多时候考虑的是鼠标的点击即按下和弹起,所以这个方法并不常用。

它们的参数为:

button–没有s,看清楚得,表示操作的某一个按键。

pos–同上

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1