PyGame写写玩玩——第2篇_打开一个窗口
简述
本篇中,我们将打开一个窗口并且在窗口(window)中显示帧率(framerate)。我使用的是Python3,IDE是安装了pydev的Eclipse。你可以选择你喜欢的IDE或者编辑器。
导入和运行pygame
你可以创建一个python文件,比如mygame1.py。然后在文件开头写入
import pygame pygame.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 = True while 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 = True while 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 pygame pygame.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 = True while 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()

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
在 View 上使用挂起函数 | 实战
本文是探索协程如何简化异步 UI 编程系列的第二篇。第一篇侧重理论分析,这一篇我们通过实践来说明如何解决实际问题。如果您希望回顾之前的内容,可以在这里找到——《在 View 上使用挂起函数》。 让我们学以致用,在实际应用中进行实践。 遇到的问题 我们有一个示例应用:Tivi,它可以展示 TV 节目的详细信息。关于节目信息,应用内罗列了每一季和每一集。当用户点击其中的某一集时,该集的详细信息将以点击处展开的动画来展示 (0.2 倍速展示): 应用中采用InboxRecyclerView库来处理图中的展开动画: fun onEpisodeItemClicked(view: View, episode: Episode) { // 通知 InboxRecyclerView 展开剧集项 // 向其传入需要展开的项目的 id recyclerView.expandItem(episode.id) } InboxRecyclerView的工作原理是通过我们提供的条目 ID,在RecyclerView中找到对应项,然后执行动画。 接下来让我们看一下需要解决的问题。在这些相同 UI 界面顶部附近,展示...
- 下一篇
Debian9 下卸载 MariaDB 并安装 Mysql8
因为部分字段需要使用json格式,所以需要MySql 8! linux:Debian 9 mysql:8.0.13 完全卸载mariaDB sudo apt-get purge mariadb-* 这是卸载mysql sudo apt-get purge mysql-\* 弹出保留 MariaDB 数据库的提示,是彻底地卸载的话,一并移除即可。 卸载的时候可能会有各种问题,有的问题可能需要直接杀死进程。 # 查看进程 ps aux | grep amoeba # 杀死进程 kill -s 9 pid 安装mysql 首先,将 MySQL APT 存储库添加到系统,先到MySQL存储库下载页面,并使用以下wget命令下载最新的发行包: wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb 下载完成后,通过以下命令安装: sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb 你将会看到MySQL配置安装菜单,选择你要安装的版本。 默认选择了 MySQL 8.0,如果要安装 MySQL...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS关闭SELinux安全模块
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)