如果这是一个简单的修复,请提前道歉(我对编程相对较新)。我正在创建一个python游戏(使用pygame),它将包含很多图像。我目前正在使用以下代码根据屏幕分辨率导入和缩放图片:
pygame.init()
WINDOW= pygame.display.Info() # size of window's width in pixels
WINDOWW = WINDOW.current_w
WINDOWH = WINDOW.current_h
size = 1920/WINDOWW
CreditsL = pygame.image.load ('TEXTCredits.png')
Creditsrect= CreditsL.get_rect()
Credits = pygame.transform.scale(CreditsL, (int(Creditsrect.w/size), int(Creditsrect.h/size)))
由于我必须导入大量图像,我想知道如何制作一个函数来导入和缩放图片,而不必复制和粘贴。
提前致谢
def resize(imgpath):
img = pygame.image.load(imgpath)
rect = img.get_rect()
return pygame.transform.scale(img, (int(rect.w/size), int(rect.h/size)))
Credits = resize('TEXTCredits.png')
如果要避免为每个图像复制粘贴最后一行,请使用 [(名称、路径)、] 元组列表并从中构建字典:
SOURCES = [
("credit", 'TEXTCredits.png'),
("something", 'TEXTwhatever.png'),
# etc
]
IMAGES = dict((name, resize(path)) for name, path in SOURCES)
然后使用调整大小的"信用"图像:
do_something_with(IMAGES["credit"])
当前的代码行包装到一个函数中并调用它非常容易:
def importer(path):
CreditsL = pygame.image.load(path)
Creditsrect = CreditsL.get_rect()
return pygame.transform.scale(CreditsL,
(int(Creditsrect.w/size),
int(Creditsrect.h/size)))
Credits = importer('TEXTCredits.png')
根据我的理解,通过pygame缩放图像不是要走的路。使用一个简单的照片编辑器(如果需要,请画!)相应地缩放图像。计算机要做更多的工作。您的计算机所做的工作越多,游戏效率就越低!内存现在可能不是问题,但养成良好的实践以及使您的代码更易于查看可能是明智的。