본문 바로가기
[ CODING STUDY ]/》파이썬 공부

파이썬 23장(tkinter_07, 미로게임_02, 플레이어 이동, keysym, after, coords)

by MRG 2021. 1. 5.
728x90
반응형

▣ 안녕하세요 오늘은 저번 시간에 이어서 미로게임을 만들어보겠습니다.
간단하게 플레이어를 넣고 방향키를 누르면 이동하는 걸 공부해보겠습니다.

 

▣ 먼저 저번장까지 완성한 내용을 열어서 
keyinput 전역변수를 선언해주겠습니다. 여기에는 키를 입력한 값을 저장하는 변수라고 생각하시면 됩니다.
그리고 키에 값을 입력 받는 함수 key_Down을 만들어보겠습니다.
전역 변수를 사용해야 하기 때문에 gloabal키워드로 keyinput을 선언했고,
매개변수로 받은 i에 값에 i.keysym 키워드를 사용합니다.
저번장에서도 했지만, 이 키워드는 입력받은 키에 이름값을 가져옵니다.
만약에 방향키"Up"을 누르면 이렇게 "Up"에 이름값이 keyinput에 대입됩니다. 

 
▣ 그리고 밑에 보시면 key_Up함수를 정의했습니다.
이건 나중에 보면 아시겠지만, 
계속 keyinput에 값이 처음 입력한 값만 지정되어 있으면 그 키보드에 값만 
인식해서 계속 그 값만큼만 작동하기 때문에 키보드를 떴을 때 초기화시켜주는 함수라고 생각하시면 됩니다.


▣ 그리고 posX, posY는 현재 플레이어 위치를 나타내주는 전역 변수를 선언했습니다. 

 

▣ 그리고 여기서 playerMove()함수를 통해서 keyinput에 값이 Up이면 
posY에 값에 -1을 해줘서 플레이어를 이동하게 하는 조건문을 먼저 만들고,
그리고 canvas.coords() 함수는 해당 태그에 값에 이미지를 이동해주는 함수입니다.
tk.after() 함수는 0.2초 후에 다시 함수를 실행하게 하여 실시간으로 계속
이동하는 함수를 실행하게 지정해줍니다. 

 

▣ 그리고 canvas로 이미지를 지정해주시구요.
tag = "player" 태그를 지정하는 거 잊지 말아 주세요. 태그에 이름과 Player_Move() 함수에서 사용하는 태그랑 
이름이 일치하는지 꼭 확인해주세요.
그리고 playerMove()를 실행하는 함수까지 지정을 하고 실행을 하면

 

▣ 이렇게 캐릭터가 조금 끊겨보이지만 잘 움직이는 걸 확인할 수 있습니다.
여기서 key_Up() 함수를 주석 처리하고 확인해보시면 한번 키를 입력하면 계속 
그 키 값으로 이동하는 걸 확인하실 수 있을 겁니다. 


▣ 그리고 after() 함수가 없다면 한번 함수가 작동하고 작동하지 않는 걸 확인할 수 있습니다.
tk.mainloop() 함수는 
tk에 관련된 함수를 무한으로 실행하는 거기 때문에,
playerMove() 함수를 계속 실행하는 게 아닙니다. 이 차이점 직접 주석 처리해서 
하나하나 확인해보세요.


▣ 자 오늘은 이렇게 간단하게 플레이어를 움직여보았습니다.
제가 말씀드린 한번 해봤으면 하는 부분들은 꼭 해보세요.
그럼 다음장에서 뵙겠습니다.
질문 있으시면 댓글 남겨주세요.


▣ 포기하지 마세요!!! 저도 했습니다.!!! 파이팅!!!

728x90
반응형

댓글