Pygame 官方文档 - Tutorials

的模块介绍()
: Pete
:
这篇文章为程序员介绍了库 。原始版本出现在Py Zine , 第1卷第3期 。此版本包含一些小修订 , 以创建一个全面的更好的文章 。是一个扩展库 , 它包装了SDL库及其助手 。
历史()
始于2000年夏天 。作为一名多年的C程序员 , 我几乎同时发现了和SDL 。您已熟悉 , 版本为1.5.2 。您可能需要SDL的介绍 , 即Layer 。SDL由Sam 创建 , 是一个用于控制多媒体的跨平台C库 , 与相当 。它已被用于数百种商业和开源游戏 。我对两个项目的干净和简洁感到印象深刻 , 不久之后我意识到混合和SDL是一个有趣的提议 。
我发现了一个已经完成的小项目 , 具有完全相同的想法 , PySDL 。由Mark Baker创建 , PySDL是一个简单的SDL实现 , 作为扩展 。界面比通用的SWIG包装更干净 , 但我觉得它强制使用“C风格”的代码 。PySDL的突然死亡促使我接受了我自己的新项目 。
我想组建一个真正充分利用的项目 。我的目标是让做简单的事情变得容易 , 并且能直接做出困难的事情 。项目于2000年10月启动 。六个月后 , 版本1.0发布 。
尝试(TASTE)
我发现了解新库的最佳方法是直接跳到一个例子中 。在的早期 , 我用7行代码创建了一个弹跳球动画 。让我们来看看同样东西的更友好版本 。这应该足够简单 , 随后可以完成细分 。

Pygame 官方文档 - Tutorials

文章插图
import sys, pygamepygame.init()size = width, height = 320, 240speed = [2, 2]black = 0, 0, 0screen = pygame.display.set_mode(size)ball = pygame.image.load("intro_ball.gif")ballrect = ball.get_rect()while 1:for event in pygame.event.get():if event.type == pygame.QUIT: sys.exit()ballrect = ballrect.move(speed)if ballrect.left < 0 or ballrect.right > width:speed[0] = -speed[0]if ballrect.top < 0 or ballrect.bottom > height:speed[1] = -speed[1]screen.fill(black)screen.blit(ball, ballrect)pygame.display.flip()
这就像你可以获得一个弹跳动画一样简单 。首先 , 我们看到导入和初始化并不值得注意 。导入使用所有可用的模块导入包 。对.init()的调用初始化了每个模块 。
在第8行 , 我们创建了一个图形窗口 , 调用..() 。和SDL通过默认为图形硬件的最佳图形模式使这变得容易 。您可以覆盖模式 , SDL将补偿硬件无法执行的任何操作 。将图像表示为对象 。.() 函数创建一个新的对象 , 该对象表示实际显示的图形 。您对此对象所做的任何绘图都将在显示器上显示 。
在第10行 , 我们加载球的图像 。通过库支持各种图像格式 , 包括BMP , JPG , PNG , TGA和GIF 。.image.load()函数返回一个带有球数据的对象 。对象将保留文件中的任何颜色键()或Alpha透明度 。加载球图像后 , 我们创建一个名为的变量 。附带一个名为Rect的方便的实用程序对象类型 , 它表示一个矩形区域 。稍后 , 在代码的动画部分 , 我们将看到Rect对象可以做什么 。
此时 , 第13行 , 我们的程序已初始化并准备运行 。在无限循环(死循环)中 , 我们检查用户输入 , 移动球 , 然后绘制球 。如果您熟悉GUI编程 , 那么您就具有事件和事件循环的经验 。在中 , 这没有什么不同 , 我们检查是否发生了QUIT事件 。如果是这样 , 我们只需退出程序 , 将确保一切都干净利落 。