조종 다음은 개발

기존에 프로그램에서는 게임이 잘 실행이 되기는 하나 FPS 즉 프레임에 따라서 게임에서 캐릭터가 움직이는 속도가 차이가 났다.

하지만 게임은 어떤 프레임에서 작동을 하던지 게임에서 캐릭터가 움직이는 속도가 같아야 한다.

따라서 코드의 수정이 필요하다

# FPS 설정
clock = pygame.time.Clock()

# 이동속도
character_speed = 0.6

# 이벤트 루프
running = True # 게임이 진행중인가?
while running:
    df = clock.tick(60) # 게임 프레임 설정
    # 게임에서 이벤트가 발생할 때
    for event in pygame.event.get():
        if event.type == pygame.QUIT: # 창 닫기 버튼을 눌렀을 떄
            running = False

        if event.type == pygame.KEYDOWN: # 키를 눌렀을 때
            if event.key == pygame.K_LEFT:
                x_to -= character_speed
            elif event.key == pygame.K_RIGHT:
                x_to += character_speed
            elif event.key == pygame.K_UP:
                y_to -= character_speed
            elif event.key == pygame.K_DOWN:
                y_to += character_speed

        if event.type == pygame.KEYUP: # 키를 눌렀다가 뗐을 때
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                x_to = 0
            if event.key == pygame.K_DOWN or event.key == pygame.K_UP:
                y_to = 0
    character_x_pos += x_to * df
    character_y_pos += y_to * df

 


기존에 코드에서 추가된 부분은 다음과 같다. 

# FPS 설정
clock = pygame.time.Clock()

# 이동속도
character_speed = 0.6

    df = clock.tick(60) # 게임 프레임 설정
    character_x_pos += x_to * df
    character_y_pos += y_to * df

(추가로 x_to += 5 에서 x_to += character_speed로 바뀌었다.)

 


프레임은 1초동안 이벤트 루프가 실행되는 횟수라고 생각하면 이해하기 편하다.

만약 프레임이 10이면 1초동안 이벤트 루프가 10번 실행되고

만약 프레임이 20이면 1초동안 이벤트 루프가 20번 실행된다고 보면 된다.

 

만약 이벤트 루프가 한번 실행될때마다 5씩 움직이면 

1초동안 프레임이 10이면 5 * 10 = 50 즉 50만큼 움직인다.

그러면 프레임이 20일 때도 동일하게 움직이려면 몇씩 움직이면 될까?

1초동안 프레임이 20이면 x * 20 = 50 즉 5/2 인 2.5씩 움직이면 된다.

 

이러한 설정을 해주기 위해서

character_x_pos += x_to * df
character_y_pos += y_to * df

를 추가해준 것이다.

'풍선 터트리기 게임' 카테고리의 다른 글

게임 만들기 (4) - FPS 설정  (0) 2021.05.12
게임 만들기 (3) - 충돌설정  (0) 2021.05.09
게임 만들기 (1) - 기본설정  (0) 2021.05.09
profile

조종 다음은 개발

@타칸

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!