【问题标题】:Pygame Error Not Showing Scaled ImagePygame 错误未显示缩放图像
【发布时间】:2014-01-16 19:43:31
【问题描述】:

所以我试图在 Pygame 中绘制一个简单的火炬图像。但问题是这个精灵和我所有的其他精灵都在 10x10 左右。所以我使用比例来实验性地绘制它:

import pygame, sys
class sprites:
    class torch(pygame.sprite.Sprite):
        def __init__(self, image_file, location):
            pygame.sprite.Sprite.__init__(self)
            self.image = pygame.image.load(image_file)
            self.rect = self.image.get_rect()
            self.rect.left, self.rect.top = location
            self.image = pygame.transform.scale(self.image, ((100, 100)))
window = pygame.display.set_mode((300, 300))
width, height = window.get_size()
pygame.mouse.set_visible(True)
window.fill([0, 0, 0])
sprites.torch("torch.png", (50, 50))
pygame.display.flip()
while True:
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            sys.exit()

我是 pygame 的新手,所以我不确定我做错了什么。这个问题的另一个解决方案是,如果我可以将分辨率设置为 100x100 但尺寸设置为 500x500 提前谢谢你们! https://www.dropbox.com/s/38cy7a15jynes7c/torch.png

好的,根据cmets我没有画出精灵,那我该怎么做呢?就像我说的,我是全新的,对不起。

【问题讨论】:

  • 此外,您永远不会将精灵绘制到窗口(或将其添加到组或对其进行任何其他操作)。
  • 好吧,抱歉看起来完全愚蠢,但我对 pygame 完全陌生。你能为这个程序写一个修复程序吗?我用什么函数来绘制精灵?我怎样才能扩大规模?
  • @abarnert 没有。我希望它占用 100x100。我想我太从字面上看位置了。透明?是的,它们对黑色看起来是透明的,但它们实际上并不透明。并不是说它有什么不同
  • 那你是说会画出尺寸比例?我不确定那个争论实际上在做什么。
  • 好的,50x50 的东西是我的错;我没注意。您正在以默认大小加载 3x5 图像并将其缩放到 100x100,这应该非常难看,但完全可见。所以我会删除我的第一条评论。

标签: python image pygame sprite


【解决方案1】:

从 cmets 看来,您的问题不是放大失败,而是代码实际上并未在任何地方显示您的精灵(放大或其他)。

如果是这样,那是因为你从来没有告诉 pygame 这样做。仅仅创建一个精灵并不能真正绘制它。

您确实应该通读教程并查看一些示例程序,而不是试图仅从参考文档中弄清楚什么是必要的,什么是不必要的,何时以及以什么顺序。

基本思想是将Sprite 对象放入Group 对象中,然后在事件循环或帧率循环中的某个位置,在每个Group 上调用draw 方法,将@987654328 传递给它@。这在pygame.sprite 的概述中进行了解释。

在您的程序中,由于您从未真正更新任何内容,而只是渲染一个静态显示,然后 flip 它并永远等待按键,您应该能够只 draw 一次:

thetorch = sprites.torch("torch.png", (50, 50))
everything = pygame.sprite.Group()
everything.add(thetorch)
everything.draw(window)
pygame.display.flip()

在许多类型的游戏中,将像 add 这样的静态对象自己放入构造函数中的 Group 是有意义的,反之亦然,在某些游戏中甚至为静态对象创建一个特殊组draw自己在施工。虽然这不是很常见。再次,查看示例。如果您访问draw 文档并单击“搜索示例”,它将为您提供 50 个使用该方法的示例程序,您可以了解它们的组织方式。但首先,请浏览tutorials 中的真正基本示例。

【讨论】:

  • thetorch.draw(window)AttributeError: 'torch' 对象没有属性 'draw'
  • 哦,对了,他们很久以前拿出了个人Sprite的图;这个想法是您将Sprites 添加到Group,然后调用draw。让我更新答案。
  • 我从中学到了很多关于 pygame 的知识,我可以继续,谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多