安装与优点
pip install -i https://pypi.doubanio.com/simple/ pygame
1 什么是surface对象
pygame用来表示图像的对象
2 将一个图像绘制到另一个图像上
得到的是一个图像,通过修改图像的像素得到新的组合图像
3 移动图像
截图就是一帧, 帧率指一秒钟可以截多少张图
pygame支持40-200
填充背景,将目标绘制(修改像素)到图像上,然后更新,延迟时间(不然会特别快
4 控制游戏的速度
使用time模块的delay pygame.time.delay(10) 延迟10毫秒再更新
或 clock = pygame.time.Clock() clock.tick(200) 设置为200帧率
5 pygame效率高
学习
1、事件随时都可能发生,比如你在窗口上面移动鼠标,点击鼠标或者敲击键盘的按键,这些都会产生事件,并且信息量是非常大的。Pygame 的做法就是将这所有产生的事件都放在一个叫做 事件队列里,然后我们通过 for 语句迭代出每一个事件,对我们关注的事件进行处理,像我们刚才关注的 QUIT 事件。
for event in pygame.event.get():
if event.type \== pygame.QUIT:
sys.exit()
2、**render() 方法就是将显示的文字活生生的渲染成一个 Surface 对象**,这样你就可以调用 blit() 方法将一个 Surface 对象复制到另一个Surface 上面。
font \= pygame.font.Font(None,20)#设置字体对象,第一个参数是字体类型(默认为系统字体),第二个参数是大小
font1 \= font.render(str(event),True,(0,255,0))[[使用font中的render]]方法将事件渲染成图片,第一个参数为要渲染的字符串,第二个参数为是否锯齿化,第三个参数为颜色
screen.blit(font1,(0,position)#将渲染好的图片添加到原始图像上,后面要跟上位置参数
3、**display** 模块的 **set\_mode()** 方法来**指定界面的大小**,这个方法会返回一个 Surface 对象,我们就使用这个 Surface 对象作为界面。
set_mode(resolution=(0,0),flag=0,depth=0)->Surface
指定界面大小,什么都不给,默认 指定颜色位数
第二个参数 flags 是指定扩展选项,同时指定多组选项可以使用 管道操作符 “|”, 这儿是 flags 参数提供的几个可选项:
选项
pygame.FULLSCREEN 创建一个全屏显示
pygame.DOUBLEBUF 1. 双缓冲模式
(2) 推荐和 HWSURFACE 或 OPENGL 一起使用
pygame.HWSURFACE 硬件加速,只有在 FULLSCREEN 下可以使用
pygame.OPENGL 创建一个 OPENGL 渲染的显示
pygame.RESIZABLE 创建一个可调整尺寸的窗口
pygame.NOFRAME 创建一个没有边框和控制按钮的窗口
4、pygame.display.set\_modes() 显示电脑所支持分辨率
5、screen = pygame.display.set\_mode(size, pygame.RESIZABLE)
调整窗口尺寸
if event.type == pygame.VIDEORESIZE:
[[这个事件有SIZE]],W,H这三个参数,可以调用
size = width,height = event.size
screen = pygame.display.set_mode(size,pygame.RESIZABLE)
6、![](https://img-blog.csdnimg.cn/2019040815190140.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4OTcwNzgz,size_16,color_FFFFFF,t_70) 图像变化
7、class Ball(pygame.sprite.Sprite) : #继承动画精灵基类
8、sprite 模块提供了 spritecollide() 方法用于 检测某个精灵是否与指定的组中的其它精灵发生碰撞。
spritecollide(sprite, group, dokill, collided = None)
第一个参数 sprite 是指定被检测的精灵;(就是我们写的里面的 item)
第二个参数 group 是指定一个组(就是我们写的里面的 target 列表),它是 sprite 的组,因此要使用 sprite.Group() 来生成;
第三个参数 dokill 是设置是否从组中删除检测到碰撞的精灵,设置为True,则删除;
第四个参数 collided 是指定一个回调函数,用于定制特殊的检测方法,如果第四个参数忽略的话,默认是检测精灵之间的 rect 属性。
> collide\_circle(left, right) 方法适用于检测两个圆之间是否发生碰撞,left 和 right 参数分别是两个精灵,所以我们直接 使用
> collided = pygame.sprite.collide\_circle
9、pygame.mixer.music.load(r"D:\Code\Python\Pygame\pygame8:播放声音和音效\bg_music.ogg") [[为ogg]]格式
pygame.mixer.music.set_volume(0.2) #设置音量
pygame.mixer.music.play() #播放背景音乐
#设置一个背景音乐完毕之后的结束事件
GAMEOVER \= USEREVENT pygame.mixer.music.set\_endevent(GAMEOVER) [[当音乐播完后,发送一个GAMEOVER]]事件
10、pygame.mouse.set\_visible() —— 隐藏或显示鼠标光标
pygame.mouse.get\_pos() —— 获取鼠标光标的位置
11 screen.blit(each.image, each.rect) #图像,位置
12.rect的上下左右分别为矩形边到x和y轴的距离,
black\_ball\_image.get\_rect() #获得矩形位置
black\_ball\_temp.get\_width() #获得矩形宽度
event.pos为事件的位置 【x,y】