《Python和Pygame游戏开发指南》——2.3 建立一个Pygame程序

简介:

本节书摘来自异步社区《Python和Pygame游戏开发指南》一书中的第2章,第2.3节,作者[美]Al Sweigart(斯维加特), 李强 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.3 建立一个Pygame程序

Hello World的前几行,几乎在你使用Pygame编写的每一个程序中都会用作开头的几行。


screenshot

第1行是一条简单的import语句,它导入pygame和sys模块,以便我们可以在程序中使用这些模块中的函数。Pygame所提供的所有那些处理图形、声音以及其他功能的Pygame函数,都位于pygame模块中。

当导入pygame模块的时候要注意,你也会自动地导入位于pygame模块之中的所有模块,如pygame.images和pygame.mixer.music。不需要再用其他的import语句来导入这些位于该模块之中的模块。


screenshot

第2行也是一条import语句。然而,它使用了from modulename import 的格式,而不是import modulename的格式。通常,如果你想要调用模块中的一个函数,必须在导入该模块之后,使用modulename.functionname()的格式。然而,通过使用from modulename import ,你可以省略掉modulename.部分,而直接使用functionname()来调用(就像是调用Python的内建函数一样)。

针对pygame.locals使用这种形式的import语句,是因为pygame.locals包含了几个常量变量,它们前面不需要pygame.locals,也可以很容易地识别出是pygame.locals模块中的变量。对于所有其他的模块,通常会使用常规的import modulename格式(http://invpy.com/namespaces 更为详细地介绍我们想要这么做的原因)。


screenshot

第4行是pygame.init()函数调用,在导入了pygame之后并且在调用任何其他的Pygame函数之前,总是需要调用该函数。现在不需要知道这个函数到底做些什么,只需要知道,要让众多的Pygame函数能够工作,我们需要先调用这个函数。如果你看到诸如pygame.error: font not initialized的一个错误,检查看看是否在程序的开始处忘记调用pygame.init()了。


screenshot

第5行调用了pygame.display.set_mode()函数,它返回了用于该窗口的pygame. Surface对象(本章后面将会介绍Surface对象)。注意,我们给该函数传入了两个整数的一个元组值:(400, 300)。这个元组告诉set_mode()函数创建一个宽度和高度分别为多少个像素的窗口。(400, 300)将会创建一个宽400像素、高300像素的窗口。

记住给set_mode()传递两个整数的一个元组,而不是两个整数自身。调用该函数的正确方式是这样的: pygame.display.set_mode((400, 300))。诸如pygame.display. set_mode (400, 300)的一个函数调用,将会导致TypeError: argument 1 must be 2-item sequence, not int这样的一个错误。

返回的pygame.Surface对象(为了简便起见,我们将其称为Surface对象),存储在一个名为DISPLAYSURF的变量中。


screenshot

第6行通过调用pygame.display.set_caption()函数,设置了将要在窗口的顶部显示的标题文本。在这个函数调用中,传入了字符串值'Hello World!',以使得该文本作为标题出现,如图2-2所示。


screenshot

相关文章
|
1月前
|
数据采集 存储 XML
深入浅出:基于Python的网络数据爬虫开发指南
【2月更文挑战第23天】 在数字时代,数据已成为新的石油。企业和个人都寻求通过各种手段获取互联网上的宝贵信息。本文将深入探讨网络爬虫的构建与优化,一种自动化工具,用于从网页上抓取并提取大量数据。我们将重点介绍Python语言中的相关库和技术,以及如何高效、合法地收集网络数据。文章不仅为初学者提供入门指导,也为有经验的开发者提供进阶技巧,确保读者能够在遵守网络伦理和法规的前提下,充分利用网络数据资源。
|
1月前
|
存储 Java C语言
【python】——使用嵌套列表实现游戏角色管理
【python】——使用嵌套列表实现游戏角色管理
35 0
|
2月前
|
设计模式 测试技术 Python
游戏开发的挑战与解决方案:Python 视角
游戏开发是一个复杂且富有挑战性的过程,涉及到多个领域的知识和技术。从 Python 的角度来看,游戏开发面临着一系列的挑战,同时也有许多解决方案可供选择。
|
4天前
|
算法 Python
Python 一步一步教你用pyglet制作汉诺塔游戏
Python 一步一步教你用pyglet制作汉诺塔游戏
16 0
|
16天前
|
JavaScript 前端开发 API
游戏开发入门:Python后端与Vue前端的协同工作方式
【4月更文挑战第11天】使用Python后端(Flask或Django)和Vue.js前端开发游戏变得流行,能提高开发效率和可维护性。本文指导如何构建这样的项目,包括设置环境、创建虚拟环境、搭建后端API及前端Vue组件,强调前后端协作和API接口的重要性。这种架构促进团队合作,提升代码质量和游戏体验。
|
17天前
|
存储 Python
如何使用Python实现“猜数字”游戏
本文介绍了使用Python实现“猜数字”游戏的过程。游戏规则是玩家在给定范围内猜一个由计算机随机生成的整数,猜对则获胜。代码中,首先导入random模块生成随机数,然后在循环中获取玩家输入并判断大小,提供猜小、猜大提示。通过增加猜测次数限制、难度选择、优化输入提示和图形化界面等方式可优化游戏。这篇文章旨在帮助初学者通过实际操作学习Python编程。
28 2
|
19天前
|
存储 定位技术 数据库
【python毕业设计】python基于Pygame的吃金币游戏设计与实现(源码+毕业论文)【独一无二】
【python毕业设计】python基于Pygame的吃金币游戏设计与实现(源码+毕业论文)【独一无二】
|
1月前
|
开发框架 Linux 开发者
深入了解Python游戏开发模块:pyglet
深入了解Python游戏开发模块:pyglet
32 0
|
1月前
|
Python
利用python+pygame重现《黑客帝国》场景
利用python+pygame重现《黑客帝国》场景
16 0
|
1月前
|
存储 Python Windows
10分钟学会用python写游戏,实例教程
10分钟学会用python写游戏,实例教程
36 0