> 1、pygame介绍和安装
Pygame 是一个专门用来开发游戏的 Python 模块,主要为开发、设计 2D 电子游戏而生,
它是一个免费、开源的第三方软件包,支持多种操作系统,具有良好的跨平台性(比如 Windows、Linux、Mac 等)。
Pygame 是 Pete Shinners 在 SDL(Simple DirectMedia Layer,一套开源的跨平台多媒体开发库)
基础上开发而来,其目的是取代 PySDL
```
安装方法
pip install pygame
```
> 2、写一个demo
```python
#导入所需的模块
import sys
import pygame
# 使用pygame之前必须初始化
pygame.init()
# 设置主屏窗口
screen = pygame.display.set_mode((400,400))
# 设置窗口的标题,即游戏名称
pygame.display.set_caption('hello world')
#加载一张图片作为背景
background = pygame.image.load(r'H:\temp\dw.png')
#背景图设置成屏幕小
background = pygame.transform.scale(background,(400,400))
#获得显示对象的rect区域坐标
bgRect = background.get_rect()
# 引入字体类型
f = pygame.font.Font('C:/Windows/Fonts/simhei.ttf',50)
# 生成文本信息,第一个参数文本内容;第二个参数,字体是否平滑;
# 第三个参数,RGB模式的字体颜色;第四个参数,RGB模式字体背景颜色;
text = f.render("这里是文字",True,(255,0,0),(0,0,0))
#获得显示对象的rect区域坐标
textRect =text.get_rect()
# 设置显示对象居中
textRect.center = (200,200)
# 将背景图绘制到主屏幕 Screen 上。
screen.blit(background,bgRect)
# 将准备好的文本信息,绘制到主屏幕 Screen 上,并且在背景之上。
screen.blit(text,textRect)
# 固定代码段,实现点击"X"号退出界面的功能,几乎所有的pygame都会使用该段代码
while True:
# 循环获取事件,监听事件状态
for event in pygame.event.get():
# 判断用户是否点了"X"关闭按钮,并执行if代码段
if event.type == pygame.QUIT:
#卸载所有模块
pygame.quit()
#终止程序,确保退出程序
sys.exit()
pygame.display.flip() #更新屏幕内容
```
![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/b5cc7254b6ab4bee8511607ddc5fce3f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGlhbmdibG9n,size_13,color_FFFFFF,t_70,g_se,x_16)
> 3、基础知识之显示模块display:
Pygame 使用pygame.display显示模块中的方法创建游戏的主窗口:
```python
screen = pygame.display.set_mode(size=(),flags=0)
```
上述函数有两个参数常用参数:
size:元组参数,用来设置主窗口的大小
flags:功能标志位,表示创建的主窗口样式,比如创建全屏窗口、无边框窗口等
创建主窗口后,就可以将其他图像添加上去,使用blit方法
```python
scrren.blit(source, dest, area=None, special_flags = 0)
```
下面对上述参数做简单的介绍:
source:表示要粘贴的 Surface 对象。
dest:主窗口中的一个标识的坐标位置,可以接受一个 (x,y) 元组,或者 (x,y,width,height) 元组,也可以是一个 Rect 对象;(主窗口(screen)相当于游戏程序中尺寸最大的 Surface 对象,在这个最大的“画布”中,我们还可以添加其他“小”的 Surface 对象,这些对象以矩形的形式存在于主窗口)
area:接受一个 Rect 对象,默认为 None,如果提供该参数则相当于抠图操作,即在屏幕的指定区域显示想要的内容;
special_flags:可选参数,用于指定对应位置颜色的混合方式,参数值有 BLEND_RGBA_ADD、BLEND_SUB 等。如果不提供该参数的情况下,默认使用 source 的颜色覆盖 screen 的颜色。
>4、基础知识子图像模块Surface :
Pygame 针对文本、图像、颜色提供了不同模块来生成它们各自的 Surface 对象。Surface 模块是Pygame 中专门用来新建图像的,通过该模块可以创建一个 Surface 对象,语法格式如下:
```
Surface=pygame.Surface(size=(width,height),flags,depth)
```
参数函数如下:
size:表示 Surface 对象的矩形区域大小;
flags:功能标志位,有两个可选参数值 HWSURFACE 和 SPCALPHA,前者代表将创建的 Surface 对象存放于显存中,后者表示让图像的每一个像素都包含一个 alpha 通道
depth:指定像素的颜色深度,默认为自适应模式,由 Pygame 自动调节。
Surface 模块提供的处理图像主要方法有:
```
pygame.Surface.blit() 将一个图像(Surface 对象)绘制到另一个图像上
pygame.Surface.convert() 修改图像(Surface 对象)的像素格式
pygame.Surface.fill() 使用纯色填充 Surface 对象
```
>除了使用 Surface 模块新建图像外,还可以从外部加载图像
pygame.image.load("图片路径").convert()
上述方法将被加载的图像作为 Surface 对象来使用,此处使用 convert()来转换被加载图片的像素格式,是为了提升 Pygame 对图片的处理速度,该操作能够保证图像的像素格式与图片的显示格式是相同的。
> 5、pygame模块transform图片转换:
pygame.transform 模块允许对加载、创建后的图像进行一系列操作,比如调整图像大小、旋转图片等操作,常用方法有:
```
pygame.transform.scale() 将图片缩放至指定的大小,并返回一个新的 Surface 对象。
pygame.transform.scale(image_surface,(100,100)) 接收一个surface对象和一个宽高的元组
pygame.transform.rotate() 将图片旋转至指定的角度。
pygame.transform.rotate(image_surface,90) 将图片旋转90度。
pygame.transform.rotozoom() 以角度旋转图像,同时将图像缩小或放大至指定的倍数。
pygame.transform.rotozoom(image_surface,90,0.5) 比上一个方法多了一个参数(缩放倍数)
```
>