Python游戏库pygame

技术百科 admin 发布时间:2024-04-09 浏览:43 次

源于http://c.biancheng.net/pygame/

Pygame是什么?

Pygame 是一个专门用来开发游戏的 Python 模块,主要为开发、设计 2D 电子游戏而生,它是一个免费、开源的第三方软件包,支持多种操作系统,具有良好的跨平台性(比如 Windows、Linux、Mac 等)。

Pygame 是 Pete Shinners 在 SDL(Simple DirectMedia Layer,一套开源的跨平台多媒体开发库)基础上开发而来,提供了一系列游戏编程所需的基本组件和工具,比如图像、声音、事件、碰撞检测等。但相比于开发大型 3D 游戏来说,它更擅长于开发 2D 游戏,比如扫雷、纸牌游戏、贪吃蛇、超级马里奥、飞机大战等。

当然 Python 也提供了开发 3D 游戏的软件包,比如 Pyglet、Panda3D、PyOgre 等。

Pygame官网https://www.pygame.org/docs/

Pygame下载与安装

Pygame 的下载非常简单,可分为两种方式:一是通过 Python 的包管理器 pip 来安装;二是下载二进制安装包进行安装。

pip包管理器安装

首先确定的您的电脑已经安装了 Python(推荐使用 3.7 以上版本),然后打开 cmd 命令行工具,输入以下命令即可成功安装:

pip install pygame

二进制安装包安装

 Python 第三方库官网 PyPI(

点击前往下载https://pypi.org/project/pygame/#files

)提供了不同操作平台的 Pygame 安装包,如下所示:

这里我们选择 Windows 版本进行下载。下载完成后,打开一个 cmd 命令窗口,切换到该安装程序所在的文件夹,并执行以下命令进行安装:

Python - m pip install --user pygame-2.5.2-cp312-win_amd64.whl

建议使用第一种方式安装Pygame库。

最后使用以下命令检查 Pygame 版本,从而验证是否安装成功。

python -m pygame --versionPygame程序基本搭建过程 Pygame搭建游戏窗口如下:1.初始化程序pygame.init()2.创建Surface对象Surface 翻译为表面、表层、外观,在 Pygame 中,您可以把 surface 对象理解成一张“白纸”,通过这张纸可以做许多的事情,比如在纸上添加文字、填充颜色、添加图片以及绘制任意形状的图形等。既然是“纸”就有规格尺寸,Pygame 允许您创建任意大小的纸。

创建Surface对象

#也叫screen对象,本质上是一个Surface,大小400*400screen = pygame.display.set_mode((400,400))

b.创建一个包含文本的 Surface 对象

#创建一个包含文字的Surface对象text = f.render("C语言中文网",True,(255,0,0),(0,0,0))#通过blit方法将其绘制在主屏幕上,这里的textRect表示位置坐标screen.blit(text,textRect)

c.创建一个带图像的Surface对象

surface_image =pygame.image.load("图片路径")

3.事件监听

一个游戏少不了游戏和人的交互,人可以通过事件来实现对游戏的交互。

# 循环获取事件,监听事件状态,使用get()获取事件for event in pygame.event.get():#判断事件类型    if event.type == pygame.QUIT: pygame.quit()

4.游戏循环

游戏主循环是每个 Pygame 游戏程序中必不可少的一部分,它主要承担着以下三个重要任务:

处理游戏事件

更新游戏状态

把更新后的游戏状态绘制到屏幕上

#游戏主循环(游戏循环)while True:    for event in pygame.event.get():        if event.type == pygame.QUIT: pygame.quit() #终止系统 sys.exit() #更新并绘制屏幕内容 pygame.display.flip()

Pygame Display显示模块详解

Pygame 使用pygame.display显示模块中的方法创建游戏的主窗口:

screen = pygame.display.set_mode(size=(),flags=0)

参数

size:元组参数,用来设置主窗口的大小flags:功能标志位,表示创建的主窗口样式,比如创建全屏窗口、无边框窗口等,flags 参数值见下表。标志位功能pygame.FULLSCREEN创建一个全屏窗口。pygame.HWSURFACE创建一个硬件加速窗口,必须和 FULLSCREEN 同时使用。pygame.OPENGL创建一个 OPENGL 渲染窗口。pygame.RESIZABLE创建一个可以改变大小的窗口。pygame.DOUBLEBUF创建一个双缓冲区窗口,建议在 HWSURFACE 或者 OPENGL 时使用。pygame.NOFRAME创建一个没有边框的窗口。将Surface对象粘贴至主窗口上scrren.blit(source, dest, area=None, special_flags = 0)

参数介绍

source:表示要粘贴的 Surface 对象。

dest:主窗口中的一个标识的坐标位置,可以接受一个 (x,y) 元组,或者 (x,y,width,height) 元组,也可以是一个 Rect 对象;

area:接受一个 Rect 对象,默认为 None,如果提供该参数则相当于抠图操作,即在屏幕的指定区域显示想要的内容;

special_flags:可选参数,它是 Pygame.1.8 版本新增的功能,用于指定对应位置颜色的混合方式,参数值有 BLEND_RGBA_ADD、BLEND_SUB 等。如果不提供该参数的情况下,默认使用 source 的颜色覆盖 screen 的颜色。

2.设置窗口主窗口

screen = pygame.display.set_mode(400,600)

3.填充窗口背景,参数值RGB

screen.fill((156,156,156))

4.设置窗口标题

pygame.display.set.caption(舟舟女孩初学Pygame)

5.更新屏幕内容

pygame.display.flip()

6.pygame.display其他方法

方法名称说明pygame.display.get_surface()获取当前显示的 Surface 对象。pygame.display.flip()更新整个待显示的 Surface 对象到屏幕上。pygame.display.update()更新部分软件界面显示。pygame.display.Info()产生一个 VideoInfo 对象,包含了显示界面的相关信息。pygame.display.set_icon()设置左上角的游戏图标,图标尺寸大小为 32*32。pygame.display.iconify()将显示的主窗口即 Surface 对象最小化,或者隐藏。pygame.display.get_active()当前显示界面显示在屏幕上时返回 True,如果窗口被隐藏和最小化则返回 False。

代码演示:

import sysimport pygame#使用pygame之前必须初始化pygame.init()#设置主屏窗口screen = pygame.display.set_mode((400,600))#填充主窗口的背景颜色,参数值RGB(颜色元组)screen.fill((156,156,156))#设置窗口标题pygame.display.set_caption(舟舟女孩初学Pygame)# 如果没有下列主循环代码,运行结果会一闪而过while True: # 循环获取事件,监听事件 for event in pygame.event.get(): # 判断用户是否点了关闭按钮 if event.type == pygame.QUIT: #卸载所有模块 pygame.quit() #终止程序 sys.exit() #更新屏幕内容 pygame.display.flip()

Pygame Surface创建图像

1.Surface模块创建图像Surface=pygame.Surface(size=(width,height),flags,depth)参数size:表示 Surface 对象的矩形区域大小;flags:功能标志位,有两个可选参数值 HWSURFACE 和 SPCALPHA,前者代表将创建的 Surface 对象存放于显存中,后者表示让图像的每一个像素都包含一个 alpha  通道depth:指定像素的颜色深度,默认为自适应模式,由 Pygame 自动调节。代码展示:import sysimport pygame#使用pygame之前必须初始化pygame.init()#设置主屏窗口screen = pygame.display.set_mode((400,400))#填充主窗口的背景颜色screen.fill(white)#创建一个 50*50 的图像,并优化显示face = pygame.Surface((50,50),flags=pygame.HWSURFACE)#填充颜色face.fill(color=blue)#设置窗口标题pygame.display.set_caption(舟舟女孩初学Pygame)# 如果没有下列主循环代码,运行结果会一闪而过while True: # 循环获取事件,监听事件 for event in pygame.event.get(): # 判断用户是否点了关闭按钮 if event.type == pygame.QUIT: #卸载所有模块 pygame.quit() #终止程序 sys.exit() # 将绘制的图像添加到主屏幕上,(100,100)是位置坐标,显示屏的左上角为坐标系的(0,0)原点 screen.blit(face, (100, 100)) #更新屏幕内容 pygame.display.flip()

Surface 模块还提供了处理图像的其他方法

方法说明pygame.Surface.blit() 将一个图像(Surface 对象)绘制到另一个图像上pygame.Surface.convert() 修改图像(Surface 对象)的像素格式pygame.Surface.fill()  使用纯色填充 Surface 对象pygame.Surface.scroll() 复制并移动 Surface 对象pygame.Surface.set_alpha() 设置整个图像的透明度pygame.Surface.get_at() 获取一个像素的颜色值pygame.Surface.set_at() 设置一个像素的颜色值pygame.Surface.get_palette()获取 Surface 对象 8 位索引的调色板pygame.Surface.map_rgb()  将一个 RGBA 颜色转换为映射的颜色值pygame.Surface.set_clip() 设置该 Surface 对象的当前剪切区域pygame.Surface.subsurface()  根据父对象创建一个新的子 Surface 对象pygame.Surface.get_offset()获取子 Surface 对象在父对象中的偏移位置pygame.Surface.get_size()

获取 Surface 对象的尺

2.Surface加载外部图像

pygame.image.load("图片路径").convert()

代码演示:

import sysimport pygame#使用pygame之前必须初始化pygame.init()#设置主屏窗口screen = pygame.display.set_mode((400,400))#填充主窗口的背景颜色screen.fill(white)#设置窗口标题pygame.display.set_caption(舟舟女孩初学Pygame)#加载一张图片image_surface = pygame.image.load(C:/Users/联想/Desktop/OIP-C.jpg).convert()# rect(left,top,width,height)指定图片上某个区域# special_flags功能标志位,指定颜色混合模式,默认为 0 表示用纯色填充image_surface.fill((0,0,255),rect=(100,100,120,0),special_flags=0)image_surface.scroll(100,200)#移动图片# 无限循环,让窗口停留while True: for event in pygame.event.get(): if event.type ==pygame.QUIT: pygame.quit() exit() # 将图像放置在主屏幕上 screen.blit(image_surface,(0,0)) pygame.display.update()

Pygame Transform图像变形

Transform方法

方法   说明pygame.transform.scale()将图片缩放至指定的大小,并返回一个新的 Surface 对象。pygame.transform.rotate()将图片旋转至指定的角度。pygame.transform.rotozoom()以角度旋转图像,同时将图像缩小或放大至指定的倍数。

代码演示:

import pygame#引入pygame中所有常量,比如 QUITfrom pygame.locals import *pygame.init()screen = pygame.display.set_mode((500,250))pygame.display.set_caption(舟舟女孩初学Pygame)#加载一张图片image_surface = pygame.image.load(C:/Users/联想/Desktop/OIP-C.jpg).convert()image_new = pygame.transform.scale(image_surface,(300,300))# 查看新生成的图片的对象类型#print(type(image_new))# 对新生成的图像进行旋转至45度image_1 =pygame.transform.rotate(image_new,45)# 使用rotozoom() 旋转 0 度,将图像缩小0.5倍image_2 = pygame.transform.rotozoom(image_1,0,0.5)while True: for event in pygame.event.get(): if event.type == QUIT: exit() # 将最后生成的image_2添加到显示屏幕上 screen.blit(image_2,(0,0)) pygame.display.update()

Pygame Time时间控制详解

游戏暂停

方法说明pygame.time.get_ticks() 以毫秒为单位获取时间pygame.time.wait()使程序暂停一段时间pygame.time.set_timer()创建一个定时器,即每隔一段时间,去执行一些动作pygame.time.Clock()创建一个时钟对象来帮我们确定游戏要以多大的帧数运

2.设置游戏的帧数率(FPS)

方法说明pygame.time.Clock.tick()更新clock对象pygame.time.Clock.get_time()获取上一个tick中的时间pygame.time.Clock.get_fps()计算clock对象的帧率

Pygame Rect区域位置

语法格式

rect = pygame.Rect(left,top,width,height)

代码演示:

import pygamepygame.init()screen = pygame.display.set_mode((500,300))pygame.display.set_caption(舟舟女孩初学Pygame)image_surface = pygame.image.load(C:/Users/联想/Desktop/OIP-C.jpg)rect1 = pygame.Rect(50,50,100,100)# 在原图的基础上创建一个新的子图(surface对象)image_child= image_surface.subsurface(rect1)rect2 = image_child.get_rect()#输出的矩形大小为 100*100print(rect2)while True: for event in pygame.event.get(): if event.type == pygame.QUIT: exit() #在屏幕上显示子图的区域 screen.blit(image_child,rect1) pygame.display.update()

Rect(矩形区域)对象还提供了一些常用方法。

方法说明pygame.Rect.copy()复制矩形pygame.Rect.move()移动矩形区域,接受一个列表参数pygame.Rect.move_ip()移动矩形(无返回)pygame.Rect.inflate()增大或缩小矩形大小pygame.Rect.clamp()将矩形移到另一个矩形内pygame.Rect.union()返回一个两个矩形合并后的矩形。pygame.Rect.fit()按纵横比调整矩形的大小或移动矩形。pygame.Rect.contains()测试一个矩形是否在另一个矩形内pygame.Rect.collidepoint() 测试点是否在矩形内pygame.Rect.colliderect()测试两个矩形是否重叠

同时 Rect 对象也提供了一些关于矩形大小的常用的属性

x,y 表示矩形距离 x、y 轴的距离

top, left, bottom, right #在坐标系内描述矩形的大小

topleft, bottomleft, topright, bottomright #返回一个描述矩形大小的元组

midtop, midleft, midbottom, midright #返回一个描述矩形大小的元组

center, centerx, centery #(centerx,centery)表示矩形中央坐标(x,y)的值

size, width, he

ight

w,h #用于描述矩形的width、height

Pygame Event事件模块

事件类型

事件类型描述成员属性QUIT用户按下窗口的关闭按钮noneATIVEEVENTPygame被激活或者隐藏gain,stateKEYDOWN键盘按下unicode、key、modKEYUP键盘放开key、modMOUSEMOTION鼠标移动  pos, rel, buttonsMOUSEBUTTONDOWN鼠标按下 pos, buttonMOUSEBUTTONUP鼠标放开 pos, buttonJOYAXISMOTION游戏手柄(Joystick or pad) 移动 joy, axis, valueJOYBALLMOTION 游戏球(Joy ball) 移动  joy, axis, valueJOYHATMOTION游戏手柄(Joystick) 移动    joy, axis, valueJOYBUTTONDOWN游戏手柄按下joy, buttonJOYBUTTONUP游戏手柄放开    joy, buttonVIDEORESIZEPygame窗口缩放  size, w, hVIDEOEXPOSEPygame窗口部分公开(expose) noneUSEREVENT触发一个用户事件  事件代码

2.事件处理方法

方法说明pygame.event.get()从事件队列中获取一个事件,并从队列中删除该事件pygame.event.wait() 阻塞直至事件发生才会继续执行,若没有事件发生将一直处于阻塞状态pygame.event.set_blocked() 控制哪些事件禁止进入队列,如果参数值为None,则表示禁止所有事件进入pygame.event.set_allowed()  控制哪些事件允许进入队列pygame.event.pump() 调用该方法后,Pygame 会自动处理事件队列pygame.event.poll() 会根据实际情形返回一个真实的事件,或者一个Nonepygame.event.peek()  检测某类型事件是否在队列中pygame.event.clear()从队列中清除所有的事件pygame.event.get_blocked() 检测某一类型的事件是否被禁止进入队列pygame.event.post()  放置一个新的事件到队列中pygame.event.Event()  创建一个用户自定义的新事件

3.处理键盘事件

常量名描述K_BACKSPACE退格键(Backspace)K_TAB制表键(Tab)K_CLEAR清除键(Clear)K_RETURN回车键(Enter)K_PAUSE暂停键(Pause)K_ESCAPE退出键(Escape)K_SPACE空格键(Space)K_0...K_90...9K_a...Kza...zK_DELETE删除键(delete)K_KP0...K_KP90(小键盘)...9(小键盘)K_F1...K_F15F1...F15K_UP向上箭头(up arrow)K_DOWN向下箭头(down arrow)K_RIGHT向右箭头(right arrow)K_LEFT向左箭头(left arrow)KMOD_ALT同时按下Alt键

代码演示:

import pygameimport sys# 初始化pygamepygame.init()# 定义变量size = width, height = 600, 400bg = (255, 255, 255)# 加载logo图img = pygame.image.load(C:/Users/联想/Desktop/logo.png)# 获取图像的位置position = img.get_rect()# 创建一个主窗口screen = pygame.display.set_mode(size)# 标题pygame.display.set_caption("舟舟女孩初学Pygame")# 创建游戏主循环while True: # 设置初始值 site = [0, 0] for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() # 图像移动 KEYDOWN 键盘按下事件 # 通过 key 属性对应按键 if event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: site[1] -= 8 if event.key == pygame.K_DOWN: site[1] += 8 if event.key == pygame.K_LEFT: site[0] -= 8 if event.key == pygame.K_RIGHT: site[0] += 8 # 移动图像 position = position.move(site) # 填充背景 screen.fill(bg) # 放置图片 screen.blit(img, position) # 更新显示界面 pygame.display.flip()
关闭
观看更多
更多
退出全屏

视频加载失败,请刷新页面再试

刷新

4.处理鼠标事件

事件说明MOUSEMOTION鼠标按下MOUSEBUTTONDOWN鼠标释放MOUDEBUTTONUP鼠标释放

不同事件类型对应着不同的成员属性

pygame.event.MOUSEMOTION鼠标移动事件

event.pos 相对于窗口左上角,鼠标的当前坐标值(x,y)

event.rel 鼠标相对运动距离(X,Y),相对于上次事件

event.buttons 鼠标按钮初始状态(0,0,0),分别对应(左键,滑轮,右键),移动过程中点击那个键,相应位置变会为1

pygame.event.MOUSEBUTTONUP鼠标键释放事件

event.pos 相对于窗口左上角,鼠标的当前坐标值(x,y)

event.button 鼠标释放键编号(整数)左键为1,按下滚动轮2、右键为3

pygame.event.MOUSEBUTTONDOWN 鼠标键按下事件

event.pos 相对于窗口左上角,鼠标的当前坐标值(x,y)

event.button 鼠标按下键编号(整数),左键为1,按下滚动轮2、右键为3,向前滚动滑轮4、向后滚动滑轮5import pygamefrom random import randint# 初始化程序pygame.init()screen = pygame.display.set_mode((450,400))pygame.display.set_caption("舟舟女孩初学Pygame")# 更新显示pygame.display.flip()while True: #等待事件发生 event = pygame.event.wait() if event.type == pygame.QUIT: exit("成功退出") if event.type == pygame.MOUSEBUTTONDOWN: # pos 获取鼠标当前位置 print(鼠标按下,event.pos) mx,my = event.pos # 调用 pygame.draw 模块画圆 pygame.draw.circle(screen,(255,255,0),(mx,my),50) # 处理完,更新显示 pygame.display.update() if event.type == pygame.MOUSEBUTTONUP: print(鼠标弹起) pass if event.type == pygame.MOUSEMOTION: print(鼠标移动) mx, my = event.pos # 随机生成 RGB 颜色值 r = randint(0,255) g = randint(0,255) b = randint(0,255) pygame.draw.circle(screen, (r,g,b,),(mx, my), 50) # 处理完,更新显示 pygame.display.update()
关闭
观看更多
更多
退出全屏

视频加载失败,请刷新页面再试

刷新

Pygame Draw绘图函数详解

pygame.draw模块的常用方法如下表所示:

方法说明pygame.draw.rect() 绘制矩形pygame.draw.polygon() 绘制多边形pygame.draw.circle() 根据圆心和半径绘制圆形pygame.draw.ellipse() 绘制一个椭圆形pygame.draw.arc() 绘制弧线(挥着椭圆的一部分)pygame.draw.line() 绘制线段(直线)pygame.draw.lines() 绘制多条连续的线段pygame.draw.aaline() 绘制一条平滑的线段(抗锯齿)pygame.draw.aalines() 绘制多条连续的线段1) 绘制矩形pygame.draw.rect(surface, color, rect, width)

surface:指主游戏窗口,无特殊情况,一般都会绘制在主屏幕上;

color:该参数用于该图形着色;

rect:绘制图形的位置和尺寸大小;

width:可选参数,指定边框的宽度,默认为 0,表示填充该矩形区域。

注意,当 width > 0 时,表示线框的宽度;而 width < 0 时,此时不会绘制任何图形。

2) 绘制多边形pygame.draw.polygon(surface, color, points, width)3) 绘制圆形pygame.circle(Surface,color,pos,radius,width=0)

pos:该参数用来指定的圆心位置;

radius:用来指定圆的半径;

4) 绘制椭圆形pygame.draw.ellipse(Surface,color,Rect,width=0)5) 绘制圆弧曲线pygame.draw.arc(Surface,color,Rect,start_angle,stop_angle,width=1))

start_angle是该段圆弧的起始角度;

stop_angle是终止角度;

6) 绘制直线pygame.draw.line(Surface,color,start_pos,end_pos,width=1)

start_pos 和 end_pos 表示线段的起始位置,此处使用 [x,y] 来表示起始位置;

width =1 表示直线的宽度,默认为 1。

如果是绘制一条消除锯齿的平滑线,此时则使用 blend = 1 参数,如下所示:

pygame.draw.aaline(Surface,color,startpos,endpos,blend=1)7) 绘制多条直接pygame.draw.lines(Surface,color,closed,pointlist,width=1)

pointlist:参数值为列表,包含了一些列点坐标的列表

closed:布尔值参数,如果设置为 True,表示直线的第一个端点和直线的最后一个端点要首尾相连;

如果绘制抗锯齿直线,使用以下方法:

pygame.draw.allines(Surface,color,closed,pointlist,blend=1)

代码演示:

import pygamefrom math import pi#初始化pygame.init()# 设置主屏幕大小size = (500, 450)bg = (255, 255, 255)screen = pygame.display.set_mode(size)screen.fill(bg)# 设置一个控制主循环的变量done = False#创建时钟对象clock = pygame.time.Clock()while not done: # 设置游戏的fps clock.tick(10) for event in pygame.event.get(): if event.type == pygame.QUIT: done = True # 若检测到关闭窗口,则将done置为True # 绘制一条宽度为 3 的绿色对角线 pygame.draw.line(screen, (0, 255, 0), [0, 0], (500, 450), 3) #绘制一条宽度为5的绿色锯齿线 pygame.draw.aaline(screen, (0,255,0), [0,5], (300,400), 5) # 绘制多条蓝色的直线(连续直线,非抗锯齿),False 表示首尾不相连 pygame.draw.lines(screen, (0, 0, 255), False, [[0, 80], [50, 90], [200, 80], [220, 30]], 1) # 绘制一个灰色的矩形区域,以灰色填充区域 pygame.draw.rect(screen, (155, 155, 155), (75, 10, 50, 20), 0) # 绘制一个线框宽度为2的矩形区域 pygame.draw.rect(screen, (0, 0, 0), [150, 10, 50, 20],2) # 绘制一个椭圆形,其线宽为2 pygame.draw.ellipse(screen, (255, 0, 0), (225, 10, 50, 20), 2) # 绘制一个实心的红色椭圆形 pygame.draw.ellipse(screen, (255, 0, 0), (300, 10, 50, 20)) # 绘制一个绿色边框(宽度为2)三角形 pygame.draw.polygon(screen, (100, 200, 45), [[100, 100], [0, 200], [200, 200]], 2) # 绘制一个蓝色实心的圆形,其中[60,250]表示圆心的位置,40为半径,width默认为0 pygame.draw.circle(screen, (0, 0, 255), [60, 250], 40) # 绘制一个圆弧,其中0表示弧线的开始位置,pi/2表示弧线的结束位置,2表示线宽 pygame.draw.arc(screen, (255, 10, 0), (210, 75, 150, 125), 0, pi / 2, 2) # 刷新显示屏幕 pygame.display.flip()# 点击关闭,退出pygame程序pygame.quit()

Pygame Font文本和字体

pygame font常用方法

方法说明pygame.font.init()初始化字体模块pygame.font.quit() 取消初始化字体模块pygame.font.get_init() 检查字体模块是否被初始化,返回一个布尔值。pygame.font.get_default_font() 获得默认字体的文件名。返回系统中字体的文件名pygame.font.get_fonts() 获取所有可使用的字体,返回值是所有可用的字体列表pygame.font.match_font() 从系统的字体库中匹配字体文件,返回值是完整的字体文件路径pygame.font.SysFont() 从系统的字体库中创建一个 Font 对象pygame.font.Font()从一个字体文件创建一个 Font 对象1) font.SysFont()((从系统中加载字体文件创建字体对象))pygame.font.SysFont(name, size, bold=False, italic=False)

name:列表参数值,表示要从系统中加载的字体名称,它会按照列表中的元素顺序依次搜索,如果系统中没有列表中的字体,将使用 Pygame 默认的字体。

size:表示字体的大小;

bold:字体是否加粗;

italic:字体是否为斜体。

2) font.Font()(通过文件路径创建字体对象)my_font = pygame.font.Font(filename, size) 参数说明如下:

filename:字符串格式,表示字体文件的所在路径;

size:设置字体的大小

3) 字体对象方法

Pygame 为处理字体对象提供了一些常用方法,如下所示:

方法说明pygame.font.Font.render() 该函数创建一个渲染了文本的 Surface 对象pygame.font.Font.size() 该函数返回渲染文本所需的尺寸大小,返回值是一个一元组 (width,height)pygame.font.Font.set_underline() 是否为文本内容绘制下划线pygame.font.Font.get_underline() 检查文本是否绘制了下划线pygame.font.Font.set_bold() 启动粗体字渲染pygame.font.Font.get_bold() 检查文本是否使用粗体渲染pygame.font.Font.set_italic() 启动斜体字渲染pygame.font.Font.metrics() 获取字符串中每一个字符的详细参数pygame.font.Font.get_italic() 检查文本是否使用斜体渲染pygame.font.Font.get_linesize() 获取字体文本的行高pygame.font.Font.get_height() 获取字体的高度pygame.font.Font.get_ascent() 获取字体顶端到基准线的距离pygame.font.Font.get_descent() 获取字体底端到基准线的距离

第一个方法语法格式如下:

render(text, antialias, color, background=None)参数说明如下所示:

text:要绘制的文本内容

antialias:布尔值参数,是否是平滑字体(抗锯齿)。

color:设置字体颜色;

background:可选参数,默认为 None,该参数用来设置字体的背景颜色。

代码演示

import sysimport pygame# 初始化pygame.init()screen = pygame.display.set_mode((600,400))#填充主窗口的背景颜色screen.fill((20,85,70))#设置窗口标题pygame.display.set_caption(舟舟女孩初学Pygame)# 字体文件路径 C:/Windows/Fonts/simhei.ttff = pygame.font.Font(C:/Windows/Fonts/simhei.ttf,50)text = f.render("舟舟女孩初学Python",True,(255,0,0),(255,255,255))#获得显示对象的 rect区域大小textRect =text.get_rect()#设置显示对象居中textRect.center = (300,200)screen.blit(text,textRect)while True: # 循环获取事件,监听事件 for event in pygame.event.get(): # 判断用户是否点了关闭按钮 if event.type == pygame.QUIT: #卸载所有pygame模块 pygame.quit() #终止程序 sys.exit() pygame.display.flip() #更新屏幕内容

Pygame 还提供许多其他模块,比如 mixer(声音)、movie(播放视频)、music(播放音频)、sndarray(操作声音数据)等模块。了解更多可前往

官网https://www.pygame.org/docs/

在线咨询

点击这里给我发消息售前咨询专员

点击这里给我发消息售后服务专员

在线咨询

免费通话

24h咨询:400-888-8888


如您有问题,可以咨询我们的24H咨询电话!

免费通话

微信扫一扫

微信联系
返回顶部