2. pygame 기본 구조
페이지 정보
작성자 관리자 댓글 0건 조회 1,641회 작성일 21-02-15 20:29본문
2. pygame 기본 구조
기본 구조
실습
# 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
댓글목록
등록된 댓글이 없습니다.