개발

파이썬 오락실 게임 만들기 프로젝트 (캐릭터 이동)

changha. 2020. 7. 28. 16:12
import pygame
import os

# 0. 제일 먼저 해야되는 것들 
    # 기본 초기화
    pygame.init()

    # 화면 크기 설정

    # 화면 타이틀 설정

    # FPS 설정 

# 1. 사용자 게임 초기화 (배경 화면, 게임 이미지, 좌표, 속도, 폰트 등 )

while running:
            # 2. 이벤트 처리(키보드, 마우스 등)
              
            # 3. 게임 캐릭터 위치 정의 
             
            # 4. 충돌 처리
              
            # 5. 화면에 그리기
            
 
pygame.quit()

os는 (OS: Operating System)으로 디렉터리, 파일 등등 제어하는 모듈이다

여기서는 디렉터리를 추출하거나 경로를 생성하는데 쓰인다 

 

위의 주석처리들이 게임 만들 때 뼈대라고 할 수 있다

 

# 0. 제일 먼저 해야 되는 것들 

import pygame
import os 
##########################################################################
# 기본 초기화(반드시 해야 하는 것들)
pygame.init()

# 화면 크기 설정 
screen_width = 640 #가로
screen_height = 480 # 세로
screen = pygame.display.set_mode((screen_width, screen_height))

# 화면 타이틀 설정 
pygame.display.set_caption("Nado Pang")

# FPS
clock = pygame.time.Clock()

pygame.init()으로 초기화해주고

 

화면 크기를 설정해준다

 

pygame.time.Clock -> 게임 루프의 주기를 결정할 객체

 

기본 초기화

current_path = os.path.dirname(__file__) #현재 파일의 위치 반환 
image_path = os.path.join(current_path, "images")# images 폴더 위치 반환 

# 배경 만들기
background = pygame.image.load(os.path.join(image_path, "background.png"))

#스테이지 만들기
stage = pygame.image.load(os.path.join(image_path, "stage.png"))
stage_size = stage.get_rect().size
stage_height = stage_size[1] #스테이지 높이 위에 캐릭터 두기 위해 사용

#캐릭터 만들기
character = pygame.image.load(os.path.join(image_path, "character.png"))
character_size = character.get_rect().size
character_width = character_size[0]
character_height = character_size[1]
character_x_pos = (screen_width / 2) - (character_width / 2)
character_y_pos = screen_height - character_height - stage_height

이미지들은 그림판에서 간단히 만들면 된다

 

background.png-> 640 * 480 (가로 세로 (단위:px))

stage.png -> 640 * 50

character.png -> 60 * 33

weapon.png -> 20 * 430 

ballon1~4.png -> 160 * 160, 80 * 80, 40 * 40, 20 * 20

 

각각 만들고 나서  pygame.image.load로 이미지를 가져와 줘야 한다

 

get_rect() -> x, y좌표 크기 정보를 가지고 있음 

 

character_x_pos -> 현재 위치, 가운데 

character_y_pos -> stage 위에 서있음

 

# 캐릭터 이동 방향
character_to_x = 0

# 캐릭터 이동 속도

character_speed = 5

캐릭터 이동 방향, 이동 속도 초기 설정을 해준다.

 

캐릭터 이동 설정

running = True 
while running:
    dt = clock.tick(30)

    # 2. 이벤트 처리 (키보드, 마우스 등) 
    for event in pygame.event.get(): 
        if event.type == pygame.QUIT: 
            running = False 

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT: # 캐릭터를 왼쪽으로
                character_to_x -= character_speed
            elif event.key == pygame.K_RIGHT: # 캐릭터를 오른쪽으로
                character_to_x += character_speed
        if event.type == pygame.KEYUP:  # 키 뗐을 때 멈춤
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                character_to_x = 0

화면에 구현

while 안에 이어서 작성한다( for문에 줄 맞춰서)

 

# 화면에 그리기 
    screen.blit(background, (0, 0))
    screen.blit(stage, (0, screen_height - stage_height))
    screen.blit(character, (character_x_pos, character_y_pos))
    pygame.display.update()

좌표는 게임 창의 왼쪽 끝부분이 (0,0)이다

 

코드 끝에 pygame.quit() 써준다