Pygame错误未显示缩放图像



所以我试图在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

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

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

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

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

基本思想是将Sprite对象放入Group对象中,然后在事件循环或帧速率循环中的某个位置,在每个Group上调用draw方法,并将其传递给window。这将在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个使用该方法的示例程序,你可以了解它们是如何组织的。但是,首先,请浏览教程中真正基本的示例。

最新更新