2017-12-19 23 views
2

저는 파이썬으로는 경험이 거의없고 학교 프로젝트를위한 사수 게임을 작성하고있었습니다. 이미지를 보유하는 일부 변수를 중복 제거하려고합니다.사전에 여러 개의 이미지 파일 저장

wavetransition=pygame.image.load("TransitionScreen.png") 
wavetransition=pygame.transform.scale(wavetransition,(WIDTH,HEIGHT)) 
wavetransition2=pygame.image.load("TransitionScreen1.png") 
wavetransition2=pygame.transform.scale(wavetransition2,(WIDTH,HEIGHT)) 
wavetransition3=pygame.image.load("TransitionScreen2.png") 
wavetransition3=pygame.transform.scale(wavetransition3,(WIDTH,HEIGHT)) 
wavetransition4=pygame.image.load("TransitionScreen3.png") 
wavetransition4=pygame.transform.scale(wavetransition4,(WIDTH,HEIGHT)) 
wavetransition5=pygame.image.load("TransitionScreen4.png") 
wavetransition5=pygame.transform.scale(wavetransition5,(WIDTH,HEIGHT)) 

이러한 이미지는 게임의 레벨간에 전환 화면으로 사용됩니다. 그런 다음 random.randrange 변수에서 호출됩니다.

rander=random.randrange(1,4)#Just For These Numbers To Redefine 
if rander2==1:#The Random Backgrounds Displayed On The Wave Screen 
     screen2.blit(wavetransition,(0,0)) 
if rander2==2: 
     screen2.blit(wavetransition2,(0,0)) 
if rander2==3: 
     screen2.blit(wavetransition3,(0,0)) 
if rander2==4: 
     screen2.blit(wavetransition4,(0,0)) 
if rander2==5: 
     screen2.blit(wavetransition5,(0,0)) 

'short'로 표시 할 수있는 방법이 있습니까? 감사합니다

답변

1

사용 목록 및 반복은 :

# image paths 
img_paths = ["TransitionScreen.png", "TransitionScreen1.png", ...] 

wavetransitions = [] 
for img_path in img_paths: 
    # loads, resizes and adds image to wavetransitions list 
    img = pygame.image.load(img_path) 
    img = pygame.transform.scale(img, (WIDTH, HEIGHT)) 
    wavetransitions.append(img) 

# as rander2 is the index+1 of the image, you can simply do 
screen2.blit(wavetransitions[rander2 - 1], (0, 0)) 
+0

감사합니다! 목록과 반복을 사용하고이 대답을 확인합니다. – tomis

0

당신은 이미지에 대한 listwavetransitions에 대한 dict을 사용할 수 있습니다 도움을

import re 
import random 

images = ["TransitionScreen0.png", # Note, added 0 to the filename 
      "TransitionScreen1.png", 
      "TransitionScreen2.png", 
      "TransitionScreen3.png", 
      "TransitionScreen4.png"] 

wavetransitions = dict() 

for image in images: 
    m = re.search(r'(\d+)$', image.split('.')[0]).group(0) 
    key = "wavetransition" + m # m is the number that ends the name of image 
    value = pygame.image.load(image) 
    value = pygame.transform.scale(value, (WIDTH, HEIGHT)) 
    wavetransitions[key] = value 

wavetransitions_keys = wavetransitions.keys() 

screen2.blit(wavetransitions[random.choice(wavetransitions_keys)], (0, 0))