簡體   English   中英

Python中的函數(pygame)

[英]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 ('TEXT\Credits.png')
Creditsrect= CreditsL.get_rect()
Credits = pygame.transform.scale(CreditsL, (int(Creditsrect.w/size), int(Creditsrect.h/size)))

由於必須導入大量圖像,所以我想知道如何制作一個可以導入和縮放圖片的函數,而不必復制和粘貼。

提前致謝

將當前代碼行包裝到一個函數中並調用它非常容易:

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('TEXT\Credits.png')
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('TEXT\Credits.png')

如果要避免必須為每張圖像復制粘貼最后一行,請使用[(name,path),]元組列表並從中構建一個字典:

SOURCES = [
    ("credit",  'TEXT\Credits.png'),
    ("something", 'TEXT\whatever.png'),
    # etc
    ]

IMAGES = dict((name, resize(path)) for name, path in SOURCES)

然后使用調整后的“信用”圖像:

do_something_with(IMAGES["credit"])

根據我的理解,通過pygame縮放圖像不是可行的方法。 使用簡單的照片編輯器(如果需要,請繪制)以相應地縮放圖像。 這是計算機要做的更多工作。 您的計算機做的工作越多,游戲效率就越低! 內存現在可能不再是問題,但是進行良好的實踐以及使代碼更易於查看可能是明智的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM