首页 > 编程知识 正文

python可视化框架有哪些,pygame基础知识

时间:2023-05-04 23:43:35 阅读:175235 作者:4342

根据Pygame APP应用程序的文档,pygame是一个“游戏开发库”,它是一组代码库,帮助程序员制作游戏。 包括:

图形声音(含音乐)控件(键盘、鼠标、游戏手柄等) Pygame游戏结构框架

每个游戏的核心是一个循环,这被称为“游戏循环”。 这个循环不断地运行着,一次又一次地完成了游戏工作所需的一切。 游戏的当前画面在每个周期显示,称为帧。

Pygame游戏循环主要处理三件事1 .处理外部输入(鼠标点击或键盘按下事件)。 这意味着在游戏进行的同时,必须响应用户的操作进行处理。 这些可能是键盘上的键被按下或鼠标被点击等事件。

2 .更新游戏对象的位置和状态飞机对象在空中飞行,受到重力作用时,需要改变自己的位置。 如果两个对象互相碰撞,就需要爆炸。

3 .渲染在此步骤中,在屏幕上重新绘制所有已更新位置的游戏对象。

构建Pygame游戏程序框架1 .基本配置Pygame程序的开始部分导入所需的库,设置一些变量,然后创建窗口和程序循环部分。

初始化importpygameimportrandomwidth=360 #游戏窗口宽度HEIGHT=480 #游戏窗口高度FPS=30 #帧速率pygame, 用于创建窗口pygame.init(pygame.mixer.init的声音初始化screen=pygame.display.set _ mode (width,HEIGHT ) ) pygame.dight 最后,我们创建了clock时钟对象,以便游戏在预期的FPS上运行。

#游戏循环running=truewhilerunning 3360 # process input (events ) # Update # # Draw/Render这是一个游戏循环,是由变量running控制的循环如果想结束游戏,只需将running设定为False,循环就结束了。 接下来,用几个基本代码填写各个部分。

2 .渲染/绘制从Draw部分开始。 目前没有可用单色填充屏幕的游戏对象。

图像由具有红、绿、蓝三个部分的像素组成。 每个部分的发光量决定像素的颜色。 如下所示。

三原色可以具有0到255的值,因此三种原色中的每一种原色可能有256种不同。 以下是三种颜色的组合示例。

开始设置变量时,可以通过设置这些颜色的量然后绘制来直接应用和填充这些颜色。

#colors(r,g,b ) black=(0,0,0 ) white=) 255,255 ) red=) 255,0,0 ) green=) 0,255,0 ) blue=屏幕的像素在计算机看来,这是一个非常缓慢的过程。 因此,如果在画面上画了很多东西,画这些东西可能会很花时间。 处理能力较低的计算机表现为游戏的运行纸箱。

我们可以通过使用被称为双缓冲的技术巧妙地解决这个问题。

想象一下,有一个双面白板可以翻转显示一侧或另一侧。 前面是显示器(玩家正在观看的屏幕),背面是隐藏的,只有计算机才能“看到”它。 每个帧在背面(内存中)绘制所有的画。 各角色、各子弹、各闪耀的光等。 然后,完成后,把白板翻过来显示。 这意味着您只需逐帧执行白板翻转过程。

这些都在pygame中自动发生。 绘制完成后,只需告诉他们翻转白板即可。 命令是flip () :

#draw/renderscreen.fill(black ) after ) drawingeverything,flipthedisplaypygame.display.flip )3.游戏事件现在这个程序这是因为当用户单击“关闭”按钮时会发生事件,程序需要侦听该事件并采取相应的操作。 结束游戏。

Pygame在内部保存自上一帧以来发生的所有事件。 下面的代码可以确认发生了什么事件。

foreventinpygame.event.get (: # checkforclosingwindowifevent.type==pygame.quit : runing=false pygame中有很多事件程序检查到发生了这个事件后,将running变量设置为False以挤出游戏循环,然后结束游戏。

输出文本pygame支持使用pygame.font对象在窗口中打印文本

。要打印文本的话,首先需要创建一个字体对象,Font的第一个参数为None是告诉pygame获得系统默认字体,也可以是具体的字体名称。Font的第二个参数指明字体大小。

myfont = pygame.font.Font(None,60)

文本绘制过程比较耗费时间,常用的做法是先在内存中创建文本图像,然后将文本当作一个图像来渲染。

textImage = myfont.render("pygame", True, WHITE)

textImage 对象可以使用screen.blit()来绘制。上面代码中的render函数第一个参数是要绘制的文本,第二个参数是启用抗锯齿能力,第三个参数是文本的颜色。

下面的代码,将刚刚产生文本图像绘制到屏幕的坐标(10,100)处:

screen.fill(BLACK)screen.blit(textImage, (10,100))pygame.display.flip() FPS设置 pygame时钟

游戏循环的另一个重要方面是控制整个循环的运行速度。游戏中有个术语叫FPS(Frames Per Second),它代表每秒帧数,也叫帧率。这意味着游戏循环每秒应发生多少次。这很重要,因为我们不希望游戏运行得太快或太慢。也不希望它在不同的计算机上以不同的速度运行 。

控制FPS

虽然现在还没有任何东西要放在“更新”部分,但仍然需要设置FPS来控制游戏运行速度。可以这样做:

while running: # keep loop running at the right speed clock.tick(FPS)

该tick()命令告诉pygame一秒循环多少次。如果设置FPS为20,这意味着我们命令游戏的每个循环持续1 / 20(0.05)秒。如果循环代码(更新,绘图等)只需要0.03秒,那么pygame将等待0.02秒。以上是计算机处理比较快的情况。如果电脑比较差,运行缓慢,一秒钟未必能执行20次循环— 那么clock.tick(20)就成为一个指导意见。

显示FPS

可循环计算出FPS并显示在屏幕上
首先,在while循环之前定义2个变量:

count = 0start = time.time()

计算方法:循环开始前获得当前系统时间,在每次循环中,累加循环次数count;同时在每次循环时,获得当前系统时间,那么从开始循环到目前为止流逝的时间(时间差)为:now-start。再用count除以这个时间差,即为FPS(每秒循环了多少次)。代码如下:

# Updatecount+=1now = time.time()fps = count/(now-start)fpsImage = myfont.render(str(fps), True, WHITE)# Draw / renderscreen.fill(BLACK)screen.blit(fpsImage, (10, 100))# *after* drawing everything, flip the displaypygame.display.flip()

我们可以修改FPS的值,看看是否界面上输出的值会跟着变化,我的电脑,将FPS设置成10000时,发现屏幕上打印的是2300,说明,我的电脑配置最多可以支持到1秒中运行循环中的代码2300次。

最后,为了确保当游戏循环结束时,游戏窗口正确退出。我们通过将代码pygame.quit()的放到最后一行来实现这一点。

FPS = 10FPS = 100FPS = 1000FPS = 10000

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。