[pygame] Cannon 게임 프로젝트 2 - 기본 구조와 키보드, 마우스 처리

 제작로그 2 - pygame 의 기본구조 

import pygame
 
SCREEN_X = 800    #게임창 x 크기
SCREEN_Y = 600    #게임창 y 크기
 
screen = pygame.display.set_mode((SCREEN_X,SCREEN_Y)) #게임 윈도우 생성
background = pygame.Surface(screen.get_size())        #게임 화면을 그릴 surface
 
done=True
 
while done:        #이 루프를 벗어나면 게임이 종료됨
    ev = pygame.event.get()
    for event in ev:
        if event.type ==pygame.QUIT:     #창의 종료버튼이 눌렸을때 게임종료
            done = False     
        if event.type == pygame.MOUSEBUTTONUP:
            pass
        if event.type == pygame.MOUSEMOTION:    #마우스를 움직이고 있음
            print(pygame.mouse.get_pos())    #현재 마우스 커서의 위치를 구함
        if event.type == pygame.KEYDOWN:        #키보드의 키가 눌렸음
            if event.key == pygame.K_r:       # 'r' 키가 눌렸음
                pass
            if event.key == pygame.K_s:         # 's' 키가 눌렸음
                pass
        break
 
    keys=pygame.key.get_pressed() #키보드가 눌렸는지 확인
    if keys[pygame.K_LEFT]: #왼쪽 화살표 키가 눌렸을 경우
        pass
    if keys[pygame.K_RIGHT]: #오른쪽 화살표 키가 눌렸을 경우
        pass
    if keys[pygame.K_SPACE]: #스페이스바 키가 눌렸을 경우
        pass
 
    #적과 아군 캐릭터 표현. 점수 표현은 이곳에서
 
    screen.blit(background,(0,0)) #background 의 화면을 스크린에 복사
    pygame.display.flip()         #화면에 표시함

pygame 으로 게임을 만들때 소스는 위와 같은 기본 구조를 갖게 됩니다. 

소스에 간단한 주석을 달아 놨으니 보시면 쉽게 내용을 파악하실 수 있을 겁니다.

기본적으로 while 루프를 돌면서 게임이 계속 실행되며 위의 while 문을 벗어나면 게임이 종료되는 구조입니다.

따라서 게임에서 캐릭터 이동 등의 모든 구현은 while 루프 안에서 이루어 집니다.

>

마우스와 키보드의 입력은 pygame.event.get() 함수로 이벤트를 처리하는 것이 일반적이지만, 게임에서 키보드를 누르고 있을때 계속 작동하고 떼었을때 멈추는 구현을 위해서는 pygame.key.get_pressed()  함수를 이용해서 직접 키 값을 처리 하는게 쉽습니다. 

키코드의 값은 https://www.pygame.org/docs/ref/key.html 를 참고 하세요.

 

댓글