Kivy Keybord Event

이미지
 저번에 PingPong을 통해서 대략적인 Kivy를 통한 대략적인 만드는 방법을 알아 봤었는데, 우리에게 필요한 키보드를 입력해서 움직이는 방법은 없었기 때문에 그걸 알아보기 위해 찾아 보았다. 찾아보던 중, PingPong을 응용해서 키보드를 입력받는 방법이 있는 걸 찾았다. 키보드를 입력 받기 위해서는 Window 모듈에 있는 request_keyboard(callback, target, input_type='text') 를 이용하면 된다. <참조 :  https://kivy.org/docs/api-kivy.core.window.html#kivy.core.window.WindowBase.request_keyboard >  이 메소드를 통해서 키보드 값을 요청할 수 있다. 이 메소드를 확인 하기 전에 Kivy Api에서 Window 모듈에서 키보드 입력 예제가 있는걸 볼 수 있다. <키보드 입력 예제> <예제 실행 화면>  예제를 디버깅해서 보면 실행화면이 까맣고, 키를 누르면 입력이 되었다는 걸 표현해주는 걸 볼 수 있다. 그리고 esc를 누르면 더 이상 키 값이 입력이 안 된다.  처음부터 보면 위젯을 생성시켜 준 뒤에  __init__ 을 통해 생성자를 만들어 _keyboard 값에 Window.request_keyboard() 를 전달해서 사용할 수 있게 설정을 했다. 그리고 bind() 를 설정해서 키보드 값을 입력받을 준비를 해준다. 그리고 _on_keyboard_down 메소드를 통해 키보드 값을 입력 받으면 어떤 식으로 처리 할지 만들어 준다. 그리고 메소드가 받는 변수를 보면 keycode, text, modifiers 변수가 있는데, 출력되는 걸 보면 각각 어떤 걸 의미하는 지 알 수 있다. 보다시피 keycord에는 아스키코드 값과, 입력된 문자를 볼 수 있다. 그리고 text에서는 아스키코드 값 말고 텍스트만을 표현해 주...

Kivy Tutorial - PingPong

이미지
Kivy Pong Game tutorial  테트리스를 만들 때 사용해야할 요소들을  좀 더 파악해 보기위해서 kivy 홈페이지에 있는 예제인 PongGame -  https://kivy.org/docs/tutorials/pong.html 을 통해서 공부를 시작했다. 만들어진 게임의 모습은  <최종 완성 모습>  와 같은데 각각 플레이어별 점수를 나타내는 부분이 있고, 양쪽의 사이드바를 움직여 공을 막아 상대방에게 튕겨내고 막아내지 못하면 상대편에게 점수를 주는 방식이다.  테트리스를 만들 때 필요한 요소인 한 대상의(테트리스에서는 블록, 핑퐁게임에서는 공) 계속적인 움직임 표현, 점수 표현 등을 알아 볼 수 있었다.  예제는 차근차근 필요한 요소들을 채워나가면서 코딩을 실행한다.  처음으로는 우선 kivy를 실행할 수 있도록 파이썬 파일을 만들고 간단하게 채워 놓았다. <첫번째 main.py>  kivy App을 import하고 run할 수 있는 간단한 구조만 만들어 놓았다. <첫 번째 pong.kv>   그리고 <PongGame> 위젯의 모양을 나타내 줄 kv language 파일인데 여기서 부터는 처음 접하기 때문에 조금씩 분석을 하면서 보아야 했다. 3<PongGame> : 4 canvas : 5 Rectangle : 6 pos : self . center_x - 5 , 0 7 size : 10 , self . height  이 부분은 즉, canvas block은  <PongGame> 이라는 widget에 어떤 그래픽이 그려진다는 것을 말한다. 지금은 Rectangle이라는 직사각형 모양을 그리겠다는 것이...

KV Language(Pycharm에 Highlighting 기능 설정하기)

이미지
 Kivy 공부를 하면서 거기에는 KV language라는 그들만의 언어가 있다는 것을 알았다.  KV language란...  Kivy는 파이썬 자체의 코드를 사용하는 것으로는 한계가 있다고 생각하고, 그들만의 언어인 kv langauge를 만들어서 이를 활용해서 좀더 간단하게 ui를 표현할 수 있도록 만들어 놓았다. 자세한 내용은 < https://kivy.org/docs/guide/lang.html >  그리고 Pycharm에서 kv확장자 파일을 만들어서 사용하면 단순히 텍스트파일로 처리되기 때문에 Highlight 기능이 지원되지 않는다. 그래서 Kivy에서는 이를 지원하기 위해서 세팅방법을 제공해준다. https://github.com/kivy/kivy/wiki/Setting-Up-Kivy-with-various-popular-IDE's#kv-lang-auto-completion-and-highlighting 를 들어가면 KV Lang Auto-compeltion and Highlighting를 따라가서 쓰여저 있는 대로 세팅을 하면  <Highligting 기능추가>  이런 식으로 Pycharm에서 편하게 사용할 수 있다.

GitHub 연동하기

이미지
 저번에는 GitHub에 업로드를 할 때 GitBash의 명령어를 통해서 업로드를 했었다. 그런데 지금 사용하고 있는 Pycharm에는 GitHub와의 연동기능이 추가되어 있다. 그래서 일일이 GitBash를 활용하는 거 보다는 연동하여 사용하는 것이 빠르기 때문에 연동을 시켜 보았다. 저번에 연동을 시킨 폴더가 있지만, 처음부터 다시 해보는 것이 좋을 것 같아서 그 폴더는 삭제한 후 다시 해보았다 <연동할 곳을 지정하여 열기>  먼저 GitHub를 연동시킬 폴더를 지정하여 Pycharm에서 실행한다. <GitHub 지정>   VCS -> Check out from Version Control -> GitHub 를 클릭 <GitHub 연동>   이 전에 로그인을 하는 화면이 나오는데 로그인을 하고나면 이 창이 뜨고 GitHub의 URL을 복사하여 Clone을 실행할 수 있으며, 제대로 작동하는지 Test를 할 수 있다. 이후 연동 지점의 Directory Name도 설정할 수 있다. 그리고 나서 Clone을 클릭해 준다. <연동한 후의 모습>   Clone을 클릭한 후에는 이렇게 자동으로 GitHub의 파일들이 연동된 것을 확인할 수 있다. <이 후 파이썬 파일 생성시 화면>    그러고나면 이제 파이썬 파일을 생성할 때 저런 질문 창이 뜨고 그대로 add를 실행할 수도 있고, <수동으로 add 실행>    이런 식으로 수동으로 Add를 실행할 수 있다. 위의 상태에서 Add를 클릭하고 나면 바로위의 Commit File이 활성화 되고 이를 클릭하고 나면 <Commit File 클릭>    이러한 창이 떠서 Commit Message를 지정하여 ...

Python 코딩 공부 시작과 Github 활용

이미지
 파이썬 이론은 정규식만 남겨놓은 상태에서 거의 마무리 했는데, 이제 실질적인 코딩을 해야할 것 같아서 코딩 사이트를 찾아보았다. 알고리즘도 같이 공부를 시작해야 할 것 같아서 알고리즘 책도 찾았다.  그리고 코딩 사이트를 찾았는데, HackerRank라는 외국 사이트이다. github와 연동되기도 하고, 구체적으로 코딩할 것들이 나누어져 있고, Competetion으로 경쟁형태의 코딩을 할 수 있는 부분도 있었다. <HackerRank 사이트>  Python 기본부터 시작해서 4문제 정도 풀어봤는데 아직 기본적인 문제들이었지만, 거기서 끝내지 않고  <문제에서 Discussion 탭에 들어가면 볼 수 있다>  위 처럼 Discussion 탭을 보면 사람들이 기발하다 생각하거나, 참신한 코드들을 추천을 눌러서 추천순으로 볼 수 있는데 이를 통해서 생각지도 못했던 부분이나, 몰랐던 부분을 다시 공부할 수 있는 것 같아서 이를 활용하려 한다.  그리고 그냥 사이트에서 코딩만 해서 끝내는 것 보다는, 코딩 자료를 남겨 놓는 것도 도움될 거 같고, Github를 좀 이용해 봐야 할 것 같아서 Github에 프로젝트를 만들어서 올리려고 한다. <코드 업로드용 프로젝트>  위처럼 프로젝트를 하나 더 만들었고 Git Bash를 통해서도 업로드 하는 방법을 익혀보았다. <Git Bash로 업로드>  $git init 을 통해서 git을 활용할 로컬저장소를 활성화 한다. 그리고나서  $git remote add origin <Github의 Repository url주소>를 통해서 repository를 세팅해준다.  <Git Bash로 업로드2>  $git pull origin master 을 이용하여 동기화를 시켜주면 위와같이 동기화가 이루어진다. ...