pygame
Pygame是一个免费且开源的跨平台Python多媒体库,主要用作游戏开发,其内部许多核心代码都是使用C语言甚至汇编语言编写的,部分代码是使用Python编写的,这使得它在性能上非常优越。从原理上来说,Pygame库其实是对SDL(Simple DirectMedia Layer)库的封装,而SDL则与DirectX类似,均为跨平台的C语言多媒体库,具有非常广泛的用户群体。
pip包管理器安装
这是最为轻便的一种安装方式,推荐大家使用。首先确定的您的电脑已经安装了 Python(推荐使用 3.7 以上版本),然后打开 cmd 命令行工具,输入以下命令即可成功安装:
pip install pygame
最后使用以下命令检查 Pygame 版本,从而验证是否安装成功。
python -m pygame --version
或者您也可以在 Python 解释器的交互界面导入 Pygame 包,如果显示如下,则证明已经安装成功:
内置小游戏
python -m pygame.example.aliens
游戏的初始化和退出
要使用pygame提供的所有功能之前,需要调用init方法
在游戏结束前调用一下 quit方法
方法说明pygame.init()导入并初始化所有pygame模块,使用其他模块之前,必须先调用init方法pygame.quit()卸载所有pygame模块,在游戏结束之前调用!
坐标系
原点在左上角(0,0)
x轴水平方向向右,逐渐增加
y轴垂直方向向下,逐渐增加
创建游戏主窗口
方法说明pygame.display.set_mode()初始化游戏显示窗口pygame.display.update()刷新屏幕内容显示,稍后使用
set_mode方法
作用—创建游戏显示窗口
set_mode(resolution=(0,0),flags=0,depth=0)->Surface
参数
resolution指定屏幕的宽和高,默认创建的窗口大小和屏幕大小一致
flags 参数指定屏幕的附加选项 例如是否全屏等等,默认不需要传递
depth 参数表示颜色的位数 默认自动匹配
返回值
游戏屏幕 游戏元素都需要绘制到游戏屏幕上
必须使用set_mode方法的返回结果 因为后续所有图像绘制都基于这个返回结果;
理解图像并实现图像绘制
- 在游戏中能够看到的游戏元素大多都是图像
图像文件初始是保存在磁盘上的,如果需要使用,第一步就需要被加载到内存
要做屏幕上看到某个图像内容需要按照 三个步骤
1、使用pygame.image.load() 加载图像数据 #有返回结果
2、使用scree.blit(xx,(x,x,x,x)) #添加新东西到画布
3、使用pygame.display.update() #重新绘制画布
import pygame
import sys
引入相关的库
def main():
# 初始化pygame所有相关模块
pygame.init()
#创建一个游戏窗口,大小为800*400像素 返回值为:Surface对象
screen=pygame.display.set_mode((800,400))
#窗口标题名称
pygame.display.set_caption("Hello World")
#加载图片
logo=pygame.image.load("xxx.png")
# 获取get_rect函数,默认值为:(0,0)
logo_rect=logo.get_rect()
logo_rect.center=(400,200)
#为了游戏运行而写的死循环
while True:
#检测到点击退出就能关闭窗口
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()
#剩余位置用白色填充
screen.fill((255,255,255))
#绘制到画布上
screen.blit(logo,logo_rect)
#更新屏幕上的内容,需要每次有新的改动都更新一次
#不然会出现重影
pygame.display.flip()
if __name__=="__main__":
main()
- pygame.display:窗口管理和屏幕显示
- pygame.Surface:Surface类相关
- pygame.image:图片处理
- pygame.draw:图形绘制
- pygame.event:事件管理
- pygame.Rect:Rect事件相关
- pygame.font:字体与文字管理
- pygame.sprite:与Sprite相关的的类和函数
- pygame.mixer:音效
- pygame.music:音乐
后续会详细介绍上诉模块的功能和用法
窗口管理
pygame.display
1、创建窗口
set_mode(size=00,flags=0,depth=0)
名称被称为set_mode,是因为窗口可以被创建为不同模式,其后面的两个参数用来控制窗口被创建时的模式
其中,flags的可选值及其含义如下:
- pygame.FULLSCREEN:全屏
- pygame.DOUBLEBUF:双缓冲,推荐在HWSurface或OpenGL选项打开时使用
- pygame.OPENGL:利用OpenGL进行绘制
- pygame.HWSURFACE:硬件加速,只在全屏模式下可用
- pygame.NOFRAME:无边框与控件
- pygame.RESIZABLE:可缩放
flags的值可以通过符号”|”叠加使用,如果没有设置该flags,则在默认情况下,窗口显示是由软件驱动的。
参数depth表示颜色位深,单位是bit,一般不用设置,会默认选择与当前系统最匹配的depth数值
size代表所创建的窗口的尺寸。取值为:(width,height)的二元组,其中返回值为:display surface,是一个Surface对象,代表整个窗口所在的显示区域。想要正常显示就的先把内容绘制到该”display surface”,然后更新屏幕。
设置标题
pygame.display.set_caption(title,icontitle=None)
#title为窗口标题名称,参数icontitle为窗口最小化时的标题名称
设置图标
icon=pygame.image.load("icon.ico")
pygame.display.set_icon(icon)
#最佳尺寸是32*32
更新窗口
内容不会自动显示所以要在所有绘制操作都完成后主动更新屏幕窗口,这样屏幕才能正常显示,更新窗口使用的函数有两个flip()和update()
pygame.display.flip()
#主要用于双缓冲情况下翻转buffer,以更新屏幕显示
pygame.display.update(rectangle=None)
#只适用于普通模式的屏幕更新
#update可以通过指定某个指定的矩形区域,而不必更新整个屏幕
Original: https://blog.csdn.net/m0_53979927/article/details/124721549
Author: 虎虎灰
Title: Pygame入门(1)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/779512/
转载文章受原作者版权保护。转载请注明原作者出处!