前言
基础模块的知识通过这么长时间的学习已经有所了解,更加深入的话需要通过完成各种项目,在这个过程中逐渐学习,成长。
我们的下一步目标是完成python crash course
中的外星人入侵项目,这是一个2D游戏项目。在这之前,我们先简单学习一下pygame
模块。
私信我发送消息python资料,领取python crash course
中文版PDF。
pygame
Pygame是一个开源的Python多媒体开发库,专门用于开发2D游戏。它是Python编程语言的一个扩展,基于 SDL (Simple DirectMedia Layer) 库,提供了丰富的功能来处理图形、声音、事件处理等游戏开发所需的基本要素,使得创建游戏变得更加简单直接。
简单了解一下模块特性和功能:
- 图形渲染:Pygame提供了基本的绘图功能,如绘制线条、圆形、矩形等,以及加载和显示图像。
- 事件处理:它允许程序响应用户输入,如键盘按键、鼠标移动和点击等事件。
- 声音效果和音乐:支持加载和播放声音文件,包括背景音乐循环播放。
- 碰撞检测:提供了简单的碰撞检测功能,帮助游戏判断物体之间的接触和碰撞。
- 定时器和延时:可以设置定时器来执行周期性任务或控制游戏帧率。
- 视频播放:虽然不是主要功能,Pygame也能处理一些基本的视频播放需求。
- 面向对象设计:Pygame的API设计鼓励面向对象编程,便于构建复杂的交互式游戏元素。
- 跨平台:Pygame可在多个操作系统上运行,包括Windows、Mac OS X和各种Linux发行版,这使得开发的游戏具有良好的可移植性。
pygame模块的简单易学的同时功能也十分强大,是我们初级python开发者学习开发游戏的热门选择,同样也有许多具备丰富开发经验的开发者用于快速原型制作或者小型项目的实现。
常用函数
主要介绍一下pygame或者库中处理其他内容的模块的常用函数。
- 基础函数
- 显示与窗口管理
- 事件处理
- 图像处理
- 颜色与字体
- 输入处理
- 时间与帧率控制
- 音频
这些都是比较基础的功能,但是这些功能已经满足我们编写一些小的游戏项目了。
基础函数
- init()。
初始化函数,通常在程序开始时调用。这个函数没啥,你游戏启动模块第一行写上就是了。 - quit()
关闭并清理所有pygame模块,通常在程序结束的时候调用。这个函数也没啥,就是你需要关闭你的游戏程序的时候,不要忘记调用这个函数就行。
import pygamepygame.init()
pygame.quit()
没有很特殊的地方,就不执行了。
这两个函数就是pygame中初始化模块功能和清理模块的函数,是必不可少的两个函数。
显示与窗口管理
pygame允许你新建一个窗口,并对窗口进行管理。这些功能主要依赖于pygame.display模块。
- pygame.display.init()
功能:初始化显示模块 - pygame.display.quit()
功能:退出显示模块 - pygame.display.set_mode
功能:创建并返回一个新的显示窗口。- 参数说明
- resolution (tuple) - 这是窗口的尺寸,通常以像素为单位的一个二元组 (width, height)。例如 (800, 600) 表示创建一个宽800像素、高600像素的窗口。
- flags (int, 可选) - 控制窗口的显示模式和其他特性。常见的标志位包括但不限于:
- pygame.FULLSCREEN - 全屏模式。
- pygame.RESIZABLE - 窗口大小可调整。
- pygame.NOFRAME - 无边框窗口。
- pygame.DOUBLEBUF - 启用双缓冲,提高绘图性能。
这些标志位可以通过按位或(|)操作组合使用。
- depth (int, 可选) - 指定颜色的位深度,通常不需要设置,默认值足够大多数情况使用。
- display (int, 可选) - 指定在哪个显示器上创建窗口,对于多显示器系统可能有用。默认值为0,表示主显示器。
- vsync (int, 可选) - 垂直同步选项,控制画面刷新是否与显示器的刷新率同步。0 表示不启用垂直同步,非零值(通常是1)表示启用。在某些版本的 pygame 中,此参数可能不被支持或有不同实现。
- 返回值
函数返回一个 pygame.Surface 对象,这是窗口的显示 Surface。你可以在这个 Surface 上进行绘图操作,如绘制图像、文本、形状等。所有对这个 Surface 的更改,最终都需要通过 pygame.display.flip() 或 pygame.display.update() 来更新到屏幕上。
- 参数说明
简单使用一下:
# 最基础的用法
pygame.display.set_mode((800, 600))# 点击关闭退出程序,这个后面再讲,代码可以先写上。
while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()exit()
执行发现弹出一个了pygame window。这个就是我们上面打开的窗口。然后使用其他参数创建窗口看看效果,这里不再赘述。
- pygame.display.set_caption(title)
功能:设置窗口的标题栏文本。
参数:title - 窗口标题字符串。
返回值:无
pygame.display.set_caption("明月望秋思")
窗口名称已经变成了我们设置的名称,不是默认的pygame window。
- pygame.display.get_caption()
功能:获取当前窗口的标题。
参数:无
返回值:一个包含当前窗口标题的元组。
title = pygame.display.get_caption()
print(title)
6. pygame.display.set_icon(icon_surface)
功能:设置窗口的图标。
参数:icon_surface - 作为图标的 pygame.Surface 对象。通常使用pygame.image.load来加载图标。
返回值:无
# 加载图标图像
icon = pygame.image.load('1.png')# 确保图标尺寸适合(通常推荐16x16, 32x32, 48x48, 64x64等)
# 如果需要,可以调整图标大小
icon = pygame.transform.scale(icon, (64, 64))
pygame.display.set_icon(icon)
可以看到窗口的图标已经发生了改变。
设置图标的时候使用了部分图片处理的函数,这里后面再仔细讲。
- pygame.display.flip()
功能:更新整个显示表面。
参数:无
返回值:无
这个函数简单来说就是刷新整个窗口,通常在游戏循环中用与更新窗口屏幕,单独调用这个函数没啥意义,这里就不展示了。
- pygame.display.update(rectangle=None)
功能:更新指定区域或整个屏幕。
参数:
rectangle - 要更新的区域的矩形(可选)。如果不提供,则更新整个屏幕。
返回值:无
这个函数和flip函数类似,但是这个函数可以单独更新某个矩形区域。这里也不单独示例,后面用到再讲。
-
pygame.display.get_surface()
功能:获取当前的显示 Surface。
参数:无
返回值:一个 pygame.Surface 对象,代表当前的显示窗口。 -
pygame.display.iconify()
功能:最小化窗口。
参数:无
返回值:无 -
pygame.display.toggle_fullscreen()
功能:切换窗口的全屏状态。
参数:无
返回值:无 -
pygame.display.Info()
功能:获取当前显示设备的信息。
参数:无
返回值:一个包含显示设备信息(如分辨率、色彩深度等)的 DisplayInfo 对象
info = pygame.display.Info()
print(info)
这个函数和前面的9,10,11三个一样,都没啥特殊的点要说,有用到再仔细介绍。
以上12个函数,就是关于pygame中窗口的常见操作了。
结尾
pygame常用的模块还有好几个,整体的顺序是窗口操作,图形绘制和图片填充,事件监听和输入操作,音频操作,字体颜色和时间处理。这些学完就正式开始学习外星人入侵项目。
作业
- 创建一个窗口,命名和设置图片。设置全屏,设置可切换并进行切换。