강의노트 tick 함수
강의노트
• 조회수 36
• 댓글 0
• 수정 1주 전
- 시간
tick함수
위 예제에서 tick(숫자)에서 괄호안의 숫자는 fps(frame per seconds)로 일초당 프레임 수를 나타낸다. fps가 5일때의 그림의 움직임이 부자연스러움이 보이지만 60일때는 그림의 움직임이 자연스럽다.
fps에 따라 캐릭터의 이동 속도가 달라진다. 캐릭터의 이동은 while문이 한번 실행될때마다 vel만큼 이동된다. 1초에 while문이 fps만큼 실행되니 캐릭터 이동 속도는 fps의 역수가 곱해져야 한다.
# fps가 dt=1/fps x = x + vel * dt
# pg_image_01.py
import pygame
import time
import numpy as np
pygame.init()
win = pygame.display.set_mode((500,400)) #1
pygame.display.set_caption('두번째 예제') #2
x = 0
y = 0
white, black = (255,255,255), (0,0,0)
vel = 5
left_key, right_key, up_key, down_key = False, False, False, False
im = pygame.image.load('tiger.bmp')
im_resize = pygame.transform.scale(im, (100,100))
clock = pygame.time.Clock()
count = True
fps = 50
dt = 10/fps
running = True
while running:
#pygame.time.delay(20)
clock.tick(fps)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
break
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
left_key = True
elif event.key == pygame.K_RIGHT:
right_key =True
elif event.key == pygame.K_UP:
up_key =True
elif event.key == pygame.K_DOWN:
down_key =True
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT:
left_key = False
elif event.key == pygame.K_RIGHT:
right_key = False
elif event.key == pygame.K_UP:
up_key = False
elif event.key == pygame.K_DOWN:
down_key = False
if left_key:
x -= vel*dt
if right_key:
x += vel*dt
if count:
ts = time.time_ns()
count = False
if up_key:
y -= vel*dt
if down_key:
y += vel*dt
if x > 400:
ts = (time.time_ns() - ts)/1000000
print(f'elapsed time : {ts}[ms]')
running = False
win.fill(white) #7
win.blit(im_resize,(x,y))
pygame.display.update() #5
pygame.quit() #3
첫 글입니다.
마지막 글입니다.
로그인 하면 댓글을 쓸 수 있습니다.