머신러닝

본문 바로가기
사이트 내 전체검색


머신러닝
머신러닝

2. pygame 기본 구조

페이지 정보

작성자 관리자 댓글 0건 조회 1,641회 작성일 21-02-15 20:29

본문

2. pygame 기본 구조

기본 구조

  

1.PNG



실습


# Import a library of functions called 'pygame' 

import pygame 


python을 실행할 때 pygame을 import 해주셔야 사용할 수 있습니다. 


# Initialize the game engine

pygame.init()


pygame 모듈을 사용할 때 초기화(init)를 해주어야 합니다. 


pygame에서 사용할 여러 가지 변수나 설정은 위의 소스처럼 전역 변수로 만들어주는 것이 꽤 도움이 됩니다. 


# Define the colors we will use in RGB format

BLACK= ( 0,  0,  0)

WHITE= (255,255,255)

BLUE = ( 0,  0,255)

GREEN= ( 0,255,  0)

RED  = (255,  0,  0)


대체적으로 색깔, 위치, 화면 설정 등의 변수를 전역 변수로 사용하는 경우가 많습니다.


# Set the height and width of the screen

size  = [400,300]

screen= pygame.display.set_mode(size)

  

pygame으로 생성할 창의 크기를 정해준 변수입니다. x축의 길이는 400, y축의 길이는 300이라고 설정하는 것과 같습니다.

pygame으로 생성할 창의 크기를 설정한 변수를 통해 GUI 창을 설정해는 변수입니다. 

화면을 초기화, 화면에 데이터를 추가하는 것 등은 해당 screen 변수를 통해 적용되어집니다. 


pygame.display.set_caption("Game Title")

  

GUI 창이 켜질 때, 창 이름을 설정하는 라인입니다.

이름은 한 번 설정하게 되면, 게임이 꺼지기 전까지 사라지지 않기 때문에 해당 라인은 전역 변수가 선언되는 라인에서 실행해주었습니다. 


#Loop until the user clicks the close button.

done= False

clock= pygame.time.Clock()


화면을 초당 몇 번 출력하는가를 설정하기 위해 선언되는 변수입니다.

초당 화면 출력은, 게임에서 FPS(Frame Per Second) 혹은 Frame Rate라고 합니다. 

해당 변수를 이용하여 게임의 FPS를 설정해줄 수 있습니다. 


while not done:

  

    # This limits the while loop to a max of 10 times per second.

    # Leave this out and we will use all CPU we can.

   

    clock.tick(10)

clock 함수를 통해 FPS(초당 프레임)를 설정한다. 

값을 10으로 한 것은 초당 10번의 화면을 출력해주겠다는 의미입니다.

해당 값이 높을 수록 CPU를 많이 먹게 됩니다. 

또한 프레임이 너무 높아서 모니터가 제대로 출력하지 못하는 경우도 있으니 주의해서 사용하시는 게 좋습니다. 

기본적으로 10 혹은 30 혹은 60이 가장 좋습니다. 

    

    # Main Event Loop

    for eventin pygame.event.get():# User did something

        if event.type == pygame.QUIT:# If user clicked close

            done=True # Flag that we are done so we exit this loop


pygame.event.get() 함수를 통해 게임 중간에 발생한 이벤트를 캐치하여 검사하기 위한 인덱스로 사용하겠다는 의미입니다.

게임 중에 마우스 클릭, 혹은 키보드 클릭 등에 대한 이벤트가 발생하면 이를 인지하고, 과연 어떤 이벤트가 발생했는지 for문을 통해 검사하는 구조를 위한 라인입니다. 

QUIT 값은 pygame이 종료되는 이벤트를 말하며, GUI 창에서 x 버튼을 누르면 발생하는 이벤트입니다. 

  

    # All drawing code happens after the for loop and but

    # inside the main while done==False loop.

      

    # Clear the screen and set the screen background

    screen.fill(WHITE)


해당 라인은 전체 화면을 관리하는 변수인 screen을 통해 fill() 함수를 실행한 것입니다.

fill() 함수는 화면 전체를 특정 색깔로 모두 채워주는 함수입니다. 

여기서는 화면 전체를 WHITE 즉, RGB 값이 (255, 255, 255)인 값으로 채워주는 것을 말합니다. 

그렇게 되면 흰색 화면이 출력되겠습니다. 

 

    '''

    Your Work.....

    '''

    pygame.draw.polygon(screen, GREEN, [[30,150], [125,100], [220,150]],5)

    pygame.draw.polygon(screen, GREEN, [[30,150], [125,100], [220,150]],0)

    pygame.draw.lines(screen, RED,False, [[50,150], [50,250], [200,250], [200,150]],5)

    pygame.draw.rect(screen, BLACK, [75,175,75,50],5)

    pygame.draw.rect(screen, BLUE, [75,175,75,50],0)

    pygame.draw.line(screen, BLACK, [112,175], [112,225],5)

    pygame.draw.line(screen, BLACK, [75,200], [150,200],5)

 

    # Go ahead and update the screen with what we've drawn.

    # This MUST happen after all the other drawing commands.

    pygame.display.flip()


작성한 그리기 함수를 통해 지금까지 화면에 작성한 모든 행위를 업데이트해주기 위한 함수입니다.

즉, 해당 라인이 없으면, 지금까지 사용한 pygame.draw 함수들은 출력이 되지 않습니다.

물론 screen.fill(WHITE) 함수 또한 실행되지 않은 채 화면은 업데이트 되지 않을 것입니다.

때문에 반드시 pygame의 메인 루프의 끝에는 해당 pygame.display.flip() 함수를 사용해주셔야 합니다.



사각형 - pygame.draw.rect

삼각형 - pygame.draw.polygon 

원 - pygame.draw.circle 

타원 - pygame.draw.ellipse 

원(특정 부분까지 그리기) - pygame.draw.arc 

선 - pygame.draw.line 

여러 개의 선 - pygame.draw.lines 

부드러운 선 - pygame.draw.aaline 

여러 개의 부드러운 선 - pygame.draw.aalines 



실행 


jklee@curtsying:~/ros$ python3 pygame_test.py 

pygame 1.9.6

Hello from the pygame community. https://www.pygame.org/contribute.html



2.PNG


댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.