인프런 커뮤니티 질문&답변

해콩순이님의 프로필 이미지

작성한 질문수

PyGame 어드벤쳐 : 위니브 월드를 수복하라!

002. 요리하기

질문드립니다

21.08.18 10:08 작성

·

209

0

안녕하세요.
강의 잘 듣고 있습니다.^^
해당 강의 요리게임 강좌 코드 중 질문이 생겨 질문드립니다/
마지막 줄 Quit 이벤트를 받아오고
코드를 이렇게 작성하는데
왜 pg.sidplay.quit()
이 for문 안에 들어가지 않고 따로 빠지는지 궁금합니다!
   for 이벤트 in pg.event.get():
        if 이벤트.type ==pg.QUIT:
            실행여부=False


pg.display.quit()

답변 3

0

Hojun Lee님의 프로필 이미지
Hojun Lee
지식공유자

2021. 08. 18. 11:11

1. for안에 있는 pygame.event.get()은 함수를 통해 게임 중간에 발생한 이벤트를 캐치하여 검사하겠다는 얘기입니다. 마우스 클릭, 키보드 클릭 등이요. 

2. if문 안에 들어가는 pygame.QUIT은 종료 이벤트이며 창에서 X 버튼을 클릭하면 나오는 이벤트에요. 그 다음 '실행여부 = False'는 만약 종료 이벤트가 맞다면 메인 루프의 while문이 안돌아가게 하는 것입니다.

3. pg.display.quti()은 메인루프가 종료되면 '메인루프 밖에서' 종료되게 해주는 이벤트입니다.

3번이 궁금하셨던 것 같은데 주로 메인루프가 종료되도 실행되는 코드가 있는 경우 이 방식을 사용합니다. 루프 안에 게임 이벤트만 넣기 위해서도 위 방식을 사용하죠.

큰 차이가 없어서 처음에 사용했던 방식을 그대로 사용하셔도 되요. :)

해콩순이님의 프로필 이미지
해콩순이
질문자

2021. 08. 18. 16:41

잘 이해되었습니다.

감사합니다^^

0

해콩순이님의 프로필 이미지
해콩순이
질문자

2021. 08. 18. 10:40

아하 그러면

Pg.display.quit() 을 꼭 넣어야 창이 닫히는건가요??

저 코드는 어떤 역할을 하나요?

0

Hojun Lee님의 프로필 이미지
Hojun Lee
지식공유자

2021. 08. 18. 10:16

안녕하세요. :)

for문 위 아래로 있는 pg.display.update()와 pg.display.quit()은 게임의 '이벤트'가 아니기 때문에 그렇습니다.