pygame教程----如何移动图像?

如何移动图像?

许多刚接触编程和图形的人都不知道如何让图像在屏幕上移动。如果不理解所有的概念,可能会非常混乱。你不是第一个被困在这里的人,我会尽力一步一步来。我们甚至会尝试以保持你的动画高效的方法结束。
请注意,在本文中我们不会教您使用python编程,只是向您介绍一些使用pygame的基础知识。

只是屏幕上的像素
Pygame有一个显示Surface。这基本上是一个在屏幕上可见的图像,图像由像素组成。改变这些像素的主要方法是调用blit()函数。这将像素从一个图像复制到另一个图像。
这是要理解的第一件事。当你在屏幕上分割图像时,你只是改变了屏幕上像素的颜色。像素不会被添加或移动,我们只是改变屏幕上像素的颜色。在pygame中,你将这些图像位到屏幕上也是Surface,但它们没有连接到显示Surface。当它们被传送到屏幕上时,它们被复制到显示器上,但你仍然拥有原始文件的唯一副本。
用这个简单的描述。也许您已经理解了“移动”图像需要什么。我们实际上没有移动任何东西。我们简单地把图像分割到一个新位置。但是在我们在新位置绘制图像之前,我们需要“擦除”旧的图像。否则,图像将在屏幕上的两个地方可见。通过快速擦除图像并在一个新的地方重新绘制,我们实现了运动的“错觉”。
在本教程的其余部分中,我们将把这个过程分解为更简单的步骤。甚至解释了让多个图像在屏幕上移动的最佳方法。你可能已经有问题了。比如,在把图像绘制到一个新位置之前,我们如何“擦除”图像?也许你还是完全迷路了?希望本教程的其余部分可以为您澄清这些问题。

让我们后退一步
也许像素和图像的概念对你来说还是有点陌生?好的,好消息是,在接下来的几节中,我们将使用代码来做我们想做的一切,它只是不使用像素。我们将创建一个由6个数字组成的小python列表,想象它代表一些我们可以在屏幕上看到的奇妙图形。这可能会让人惊讶,它与我们稍后将用真实图形所做的非常接近。
让我们从创建屏幕列表开始,用1s和2s的美丽风景填充它。

screen = [1, 1, 2, 2, 2, 1]
print screen
[1, 1, 2, 2, 2, 1]

现在我们已经创建了背景。除非我们在屏幕上也画出一个玩家,否则不会让人很兴奋。我们将创造一个看起来像数字8的强大英雄。让我们把他放在地图的中间,看看会是什么样子。

 screen[3] = 8
 print screen
[1, 1, 2, 8, 2, 1]

如果您使用pygame进行一些图形编程,那么这可能是您所得到的最多的内容。屏幕上有一些好看的东西,但它不能移动。也许现在我们的屏幕只是一个数字列表,更容易看到如何移动他?

英雄出击
在我们开始移动角色之前。我们需要追踪他的位置。在上一节我们画它的时候,我们随便选了一个位置。这次我们来正式一点。

 playerpos = 3
 screen[playerpos] = 8
 print screen
[1, 1, 2, 8, 2, 1]

现在把他调到一个新的职位很容易。我们只需要改变playerpos的值,并将其再次呈现在屏幕上。

 playerpos = playerpos - 1
 screen[playerpos] = 8
 print screen
[1, 1, 8, 8, 2, 1]

哎呦。现在我们可以看到两个英雄。一个在老位置,一个在新位置。这就是为什么我们需要先“抹去”英雄原来的位置,然后再把他画到新的位置上。要删除他,我们需要将列表中的值修改回英雄出现之前的值。这意味着我们需要在英雄替换它们之前跟踪屏幕上的值。有几种方法可以做到这一点,但最简单的通常是保留一个屏幕背景的单独副本。这意味着我们需要对我们的小游戏做出一些改变。

创建一个背景
我们要做的是创建一个单独的列表,称之为background。我们将创建背景,使它看起来像我们的原始屏幕所做的,1和2。然后我们将把每个项目从背景复制到屏幕上。在那之后,我们终于可以把我们的英雄画回到屏幕上。

 background = [1, 1, 2, 2, 2, 1]
 screen = [0]
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值