ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:205.18KB ,
资源ID:4518892      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4518892.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于Python的Pygame框架研究.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于Python的Pygame框架研究.docx

1、基于Python的Pygame框架研究齐 齐 哈 尔 大 学 毕业设计(论文)题 目 基于Python的Pygame框架研究 学 院 计算机与控制工程学院 专业班级 计本111 学生姓名 王攀拓 指导教师 赵鑫 成 绩 2015 年 06 月 19 日摘 要该论文论述了Python语言中Pygame库的框架结构和一些常用的该库的API,使用Pygame库进行2D游戏开发时需要注意的事项,以及进行2D游戏开发的常用技巧,站在开发者的角度,理论系统的讲解了Pygame游戏开发中的使开发技巧。本论文旨在帮助入门级Pygame游戏开发者能够快速的适应和熟悉该框架的开发规范,能够迅速的使用Pygame框

2、架进行相应的游戏开发。 这个Pygame框架是一个对所有程序员开放的Python库。Pygame作为Python语言的扩展,它的所有书写规范都完全按照Python的语法规则来进行设计和开发。而作为一个开放的语言库,意味着开发者能够更多的看到底层代码的运行原理,甚至修改底层代码从而对开发者自身的程序进行优化,当然着所有都得建立在开发者熟悉Python语言的基础上。本论文站在理论的高度对Python下的Pygame框架进行了全面详细的介绍和说明,还有更进一步游戏开放方面的技术指导,作为Python入门级的介绍,本论文足以满足Pygame初学者的学习需求。关键字:Pygame;框架;游戏开发;源代码

3、开放AbstractThis paper discusses the framework Pygame Python language library and the library some common API, matters need attention when using Pygame library 2D game development, as well as common 2D game development skills, developers perspective is standed , system theory to explain the Pygame gam

4、e development make development skills。 This paper aims to help entry-level Pygame game developers to quickly adapt and become familiar with development specifications of the framework can quickly use Pygame game development framework accordingly。The framework is running under the Python language an

5、opened source runtime. Pygame Python as an extension language, its all written specifications are fully in accordance with the rules of grammar Python to carry out design and development。 The library as an opened language, meaning that developers can see more of the operating principle underlying co

6、de, or even modify the underlying code so developers optimize their programs, of course, with all the familiar developer had to build in language Python basis.In this paper, at the height of the theoretical framework for Python Pygame under a comprehensive detailed introduction and description of th

7、e game as well as a further opening up of technical guidance, as Python entry-level introduction, this paper is sufficient to meet the learning needs of beginners Pygame 。Key words:Pygame;Frame;Game Development; Open source第1章 绪论电子游戏自上个世纪诞生以来,以着不可思议的速度发展着,从最初的按钮丢硬币简单的游戏到如今的模拟的视频游戏,电子游戏从最初的纯娱乐产品到现在的游

8、戏行业,他的生命力越发的旺盛和持久,甚至游戏行业可以在美国经济萧条的时候力挽狂澜而成为主要产业。诚然,所有的游戏开发都离不开游戏开发人员的辛勤耕耘,而支撑这些繁荣景象的正式一行行的程序代码,优秀的代码才能生产出令人满意的游戏。但是作为世界级的前端技术,由于技术的封闭,程序开发始终只能是少数高端技术员的天下,在保护技术不扩散的同时,也大大的限制了程序开发的创新和发展,毕竟智慧藏于群众。而Python语言的出现,正是有力的打破了程序开发的技术壁垒,开源的程序语言为更多的项目开发提供了更多的语言选择,而开源语言的有点也在这体现,各种方便的接口API和别人书写好的库源代码更好的方便了开发人员的技术选择

9、,从而加快了开发人员的开发进度,而所有的这一切正是与当今要求速度的市场需求不谋而合。作为开源语言的领军人物,Python语言正以着势不可挡的势头冲破并领军整个IT开发行业。Pygame是Python下的一个开源游戏框架,继承了Python开源、快速的优点,还增加了更多的游戏开发的API,使得2D游戏开发进度大大的加快.11 课题研发的目的与意义告诉的经济发展给我们带来的不仅仅是生活水平的提高,增加的生活压力使得人们在日常上班之余需要更多的娱乐项目来放松自己.无论是传统的服务行业还是新兴的娱乐行业都是旨在为大众提供一种消遣时间放松自己的方式,而电子游戏的出现更是给传统的消费市场注入了一种前所未有

10、的新鲜活力。从简单的按钮游戏到模拟逼真的视频游戏,不断提高的游戏开发技术给人们带来了越来越丰富的游戏体验。但是,随着移动设备的增加和人们加快的生活节奏,“小轻快”的移动端游戏席卷了整个游戏市场,例如疯狂的小鸟、飞机大战等上手速度快、画面精美的2D游戏引来不少玩家的疯狂追捧。伴随着玩家需求的迅速变化以及游戏市场的时间效应,游戏的开发周期和开发效率成为众多游戏开发者的热枕对象。Python语言作为一种开源的非编译语言,强大的可扩展性以及简单的语法结构迅速的走入了游戏开发者的视野。而Python下的Pygame开源库就是这样一个能够承载游戏开发程序员开发效率的这样一个开源的可扩展的库。作为一个开源的

11、游戏开发库,Pygame为游戏开发工作者提供了很多方便的接口API,借助这些API大大的缩短了开发周期,减少了游戏的研发成本。手游搜索量XX搜索量如下图所示:图11 手游搜索量作为新兴的Python开源语言,Python近四年的XX搜索量如下图所示:图12 python搜索量12 可行性分析Python是一门开源的语言,其对平台的支持性表现的较为出色,目前市面上流行的windows系列、MAC系列甚至移动设备的Android系统都提供良好的平台支持.所以对游戏开发者而言,选择Python语言来开发游戏源代码就不用考虑程序代码不同平台的兼容性。Pygame作为Python下的开源库,不仅良好的继

12、承Python特有的语言优势,诸如语法简单、数据类型强大、API操作简单、面向对象的编码方式云云,还增加了自己特有的框架优势,提供的像pygame。cdrom光驱模块能够直接调用设备光驱从而大大减少了程序开发人员代码编写量。当然,Pygame还有很多的特别方便的模块函数来提供相应的技术支持.对于玩家来讲,一个游戏首当其冲的应该是游戏画面是否符合他们的口味,而轻量级的Pygame库对于画面渲染的支持更是绰绰有余,尤其是针对2D游戏开发来讲,Pygame在这个方面表现的甚至比其他语言表现的更加优秀,而这也正是选择Pygame来进行2D游戏开发的最有利的技术支持.总上所述,无论是Pygame库的技术

13、支持,还是对游戏开发效率的考虑,Pygame在2D游戏开发方面都有着无比天然的优势存在,而这些正式本文对于Pygame框架研究的理论和实践动机。13 国内外研究现状Python从诞生之初就以其简单的语法、良好的易读性、开放的可扩展性吸引了大批的程序员纷纷学习使用,随之而来的,更多的国外大学机构使用Python来进行计算和授课,甚至许多的知名大学吧Python语言作为程序员入门级别的必学语言。比如说麻省理工学院的计算机科学与编程导论、卡耐基梅隆大学的编程基础都用Python语言讲授,还有很多的科学机构也在采用Python来进行大型的科学计算,众望所归,Python语言在科学计算方面表现的非常优异

14、。Pygame作为Python的优秀的扩展库之一,也吸引了越来越多的开发者使用Pygame来进行游戏开发.随着Python语言的流行,更多的游戏开发者将加入Pygame开发游戏者的大军中.相对于国外对Pygame研究的热火朝天,国内则显得比较冷淡,甚至市场上都没有一本完整的介绍Pygame框架的指导书,所有的有关Pygame的资料只能从Pygame的官方网站的文档里来获取,但这些远远不能够满足国内一线游戏开发人员的开发需求。本文立足Pygame的官方文档为技术支持,加上自己对游戏开发的理解,全面而系统的对Pygame框架进行介绍和讲解,从而来填补国内这个方面的就属空白,希望能对更多的游戏开发人

15、员更大的启发。第2章 Pygame基础对于任何的开发游戏而程序员来讲,对开发语言的了解一定要有基本的了解,正所谓兵马未动粮草先行,本章节就简单的介绍一下Pygame相关的开发需求和Pygame的语言基础语法。2.1 Pygame来自PythonPython作为现代编程语言的一种,也是一种面向对象的语言,由于它的非编译性而且更多的是一种解释性语言,可以很好的包装进其他的语言种类,具有这样的性质,我们可以称它为胶水语言.Python俨然成为一种更高层次的通用解释型的语言种类,正是由于这些特征,使得它能够跻身成为目前全世界范围内最受欢迎的编程语言之一。即使我们更多的称呼它为脚本语言,但是也是有很多的

16、大型项目采用Python语言来进行架构,比如豆瓣网、Google的后台等等.Python的特点可以归类为已下几个特征:1.简单易学:Python的关键字较少,结构固定且简单,语法相对简单,很快就能学会。2。可读性强:Python代码定义的更清晰.3.维护简单:Python的源代码维护起来非常方便.4.丰富的标准库:Python的最吸引人的地方就是平台兼容性好,可兼容windows和MAC等平台.5。即时调试:人机的交互是即时展现的,可在控制台输入即执行。6。黏合性好:多种硬件平台的Python接口都相同,硬件黏合性表现优异。7.易于扩展:程序员可以根据需要来添加任意低层次的库。8。良好的数据库

17、支持:目前市面上所有的商业数据库都有Python支持的接口。9.支持GUI编程:GUI编程的良好支持可以一直多种平台。作为一个开源的语言种类,Python被全世界的程序员扩展出了各种各样的库,Pygame就是其中之一.Pygame是一种使用SDL(Simple DirectMedia Layer)编写的游戏库,即使SDL是采用C语言进行编写的,不过他也可以采用C+来进行编写和扩展,正如你所见Pygame就是Python下的一个开源的数据库。随着越来越多的优秀的程序员加入Pygame的开发,Pygame的完善性会越来越好。2.2 Pygame环境的要求Pygame作为Python下的一个开源框架

18、,平台的兼容性非常的好,目前市面上流行的几乎所有的操作系统都有很好的支持,随意对平台要求不是很高。而且,作为一个非编译的语言种类,对开发平台的硬件需求也不会有很大的要求,一般的平台配置就满足开发需求。而本文为方便起见所有的代码都运行在windows7下的平台上,其他操作系统例如MAC系统可以参照windows7系统下的操作来进行环境的配置和搭建。2.3 Python语法简介Python设计之初就是是为了语言代码的可读性高度完美。在语言设计之初就考虑到了这点,语言尽量使用其他种类的语言中常见的单词语法,标点符号也是采用其他语言的标点,这样Python代码结构看起来相当美观。有别于静态语言诸如C语

19、言那样大量的重复性语句,也不会有特殊的语法出现显得代码结构不协调。Python采用缩进的强制性代码书写规范使得所有Python的程序员养成优秀的代码书写习惯。采用缩进规则的好处就是,使用缩进的位置来控制代码块的退出和进入 ,而不是其他代码用特殊符号例如花括号来控制语句块。Python的控制语句和其他语言基本类似,主要有以下几种:if语句,当条件成立时运行语句块。和if配和使用的有else和elif。for语句,作为最重要的遍历语句,可以使用for语句便利所有的Python数据结构。while语句,当控制条件为true时,代码块中的代码会循环执行。try语句。except,finally配合tr

20、y语句块使用以此处理程序代码中的异常情况class语句。用于定义类型。def语句。可以进行函数或者类型的自定义。pass语句.慈航代码不执行,以空行执行.assert语句。调试程序时采用此语句来测试运行条件是否满足.with语句。在Python2。6新增的语法语句用来把语句块在一个场景中运行.例如代码块对数据进行加密,退出代码块后即时进行数据解密。yield语句。迭代器时使用,返回值是一个迭代器的元素。就是从Python2。5以来这个语句变成一个运算符.raise语句。制造一个错误。import语句.导入一个模块或包。from import语句。导入包中的某个模块或者导入模块中的某个对象.im

21、port as语句.将导入的对象赋值给一个变量。in语句。判断一个对象是否在一个字符串/列表/元组里.Python语言的表达式和C/C+有许多相同之处.区别只是很少的一部分。主要的大部分算术运算符与C/C+类似。加法或者取正、减法或者取负、乘法、除法、整除、乘方、取补、取模的表示方法使用+, , , /, /, *, , 表示。, 表示右移和左移。, |, 表示二进制的AND, OR, XOR运算。比较两个值时使用, =, =, 分别表示大于、小于、不等于、等于、大于等于、小于等于。在这些运算符里面, , , , pip install pygame卸载包:C:bakpip uninstall

22、 pygame第3章 Pygame模块承载游戏的主题就是游戏的各个模块,这些模块正式组成整个游戏程序的骨头和血肉,只有神企鹅的了解各个模块的功能和用法,才能使我们的游戏程序设计更加的得心应手。3.1 Pygame文件结构作为一个完整的框架,Pygame有着自己的一个标准的文件结构,当然你也可以有自己的文件结构,但常用的规范的文件结构可以加快你的开发进程使得更多的时间用在代码的开发和实现上。一个典型的pygame脚本结构如下:图3-1 文件结构图Pygame的源代码被统一存放在lib目录下,用于声音、图像等相关模块的源代码.至于data就是存放整个游戏的资源文件,例如图像、声音等文件放在这个文件

23、夹里。当然,所有的这些都是为了给一个更好的开发规范,完全可以按照自己的喜好来进行文件的结构设计,本文的所使用的文件结构就以它为模板来进行程序的设计与开发。3。2 事件许多的高级程序的设计语言都支持事件机制,因为模拟现实世界的最重要的特征就是游戏开发者在游戏设计过程中一项重要的任务,更多的事件机制来增加人机交互的亲密度,使得游戏更加的人性化和友好.事件机制就是很好的一例。我们需要事件来来增加我们的游戏友好度。3.2.1 事件机制正如哲学所诉说的那样,世界中最普遍就是事物之间的联系,所有的事物联系在一起才组成了这个现实的世界。无论是个体的状态改变还是移动亦或是某个时间的进展过程中的具体某一个阶段均

24、可以引发一个事件,任何一个事件的产生都会引发另外的事件发生,而这些都会在人的大脑皮层中反应,从而进一步的影响你做出的决策。不管怎么说,所有的反应都会决定我们最终做出一个实质性的决定。下图示例了反应的流程机制:图3-2 事件的流程3。2.2 事件处理函数Pygame中使用处理所有的事件的方法是pygame。event.get(),但这是一个开放的方法,就好比敞开大门允许所有的人随意进出。Pygame在处理这种情况时又给出了pygame.event。wait()方法来控制进出,顾名思义,此方法就是等到一个事件发生后再继续下去,就像限流一样,有门票的一个跟一个才能进入,因为游戏往往是需要动态运作的;

25、而另外一个方法pygame。event。poll()在这个方面做的鼻前两者更好,他会根据现有的事件来返回给程序一个真实的事件,也可以是什么都没有。下表是一个常用事件集:表3-1事件监听函数及功能对应表事件参数事件监听用户按下关闭按钮noneQUITPygame被激活或者隐藏gain, stateATIVEEVENT键盘被按下unicode, key, modKEYDOWN键盘被放开key, modKEYUP鼠标移动pos, rel, buttonsMOUSEMOTION鼠标按下pos, buttonMOUSEBUTTONDOWN鼠标放开pos, buttonMOUSEBUTTONUP游戏手柄(

26、Joystick or pad)移动joy, axis, valueJOYAXISMOTION游戏球(Joy ball)?移动joy, axis, valueJOYBALLMOTION游戏手柄(Joystick)?移动joy, axis, valueJOYHATMOTION游戏手柄按下joy, buttonJOYBUTTONDOWN游戏手柄放开joy, buttonJOYBUTTONUPPygame窗口缩放size, w, hVIDEORESIZEPygame窗口部分公开(expose)?noneVIDEOEXPOSE触发了一个用户事件codeUSEREVENT3.2.3 鼠标事件处理MOUSEMOTION监听鼠标移动事件,当检测到鼠标移动时触发此方法,其中有三个参数:buttons 这个参数包含了三个数字的数组,这三个值分别表示右键、左键、中间的键,如果是1就表示按下,反之为0.pos 当然就是鼠标的位置了。rel 表示此时距离上次鼠标发生时间时的像素距离.和MOUSEMOTION类似的,我们还有MOUSEBUTTONDOWN触发鼠标按下事件MOUSEBUTTONUP触发鼠标弹起事件,看名字就明白是什么意思了。更多时候考虑的是鼠标的点击即按下和弹起,所以这个方法并不常用。它们的参数为:button 没有s,看清楚得,表示操作的某一个按键。pos 同上

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

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