Image의 위치를 키보드로 제어하기
페이지정보
글쓴이 관리자 조회 38,348 조회 날짜 20-02-22 13:16 / U:20-03-05 14:10내용
Image의 위치를 키보드로 제어하기
이전 강좌에서 이미지를 자동으로 움직이는 기능을 완성해 보았다.
참고 : https://www.jbmpa.com/pygame/6
이번에는 이미지를 키보드의 화살표키로 움직이게 하는 방법을 알아보자.
1. 이벤트에서 이미지의 좌표값을 증가시키기
event 처리 강좌에서 키보드의 키 이벤트를 받아서 처리하는 코드를 알 수 있었다.
참고 : https://www.jbmpa.com/pygame/3
이 것을 응용하여, 키에 따라 이미지의 좌표값을 증가시켜 본다.
이미지의 x 좌표값 증가를 위한 변수 dx, y 좌표값의 증가를 위한 변수 dy를 추가한다.
dx = 0 dy = 0
while playing:
for event in pygame.event.get():
if event.type == pygame.QUIT:
# 키가 눌렸을 때 if event.type == pygame.KEYDOWN: if event.key == pygame.K_UP:
# 키가 떼졌을 때 if event.key == pygame.K_UP:
|
키가 떼졌을 때, 증가값을 0으로 만드는 이유는 화살표 키를 뗐을 때, 더이상 움직이지 않게 하기 위함이다.
2. 좌표값 증가값을 적용시키기
게임 루프안에서 dx 를 player_Rect.x 에, dy 를 player_Rect.y 에 적용시킨다.
player_Rect.x += dx player_Rect.y += dy |
3. 키 이벤트를 적용시킨 전체 코드
https://www.jbmpa.com/pygame/5 의 7번 코드에서 키 이벤트를 적용시킨 코드를 추가한다.
import pygame
# 스크린 전체 크기 지정 SCREEN_WIDTH = 400
# pygame 초기화 pygame.init()
# 스크린 객체 저장
# FPS를 위한 Clock 생성
# 이미지 로딩 및 크기 변경 player = pygame.image.load("Player.png")
# 이미지의 Rect 정보를 저장 player_Rect = player.get_rect()
# 이미지가 가운데 올 수 있도록 좌표값 수정 # python 3.8 이상에서 integer가 필요한 곳에 float가 들어가면 DeprecationWarning이 나옴. # 따라서 round() 처리를 해준다. player_Rect.centerx = round(SCREEN_WIDTH / 2) player_Rect.centery = round(SCREEN_HEIGHT / 2)
dx = 0 dy = 0
playing = True # 이벤트 처리 if event.type == pygame.QUIT:
# 키가 눌렸을 때 if event.type == pygame.KEYDOWN: if event.key == pygame.K_UP:
# 키가 떼졌을 때 if event.key == pygame.K_UP:
# 스크린 배경색 칠하기 SCREEN.fill((255, 255, 255))
# 키에 의해 증가된 값을 이미지의 좌표에 적용시킨다. player_Rect.x += dx player_Rect.y += dy
# 스크린의 원하는 좌표에 이미지 복사하기, 좌표값은 Rect를 이용 SCREEN.blit(player, player_Rect)
# 작업한 스크린의 내용을 갱신하기 pygame.display.flip()
# 1초에 60번의 빈도로 순환하기 clock.tick(60) |
실행 결과
키보드의 화살표 키에 따라 이미지가 움직이는 것을 확인한다.
댓글목록
댓글이 없습니다