首页 >> 大全

Pygame 官方文档 - Tutorials

2023-08-09 大全 19 作者:考证青年

的模块介绍( )

: 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行代码创建了一个弹跳球动画。 让我们来看看同样东西的更友好版本。 这应该足够简单,随后可以完成细分。

_文档官方格式_文档官方下载

import sys, pygame
pygame.init()size = width, height = 320, 240
speed = [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事件。如果是这样,我们只需退出程序,将确保一切都干净利落。

是时候更新球的位置了。第17到21行将变量用目前速度移动。如果球移动到屏幕外,我们将朝那个方向反转速度。不完全是牛顿物理学,但它是我们所需要的。

在第23行,我们通过填充黑色RGB颜色来擦除屏幕。如果您从未使用动画,这可能看起来很奇怪。你可能会问“我们为什么要擦掉任何东西,为什么我们不仅把球移到屏幕上?”这不是计算机动画的工作方式。动画只不过是一系列单个图像,按顺序显示时,可以很好地愚弄人眼看动作。屏幕只是用户看到的单个图像。如果我们没有花时间从屏幕上擦掉球,我们实际上会看到球的“踪迹”,因为我们不断将球拉到新位置。

在第24行,我们将球图像绘制到屏幕上。图像的绘制由.blit()方法处理。 blit基本上意味着将像素颜色从一个图像复制到另一个图像。我们将blit方法传递给要复制的源(),以及将源放置到目标上的位置。

我们需要做的最后一件事是实际更新可见显示。 使用双缓冲区管理显示()。当我们完成绘制时,我们调用..flip()将完整显示更新为屏幕方法。这使得我们在屏幕上绘制的所有内容都变得可见。这种缓冲确保我们只能在屏幕上看到完全绘制的帧。没有它,用户将在创建时看到屏幕的一半完成部分。

这是对的简短介绍。 还有一些模块可以处理键盘,鼠标和摇杆()的输入处理。可以混合音频和解码流媒体音乐。使用,您可以绘制简单的形状,旋转和缩放图片,甚至可以实时处理图像的像素作为numpy数组。 还具有作为的跨平台显示层的能力。大多数模块都是用C语言编写的,实际上很少用完成。

网站提供了针对所有函数的完整参考文档以及适用于所有用户范围的教程。 源附带了许多例如 和UFO射击的例子。

和游戏

“适合游戏吗?”答案是,“这取决于游戏。”

实际上非常有能力运行游戏。甚至可能会在30毫秒内让您感到惊讶。尽管如此,一旦你的游戏开始变得更复杂,就不难达到上限。任何实时运行的游戏都将充分利用计算机。

在过去几年中,游戏开发出现了一个有趣的趋势,即向更高级别的语言发展。通常游戏分为两个主要部分。游戏引擎必须尽可能快,以及游戏逻辑,这使得引擎确实做了一些事情。不久前,游戏的引擎是用汇编编写的,部分用C语言编写。现在,C已经转移到了游戏引擎,而游戏本身通常是用更高级别的脚本语言编写的。像雷神之锤III竞技场和虚幻引擎这样的游戏将这些脚本作为可移植字节码运行。

文档官方下载__文档官方格式

2001年初,开发商Rebel Act 完成了他们的游戏,:Blade of 。使用他们自己的自定义3D引擎,游戏的其余部分是用编写的。这个是一个血腥的第三人称战斗游戏。在探索地下城和城堡的同时,你可以控制中世纪的战士进入错综复杂的斩首组合攻击。您可以为此游戏下载第三方附加组件,并发现它们只不过是源文件。

_文档官方格式_文档官方下载

最近,已被用于各种游戏,如自由力量 Force和巨大后院运动’ 。

和SDL是2D游戏的优秀C引擎。游戏仍然会发现他们运行时的最大部分是在SDL内部处理图形。 SDL可以利用图形硬件加速。启用此功能可以将游戏从每秒40帧运行到每秒200帧以上。当你看到你的游戏以每秒200帧的速度运行时,你会发现和游戏可以协同工作。

令人印象深刻的是和SDL在多个平台上的工作情况。例如,在2001年5月,我发布了自己的完整项目,,一款街机风格的动作游戏。让我感到惊讶的一件事是,一年之后,不需要任何补丁,错误修复或更新。游戏完全是在上开发的,但是在Linux,Mac OSX和许多Unix上运行,而我没有任何额外的工作。

但仍有非常明显的局限性。管理硬件加速图形的最佳方法并不总是从软件渲染中获得最快结果的方法。并非所有平台都提供硬件支持。当游戏变得更复杂时,它通常必须承诺一个或另一个。 SDL还有其他一些设计限制,例如全屏滚动图形可以快速将游戏降低到无法游玩的速度。虽然SDL不适合所有类型的游戏,但请记住像Loki这样的公司已经使用SDL来运行各种各样的零售质量游戏。

在编写游戏时,相当低级。您很快就会发现自己需要将常用功能包装到您自己的游戏环境中。关于这一点的好处是里面没有任何东西妨碍你。您的程序完全控制着一切。这样做的副作用是你会发现自己借了很多代码来组建一个更高级的框架。你需要更好地了解自己在做什么。

闭幕()

开发游戏是非常有益的,能够看到你编写的代码并与之交互是令人兴奋的。 目前有近30个其他项目使用它。它们中的一些现在已经可以游玩了。您可能会对访问网站感到惊讶,并了解其他用户可以使用做些什么。

引起我注意的一件事是第一次尝试游戏开发的人来到。我可以看到为什么游戏对于新程序员来说是一种吸引力,但是由于创建游戏需要更加深入地理解语言,因此可能很困难。我试图通过对这些概念不熟悉的人编写许多示例和教程来支持这组用户。

最后,我的建议是保持简单。我不能强调这一点。如果您打算创建第一个游戏,那么有很多东西需要学习。即使是更简单的游戏也会挑战你的设计,而复杂的游戏并不一定意味着有趣的游戏。当您了解时,您可以使用在一两周内创建一个简单的游戏。从那里你需要花费大量的时间来添加抛光剂,使其成为一个完整的可展示游戏。

模块概述

模块名称模块功能

cdrom

播放/回放

加载光标图像,包括标准指针

控制显示窗口或屏幕

draw

文档官方下载_文档官方格式_

在对象上绘制简单的形状

event

管理事件和事件队列

font

和 字体

image

保存和加载图像

管理操纵杆设备

key

管理键盘

mouse

管理鼠标

用numpy操纵声音

用numpy操纵图像

time

控制时间

缩放,旋转和翻转图像

以上内容,自己翻译,可能有误,可参考: - 模块介绍( to )

点我回顶部 ☚

Fin.

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了