Pygame错误没有显示缩放图像

时间:2014-01-16 19:43:31

标签: python image pygame sprite

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

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

好的,所以根据评论我没有画精灵,那我该怎么办?就像我说的,我是全新的,对不起。

1 个答案:

答案 0 :(得分:1)

从评论中,听起来你的问题不在于扩展失败,而是代码实际上并没有在任何地方显示你的精灵(放大或其他)。

如果是这样,那是因为你永远不会告诉pygame这样做。只是创建一个精灵实际上并没有绘制它。

你真的应该完成这些教程并查看一些示例程序,而不是试图找出什么是必要的,什么是不必要的,以及何时以及从参考文档中以什么顺序。

基本思想是将Sprite个对象放入Group个对象,然后放入事件循环或帧率循环中的某个位置,在每个{{1}上调用draw方法传递你的Grouppygame.sprite的概述中解释了这一点。

在你的程序中,由于你从未实际更新任何内容,只是渲染一个静态显示然后window并等待永久等待按键,你应该只能flip一次:< / p>

draw

在许多类型的游戏中,将thetorch = sprites.torch("torch.png", (50, 50)) everything = pygame.sprite.Group() everything.add(thetorch) everything.draw(window) pygame.display.flip() 这样的静态对象本身设置为构造函数中的add或反之亦然,在某些游戏中甚至可以创建一个特殊组对于Group自己构建的静态对象。虽然那不是很常见。再看一下这些例子。如果您转到draw文档并单击“搜索示例”,它将为您提供50个使用该方法的示例程序,您可以了解它们的组织方式。但首先,请查看tutorials中的基本示例。