所以我试图在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
好的,所以根据评论我没有画精灵,那我该怎么办?就像我说的,我是全新的,对不起。
答案 0 :(得分:1)
从评论中,听起来你的问题不在于扩展失败,而是代码实际上并没有在任何地方显示你的精灵(放大或其他)。
如果是这样,那是因为你永远不会告诉pygame这样做。只是创建一个精灵实际上并没有绘制它。
你真的应该完成这些教程并查看一些示例程序,而不是试图找出什么是必要的,什么是不必要的,以及何时以及从参考文档中以什么顺序。
基本思想是将Sprite
个对象放入Group
个对象,然后放入事件循环或帧率循环中的某个位置,在每个{{1}上调用draw
方法传递你的Group
。 pygame.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中的基本示例。