千家信息网

PyGame之怎么打开一个窗口

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章主要介绍"PyGame之怎么打开一个窗口",在日常操作中,相信很多人在PyGame之怎么打开一个窗口问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"PyGame之
千家信息网最后更新 2025年01月22日PyGame之怎么打开一个窗口

这篇文章主要介绍"PyGame之怎么打开一个窗口",在日常操作中,相信很多人在PyGame之怎么打开一个窗口问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"PyGame之怎么打开一个窗口"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

导入和运行pygame

你可以创建一个python文件,比如mygame1.py。然后在文件开头写入

import pygamepygame.init()

好的,运行它。没有变化?那就对了,现在也就是控制台有几行输出。

Screen、Surface和Background

pygame运行的时候显示的最大的那个窗口就是screen,比如你运行LOL,哪个窗口最大应该很好确定。通过pygame,我们可以在screen中创建和控制很多长方形的区域,这些区域叫做surface。我们会用一个surface作为背景,这个surface就是background。接下来我们创建一个background并把它添加到screen中。

screen = pygame.display.set_mode((640,480))     # 设置窗口的大小background = pygame.Surface(screen.get_size())  # 创建一个surface,名字叫background,大小和screen一样background.fill((255,255,255))                  # 用白色填充background;255,255,255是RGB的白色background = background.convert()               # 对background进行convert(),可以加快后面添加时速度

把background添加(blit)到screen

运行你的程序。什么?只看到一个黑窗口一闪而过?那又对了~

到目前为止,我们只是在内存中创建了background,还没有把background添加到screen中,所以我们是看不到白背景的。

screen.blit(background, (0, 0))    # 把background添加到screen中,(0, 0)表示把background的左上角放到screen的左上角

在很多游戏框架中,当然pygame也是,坐标原点在窗口左上角的顶点处,就是这个样子

主循环和事件处理

主循环就是一个近乎无限的循环,只有你要退出游戏时主循环才停止。

mainloop = Truewhile mainloop:    for event in pygame.event.get():         # 这一部分就是事件处理        if event.type == pygame.QUIT:        # 如果按下右上角的叉叉            mainloop = False                 # 退出主循环        elif event.type == pygame.KEYDOWN:   # 如果按下了键盘            if event.key == pygame.K_ESCAPE: # 而且按下的还是ESC键                mainloop = False             # 退出主循环    # 在这里做一些游戏相关的运算,这里暂时省略    pygame.display.flip()                    # 刷新显示

Ok,再次运行你的游戏~ 这时你将得到一个白色的窗口。下面我们将在窗口里显示一些东西。

显示帧率

帧率就是游戏每秒运行的帧数,简称FPS,玩过游戏你一定知道FPS。帧率越高,游戏就越流畅。我们可以这样获得帧率

clock = pygame.time.Clock()     # 创建clock对象clock.get_fps()                 # 获得帧率

现在我们把显示帧率的逻辑加入到主循环中

clock = pygame.time.Clock()     # 创建clock对象 FPS = 30                        # 定义帧率的上限,就是帧率的最大值mainloop = Truewhile mainloop:    clock.tick(FPS)                          # 设置最大帧率         for event in pygame.event.get():         # 这一部分就是事件处理        if event.type == pygame.QUIT:        # 如果按下右上角的叉叉            mainloop = False                 # 退出主循环        elif event.type == pygame.KEYDOWN:   # 如果按下了键盘            if event.key == pygame.K_ESCAPE: # 而且按下的还是ESC键                mainloop = False             # 退出主循环    # 在这里做一些游戏相关的运算,这里暂时省略    text = "FPS: {0:.2f}".format(clock.get_fps())      pygame.display.set_caption(text)        pygame.display.flip()                    # 刷新显示

运行你的代码~ 帧率可以显示了

退出pygame

程序结束时,需要退出pygame以释放申请的计算资源。

pygame.quit()

完整的代码

import pygamepygame.init()screen = pygame.display.set_mode((640,480))     # 设置窗口的大小background = pygame.Surface(screen.get_size())  # 创建一个surface,名字叫background,大小和screen一样background.fill((255,255,255))                  # 用白色填充background;255,255,255是RGB的白色background = background.convert()               # 对background进行convert(),可以加快后面添加时速度screen.blit(background, (0, 0))clock = pygame.time.Clock()     # 创建clock对象 FPS = 30                        # 定义帧率的上限,就是帧率的最大值mainloop = Truewhile mainloop:    clock.tick(FPS)                          # 设置最大帧率         for event in pygame.event.get():         # 这一部分就是事件处理        if event.type == pygame.QUIT:        # 如果按下右上角的叉叉            mainloop = False                 # 退出主循环        elif event.type == pygame.KEYDOWN:   # 如果按下了键盘            if event.key == pygame.K_ESCAPE: # 而且按下的还是ESC键                mainloop = False             # 退出主循环    # 在这里做一些游戏相关的运算,这里暂时省略    text = "FPS: {0:.2f}".format(clock.get_fps())      pygame.display.set_caption(text)        pygame.display.flip()                    # 刷新显示pygame.quit()

到此,关于"PyGame之怎么打开一个窗口"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

循环 就是 运行 最大 白色 事件 大小 处理 学习 对象 左上角 还是 键盘 运算 对了 接下来 上限 代码 区域 名字 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器控件 name属性 软件开发英语怎么学 网络安全模型的基本要求 网络安全对国家信息安全影响 如何使用云服务器连接打印机 服务器控件怎么让文本框自己换行 歌尔软件开发11级 河北网络技术服务报价 淮南软件开发培训哪里有 剑灵s3模型截图数据库 ug电脑服务器名字 丽水品牌网络技术怎么样 对网络安全的认识和理解 互联网科技灰犀牛 云梦网络技术工资待遇 小学网络安全责任制评价考核办法 如何注册一家软件开发外包 服务器显示设置不可用 京东云服务器济南有吗 软件实施转数据库管理员 苏州程序软件开发费用 杭州威佩网络技术有限公搜 战地5联不上ea服务器 湖南益阳擅长软件开发合同律师 网站备份与数据库备份的区别 怎么用服务器做自己的网店 香港服务器哪款好 贵州项目软件开发有哪些 网络安全保障体系和能力 抖音是不是要有很大的数据库
0