本章,你将创建第一个 Pygame 应用程序。对于环境的配置,详见上一章。

导航

上一章:预备篇
下一章:重要的概念及对象

文章目录

  • 导航
  • 新建文件
  • 导入模块
  • 初始化 Pygame
  • 设置窗口
  • 事件循环
  • 完整代码
  • 结语

新建文件

新建一个文件,命名为first_app.py

导入模块

在新建的文件中添加如下代码:

import sysimport pygame

上述代码将导入 pygame 和 sys 模块,以便使用这些库中的函数。

初始化 Pygame

pygame.init()

以上的代码将初始化 Pygame 模块。

设置窗口

SCREEN = pygame.display.set_mode((1200, 800))
pygame.display.set_caption('First Application')

以上的代码,使用了 pygame.display模块。这是一个很常用的模块,它用于控制显示屏幕及窗口,可以参照官方文档对此模块的解释。
pygame.display.set_mode函数将初始化窗口,第一个参数需要传入一个元组,表示窗口的大小,其他参数,本章暂时不会用到,请参见官方文档的解释。
pygame.display.set_caption函数传入一个字符串,表示窗口的标题。
注意:请确保pygame.display.set_mode函数传入的是一个元组,而不是两个数,也就是不要漏了括号。

事件循环

事件循环,是 Pygame 以及大多数游戏框架中很重要的概念之一。在这个机制下,程序捕捉到的事件(event),诸如点击鼠标、按下键盘按键等,将依次添加到事件队列(event queue)中。
在 Pygame 中,游戏以循环的方式进行,每次循环,通常进行事件处理以及屏幕绘制
本章中,游戏循环的代码如下:

while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()pygame.display.update()

首先,由while True开始了游戏循环。
接下来,使用了pygame.event模块中的get函数。pygame.event模块用于与事件及事件队列进行交互。pygame.event.get函数将返回并清空事件队列中的所有事件,因此用for循环进行遍历。每个事件都是一个pygame.event.Event对象,该类定义了type属性,当此属性为pygame.QUIT时,代表用户点击了窗口标题栏中的“关闭”按钮,或其他退出的动作,触发了这个事件,此时将调用pygame.quitsys.exit函数以安全关闭窗口并退出程序。
事件循环后,调用了pygame.display.update函数,它将更新显示屏幕,即进行了屏幕重绘
注意:
1. 请确保调用了sys.exit函数,因为pygame.quit函数只是取消初始化所有的 Pygame 模块,并不会退出程序;同时,也不要仅调用sys.exit函数,尽管这在大多数情况下可以正常退出,但是没有正常地退出 Pygame 模块有可能会带来意想不到的后果。
2. 查阅官方文档,可以发现还有一个pygame.display.flip函数,它的作用与pygame.display.update函数一样,但是pygame.display.update函数允许传入一个参数,可以重绘窗口的一部分,而不是重绘整个窗口。当然,不传参数的pygame.display.update函数与pygame.display.flip函数一模一样。详见官方文档解释。

完整代码

import sysimport pygamepygame.init()SCREEN = pygame.display.set_mode((1200, 800))
pygame.display.set_caption('First Application')while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()pygame.display.update()

代码运行截图:

结语

至此,我们的第一个用 Pygame 创建的应用程序就完成了。下一章,我们将学习 Pygame 模块中的重要的概念及对象。

Pygame 教程(1):创建第一个应用程序相关推荐

  1. [转]VS2010 教程:创建一个 WPF 应用程序 (第一节)

    [转]VS2010 教程:创建一个 WPF 应用程序 (第一节) http://msdn.microsoft.com/zh-cn/ff629048(zh-cn) Extended WPF Toolki ...

  2. Eclipse中创建第一个窗口程序

      之前在VS中用C#做程序开发时,做的最多的是Winform窗口.现在学习在Eclipse中用java编程序,也希望尽快学习如何写窗口程序,但是在选择Eclipse做开发工具的时候就听说Eclips ...

  3. VS2010 教程:创建一个 WPF 应用程序 (第一节)

    来自:https://msdn.microsoft.com/zh-cn/library/ff629048.aspx [原文发表地址] VS2010 Tutorial: Build a WPF App ...

  4. BI之SSAS完整实战教程3 -- 创建第一个多维数据集

    上一篇我们已经完成了数据源的准备工作,现在我们就开始动手,创建第一个多维数据集(Cube). 文章提纲 使用多维数据集向导创建多维数据集 总结Cube设计器简介 维度细化 总结 一.使用向导创建多维数 ...

  5. Dreamweaver2021安装教程与创建第一个网页

    下载地址: https://pan.baidu.com/s/13EIiv4etSzjqRrMWDQp4-Q 提取码:b390 一.解压DW2021文件: 二.以管理员身份运行: 三.更改默认安装位置, ...

  6. Qt使用教程之创建Qt Quick应用程序(一)

    2019独角兽企业重金招聘Python工程师标准>>> <Qt Enterprise最新版下载> 本教程主要使用内置的QML类型并简单介绍Qt Quick的基本概念.本文 ...

  7. Flutter 创建第一个应用程序

    转载https://www.tuicool.com/articles/vYf6raZ 主要介绍下如何用Flutter创建一个应用程序,程序一步步由简单到复杂,操作步骤来自官方,我觉得官方的已经写得挺好 ...

  8. 【MFC】创建第一个应用程序

    00. 目录 文章目录 00. 目录 01. 概述 02. 创建应用程序 03. 程序示例 04. 附录 01. 概述 要创建MFC应用程序,您可以使用向导来自定义您的项目.您也可以从头创建应用程序. ...

  9. android studio创建第一个安卓程序加载html5页面(一)

    前言 软件版本:android studio v1.0正式版,由于v0.x以来软件变化一直比较大,很多问题搜索的解决方案也都是v0.x版本时代的,故首先声明一下版本. 动机:由于工作中需要对移动端软件 ...

最新文章

  1. html两个性别按钮并排,css实现男女切换按钮
  2. samtools merge_【生信工具】Samtools 安装与使用 | “十年以后,工具难免沦为朋友”...
  3. 源码分析(一) 进程cleos的命令解析
  4. C# DirectX编程设置全屏和PresentParameters参数
  5. MySQL之条件表达式
  6. SAP云采购解决方案入华在即
  7. mongodb 启动方法
  8. 第一次作业:项目范围管理论文的提纲
  9. html5决战沙城源码,决战沙城h5符文玩法介绍 怎么获得完美首通
  10. python学习-类(global、nonlocal、继承、多态)
  11. celery-02-安装与使用说明-for-redis
  12. linux mysql可视化_常用的 7 款 MySQL 客户端工具,你值得拥有!
  13. JRebel-JVMTI [ERROR] You’re using an incompatible ‘jrebel.jar’ with the JRebel Agent.【完美解决方案】
  14. 移动通信网络的构成思维导图
  15. 线性代数 --- Gauss消元的部分主元法和完全主元法(补充)
  16. 项目二 管理与维护Linux系统
  17. 免费通信时代何时真正到来?
  18. java如何实现获取客户端公网IP地址?若不会,我手把手教你|非常详细,建议收藏
  19. VPP学习(二)VPP安装
  20. Cocos2D教程:使用SpriteBuilder和Cocos2D 3.x开发横版动作游戏——Part 1

热门文章

  1. CnOpenData医疗信息大数据
  2. linux用c创建数据库,使用c语言实现linux数据库的操作
  3. dedecms前台RCE代码审计复现
  4. (收藏)C#开源资源大汇总
  5. 西门子1200与200SMART寻址的区别
  6. C语言程序设计——三子棋游戏
  7. 记录一次easyUI按钮失效问题
  8. Couldcompare下采样点云
  9. 交通交警行业相关名词解释说明,主要包含人、车、路三大块的内容
  10. MATLAB矩阵运算函数