Functions in Python (pygame)



如果这是一个简单的修复,请提前道歉(我对编程相对较新)。我正在创建一个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缩放图像不是要走的路。使用一个简单的照片编辑器(如果需要,请画!)相应地缩放图像。计算机要做更多的工作。您的计算机所做的工作越多,游戏效率就越低!内存现在可能不是问题,但养成良好的实践以及使您的代码更易于查看可能是明智的。

最新更新