python study/import pygame

python)pygame에서 그림이 그려지는 순서, 제대로 이해하기

mhe1239 2024. 12. 23. 02:35

pygame은 스크린에 뭔가를 그리는 함수가 매우 다양하다.

대표적으로 많이 사용하는 것은 pygame.draw류에 속하는 함수나 blit,fill 등을 사용하여 사진 등을 띄우는데에 사용한다.

그리기 순서 예를 이해하기 위한 코드 예시

import pygame
import sys
WHITE=(255,255,255);RED=(255,0,0)
BLUE=(0,0,255);GREEN=(0,255,0)
screenw,screenh=300,300
def main():
    pygame.init()
    screen=pygame.display.set_mode((screenw,screenh))
    pygame.display.set_caption("drawing order ex")
    while True:
        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                pygame.quit()
                sys.exit()
        screen.fill(WHITE)#이전 프레임을 지우고 배경을 흰색으로 설정.(이렇지 않다면 기본은 BLACK임)
        pygame.draw.rect(screen,RED,(50,50,200,200))#빨간색 사각형을 먼저 그림
        pygame.draw.circle(screen,BLUE,(150,150),100)#파란색 원이 빨간 사각형 위에 그려짐
        #초록색 선이 가장 마지막에 그려져 모든 요소 위에 표시
        pygame.draw.line(screen,GREEN,(50,50),(250,250),5)
        pygame.display.update()
if __name__ == "__main__":
    main()

run ex

이 코드를 통해 pygame은 화면에 그리는 모든 요소를 코드에서 호출된 순서대로 처리한다는 것을 알 수 있다.

나중에 호출된 그리기 함수일수록 앞에 호출된 요소들을 덮어쓰게 된다.
이 특징을 활용하면 레이어를 조정하거나 의도적인 겹침을 구현할 수 있다.

필자의 경우 이 특성을 활용해 스킬 쿨타임 UI를 만드는데 유용하게 사용했다.
이미지(img를 blit) 말고는 모두 draw함수 및 font.render를 사용했다.