用Python和Pygame写游戏-从入门到精通(1)
来源:互联网 发布:lca类似算法 编辑:程序博客网 时间:2024/06/03 19:39
安装Pygame
你可以从www.pygame.org下载Pygame,选择合适你的操作系统和合适的版本,然后安装就可以了(什么,你连Python都没有?您可能是不适合看这个系列了,不过如果执意要学,很好!快去www.python.org下载吧!)。 一旦你安装好,你可以用下面的方法确认下有没有安装成功:
你的版本可能和我不同,这没关系。我所翻译的这本书上的版本还是1.7.1的……所以如果有些过时的不合时宜的东西,千万不要客气请指出来!
若说为什么要介绍这么一个“过时”的东西,真正的知识是不会过时的,只有技术才会。这里主要是依靠Pygame来介绍的游戏开发的方方面面,并不是说咱就可以靠这个做出什么伟大的游戏了(当然也不是说不可以)!
另外说一下,就产品而言,Pygame更致力于2D游戏的开发,也就是说,你可以用Pygame写一个植物大战僵尸,但是写一个魔兽世界则相当困难……请不要做出鄙夷的目光,底层的东西永远是相通的,而且对于新手而言,从简单的2D入手才是正途。
使用Pygame
Pygame有很多的模块,下面是一张一览表:
有些模块可能在某些平台上不存在,你可以用None来测试一下。
新的Hello World
学程序一开始我们总会写一个Hello world程序,但那只是在屏幕上写了两个字,现在我们来点更帅的!写好以后会是这样的效果:
这个程序需要两张图片,你可以在这篇文章最后的地方找到下载地址,虽然你也可以随便找两张。为了达到最佳效果,背景的 sushiplate.jpg应要有640×480的分辨率,而光标的fugu.png大约应为80×80,而且要有Alpha通道(可以简单理解为png格式文件,即photoshop中的多图层文件格式,此类文件和jpg文件的差别在于可以使图片背景透明化)。
注意:代码中的注释我使用的是中文,如果执行报错,可以直接删除。
游戏中我已经为每一行写了注释,另外如果打算学习,强烈建议自己动手输入一遍而不是复制粘贴!
稍微讲解一下比较重要的几个部分:
set_mode会返回一个Surface对象,代表了在桌面上出现的那个窗口,三个参数第一个为元祖,代表分 辨率(必须);第二个是一个标志位,具体意思见下表,如果不用什么特性,就指定0;第三个为色深。
convert函数是将图像数据都转化为Surface对象,每次加载完图像以后就应该做这件事件(事实上因为 它太常用了,如果你不写pygame也会帮你做);convert_alpha相比convert,保留了Alpha 通道信息(可以简单理解为透明的部分),这样我们的光标才可以是不规则的形状。
游戏的主循环是一个无限循环,直到用户跳出。在这个主循环里做的事情就是不停地画背景和更新光标位置,虽然背景是不动的,我们还是需要每次都画它, 否则鼠标覆盖过的位置就不能恢复正常了。
blit是个重要函数,第一个参数为一个Surface对象,第二个为左上角位置。画完以后一定记得用update更新一下,否则画面一片漆黑。
这是一个最最大概的Pygame程序的印象,接下来我们会学习更多深层次的东西,并且把各条语句都真正读懂。
>> 用Python和Pygame写游戏-从入门到精通(2)
本次使用的两张图片资源:
背景:sushiplate.jpg
光标:fugu.png
- 用Python和Pygame写游戏-从入门到精通
- 用Python和Pygame写游戏-从入门到精通
- 用Python和Pygame写游戏-从入门到精通
- 用Python和Pygame写游戏-从入门到精通
- 用Python和Pygame写游戏-从入门到精通
- 用 Python 和 Pygame 写游戏 - 从入门到精通
- 用Python和Pygame写游戏-从入门到精通(1)
- 用Python和Pygame写游戏-从入门到精通(1)
- 用Python和Pygame写游戏-从入门到精通(1)
- 用Python和Pygame写游戏-从入门到精通(1)
- 用Python和Pygame写游戏-从入门到精通(实战一:涂鸦画板1)
- 用Python和Pygame写游戏-从入门到精通(1)
- 用Python和Pygame写游戏-从入门到精通(1)
- 用Python和Pygame写游戏-从入门到精通(实战一:涂鸦画板1)
- 用Python和Pygame写游戏-从入门到精通(1)
- 用Python和Pygame写游戏-从入门到精通(1)HelloWorld
- 用Python和Pygame写游戏-从入门到精通(1)
- 用Python和Pygame写游戏-从入门到精通(13)简单的AI游戏
- echarts(三)折线柱状图
- 16
- 加密解密算法java实现(6)—RSA 分段加解密的例子
- HTML常用的标签
- mac下使用secureCRT
- 用Python和Pygame写游戏-从入门到精通(1)
- Service Intent must be explicit的解决方案
- js实现路由跳转
- EF6中CodeFirst使用MySQL
- qt5.9.1 + vs2017安装
- js自定义插件注意
- java到底是值传递还是引用传递?
- ubuntu 14.04安装 python3.5.2+ keras 和 tensorflow
- 澶嶆潅鍊紇s鍘熷?鍊-amp;&鍐呭瓨绌洪棿 鈥-鎴戜滑鐨凧avaScript涓栫晫瑙傦紙涓€锛-- OkayChen