Python之pygame,从入门到精通

Python之pygame,从入门到精通Pygame 的历史 Pygame 是一个利用 SDL 库的写就的游戏库 SDL 呢 全名 Simple DirectMedia Layer 是一位叫做 Sam Lantinga 的大牛写的 据说他为了让 Loki 致力于向 Linux 上移植 Windows 的游戏

大家好,欢迎来到IT知识分享网。

Python之pygame,从入门到精通

Pygame的历史

Pygame是一个利用SDL库的写就的游戏库,SDL呢,全名Simple DirectMedia Layer,是一位叫做Sam Lantinga的大牛写的,据说他为了让Loki(致力于向Linux上移植Windows的游戏的一家大好人公司,可惜已经倒闭,唉好人不长命啊……)更有效的工作,创造了这个东东。

SDL是用C写的,不过它也可以使用C++进行开发,当然还有很多其它的语言,Pygame就是Python中使用它的一个库。Pygame已经存在很多时间了,许多优秀的程序员加入其中,把Pygame做得越来越好。

入门Python其实很容易,但是我们要去坚持学习,每一天坚持很困难,我相信很多人学了一个星期就放弃了,为什么呢?其实没有好的学习资料给你去学习,你们是很难坚持的,这是小编收集的Python入门学习资料关注,转发,私信小编“01”,即可免费领取!希望对你们有帮助

Python之pygame,从入门到精通

安装Pygame

可以从 www.pygame.org 下载pygame,选择合适你的操作系统和合适的版本,当然你也可以使用pip安装。安装成功后可用下面方法确认有没有安装成功:

>>>import pygame
pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
>>>复制代码

另外说一下,就产品而言,Pygame更致力于2D游戏的开发,也就是说,你可以用Pygame写一个植物大战僵尸,但是写一个魔兽世界则相当困难……请不要做出鄙夷的目光,底层的东西永远是相通的,而且对于新手而言,从简单的2D入手才是正途。

这是python开发等IT交流群: 提供免费学习资料,多交流学习

使用Pygame

Python之pygame,从入门到精通

有些模块可能在某些平台上不存在,你可以用None来测试一下。

if pygame.transform is None: print 'The transform module is not available!' exit()复制代码

Hello Pygame

刚开始学习一门编程语言的时候总会写一个Hello World程序,但那只是在终端上打印一句话,现在我们来点更帅的!写好以后会是这样子的效果:

Python之pygame,从入门到精通

代码如下:

# _*_ coding: utf-8 _*_ import pygame from pygame.locals import * from sys import exit background_image_filename = 'sea.jpg' mouse_image_filename = 'fish.png' # 初始化pygame,为使用硬件做准备 pygame.init() # 创建一个窗口 screen = pygame.display.set_mode((640, 480), 0, 32) # 设置窗口标题 pygame.display.set_caption("hello,world!") # 加载图片并转换 background = pygame.image.load(background_image_filename) mouse_cursor = pygame.image.load(mouse_image_filename) # 游戏主循环 while True: for event in pygame.event.get(): if event.type == QUIT: # 接收到退出时间后退出程序 exit() # 将背景图画上去 screen.blit(background, (0, 0)) # 获得鼠标位置 x, y = pygame.mouse.get_pos() # 计算光标左上角位置 x -= mouse_cursor.get_width() / 2 y -= mouse_cursor.get_height() / 2 # 将光标画上去 screen.blit(mouse_cursor, (x, y)) # 刷新画面 pygame.display.update() 复制代码

这段代码中用到了两张图片,图片可以从网上找,让后用ps简单修改一下就行。(sea.jpg是背景,fish.png是黄色小鱼,fish.png是我用ps抠出来的,背景是透明的)

下面稍微解释一下比较重要的部分:

set_mode 会返回一个Surface对象,代表了在桌面上出现的那个窗口,三个参数第一个为元祖,代表分 辨率(必须);第二个是一个标志位,具体意思见下表,如果不用什么特性,就指定0;第三个为色深。

Python之pygame,从入门到精通

convert 函数是将图像数据都转化为Surface对象,每次加载完图像以后就应该做这件事件(事实上因为 它太常用了,如果你不写pygame也会帮你做)

convert_alpha 相比convert,保留了Alpha 通道信息(可以简单理解为透明的部分),这样我们的光标才可以是不规则的形状。

游戏的主循环是一个无限循环,直到用户跳出。在这个主循环里做的事情就是不停地画背景和更新光标位置,虽然背景是不动的,我们还是需要每次都画它, 否则鼠标覆盖过的位置就不能恢复正常了。

blit 是个重要函数,第一个参数为一个Surface对象,第二个为左上角位置。画完以后一定记得用 update 更新一下,否则画面一片漆黑。

这就是一个pygame程序的大致流程,接下来我们会学习更多深层次的东西,并且把各条语句都真正的读懂。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/161153.html

(0)
上一篇 2024-12-07 09:45
下一篇 2024-12-07 10:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信