soma0sd

코딩 & 과학 & 교육

반응형

이전에는 키보드 조작으로 타일맵 이동코드를 추가했습니다. 이 방법은 키보들르 눌렀을 때 한 번만 이동하고 원하는 만큼 이동하려면 그만큼 여러번 눌러야 합니다. 게임 시스템에 따라 그방식이 좋은 경우도 있지만, 키보드를 누르고 있는동안 부드럽게 이동하는 것이 좋은 경우도 있을 것입니다. 오늘은 게임의 타일맵을 키보드의 WASD키를 누르고 있는 동안 이동하도록 만들고, 부드러운 이동을 위해 누르는 동안 타일맵의 이동이 가속하도록 만듭니다. 키보드 이벤트 Pygame의 키보드 입력을 매개변수로 받아 카메라의 속도를 변경하는 메서드를 작성합니다. 이 때, 무한정 가속하면 게임할 때 문제가 있을테니 [-10, 10]범위에서 가속하도록 합니다. 키보드에서 손을 떼면 가속과 속도를 무시하고 즉시 정지하도록 합니다. ..

Pygame: 키보드를 누르고 있으면 타일맵 이동을 가속

오늘은 aseprite를 사용하여 64x64 타일을 기준으로 등축 투영(isometric) 바닥 타일을 그려봅니다. 기본 패턴 바닥 타일은 하단의 사각박스로 시작합니다. 실선과 점선 타일의 외곽선을 실선이나 점선으로 표현하는 방법입니다. 패턴 기초적인 패턴과 질감을 표현하는 기초적인 방법입니다. 객체 추가하기 입체감이 필요한 사물을 바닥에 배치하는 방법입니다. 예시는 나무와 숲 타일입니다.

Pygame: 타일셋 그리기(3) - 바닥 타일셋 그리기

저의 경우 업무를 위해 개발을 시작할 때 대충 절차가 이렇습니다. 회사 VPN 연결 회사의 엣지컴퓨팅 개발보드에 SSH 접속 VSCode로 개발 시작 하는 절차를 거치고 있습니다. 장비마다 네트워크 이름을 별도로 설정해놓지 않아서 매번 포트스캐너를 사용하고, 22번 포트가 열려있는 장치 중에서 내부 호스트이름이 맞는 것을 찾는 것은 매우 귀찮은 일입니다. 언제나 그래왔던 것 처럼 귀찮은 반복작업은 개발자의 큰 적이죠. 파이썬을 사용해서 필요한 헤메는 절차를 자동으로 수행하는 스크립트를 구현합니다. 1 단계. 스캔범위 얻기 import socket MY_IP = socket.gethostbyname(socket.gethostname()) IP_RANGE = [".".join([*MY_IP.split("."..

[Python] 내부 IP 검색, 포트 확인, SSH 호스트네임 확인

NVIDIA 젯슨이나 라즈베리 파이 등 조금 특별한 환경에서 사용하는 파이썬 패키지는 파이썬 패키지 인덱스(PyPI)에서 제공하지 않는 경우가 많습니다. 즉 pip로 설치할 수 없거나 설치했더라도 오류가 발생합니다. 여기서는 무분투를 포함한 데비안 계열의 패키지 관리자인 APT를 사용해서 apt-get install python3-numpy와 같은 방식으로 설치한 패키지를 파이썬 가상환경에 적용하는 방법을 소개하고 간단한 bash 스크립트를 안내합니다. apt-get으로부터 가상환경의 패키지지로 옮기는 절차 apt-get downlad를 사용해서 해당하는 파이썬 패키지가 담긴 리눅스 패키지를 다운로드 dpkg -x를사용해서 패키지 압축 해제 mv를 사용해 데비안 패키지 내부의 dist-packages/ ..

Python 가상환경(venv)에 apt-get으로 설치한 패키지 집어넣기

파이썬 패키지를 만들다보면 직접 새로운 변수형이나 객체형을 만드는 경우가 있습니다. 사용자가 type()을 사용해서 타입체크를 하거나 소스코드의 매개변수의 형태, 출력 결과 형태를 Sphinx가 읽어서 해석하는 경우에의도했던 것과 달리 처럼 의도와는 다른 결과를 내놓습니다. 이를 해결하는 트릭을 소개합니다. my_package/ ├─ __init__.py └─ type/ ├─ __init__.py └─ _image.py my_package/type/__image.py class Image: def __init__(self, arg): pass my_package/type/__init__.py from ._image import Image __all__ = ["Image"] my_package/__init..

Python: 직접 만든 클래스의 이름공간 변경하기

스핑크스(Sphinx)를 통해 만든 패키지의 레퍼런스 페이지를 만듭니다. 제가 제작하는 패키지 설명서는 튜토리얼과 레퍼런스 페이지를 분리하여 작업합니다. 튜토리얼 페이지는 패키지를 처음 접하는 사람들을 위해 작성하고, 레퍼런스 페이지는 패키지의 구조를 따라 문서를 구성하여 어느정도 패키지에 익숙한 사람들이 보는 용도로 작성합니다. 레퍼런스 페이지를 작성하는데 큰 수고를 들이지 않으려면 소스코드에 문서화문자열(docstring)을 잘 남겨두는것이 중요합니다. 관련글 Python 패키지 개발일지 05: 주석을 이용한 문서화 Python 패키지 개발일지 06: 스핑크스를 사용한 패키지 문서화 Python 패키지 개발일지 07: 스핑크스 개인화 Python 패키지 개발일지 08: 스핑크스 & 깃허브 페이지 (중..

Python 패키지 개발일지 10: 스핑크스 레퍼런스 페이지 만들기

패키지를 제작하다 보면 미묘하게 신경쓰이는데 이미 만들어놓은 구조 때문에 고치기가 난감한 문제들이 있습니다. 이대로 업데이트가 쌓이다 보면 조금 신경쓰이는 문제가 계속 남아 점점 기술부채가 증가하게 됩니다. 여기서는 패키지를 갈아엎게 만들었던 문제와 그 해결법을 다룹니다. 버전 규칙 기존 다른 패키지를 작업할 때는 버전 개념을 잘 몰라 업데이트 할 때마다 계속 숫자를 올리기만 했는데요. 이 때문에 업데이트의 규모와 성격을 알 수 없어서 관리하기가 복잡했던 경험이 있습니다. 현재 만들고 있는 AutoWinPy는 파이썬의 버전규칙과 동일한 세 구역으로 구분한 버전 규칙을 따르고 있습니다. 이 방식은 v1.6.32와 같은 형태를 가집니다. 세 번째 자리(예시의 32): 버그 수정 업데이트를 의미합니다. 두 번..

Python 패키지 개발일지 09: 패키지를 갈아엎게 하는 문제들

앞에서는 최소한의 설정으로 그럭저럭 깃허브 패키지 저장소와 스핑크스(Sphinx)를 연동하고 깃허브 페이지에 등록했습니다. 이번에는 배치파일 변경, 스핑크스의 깃허브 페이지 확장, 테마를 다룹니다. 관련글 Python 패키지 개발일지 07: 스핑크스 개인화 make.bat 변경 기존 make.bat을 백업하고 새로운 파일을 만듭니다. 이 배치파일은 페이지를 만든 후 자동으로 ./docs/html/ 안에 들어있는 파일을 ./docs/로 옮겨줍니다. @Echo Off set SPHINXBUILD=sphinx-build set SOURCEDIR=sphinx_source set BUILDDIR=docs %SPHINXBUILD% -M html %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%..

Python 패키지 개발일지 08: 스핑크스 & 깃허브 페이지 (중급)

스핑크스(Sphinx)를 사용해 본격적으로 문서를 만들기 전에 만들어둔 깃허브(GitHub) 저장소와 스핑크스를 연동하는 작업을 하도록 하겠습니다. 이 작업은 반복 입력을 효과적으로 줄여줍니다. 관련 글 Python 패키지 개발일지 02: 깃허브에 패키지 올리기 Python 패키지 개발일지 03: PyPI에 패키지 올리기 Python 패키지 개발일지 06: 스핑크스를 사용한 패키지 문서화 readme.md 연결 index.rst와 readme.md를 연결하기 위해 m2r 패키지를 사용합니다. 명령창에 pip install m2r(아나콘다의 경우 conda install -c conda-forge m2r)를 입력하여 m2r을 설치한 후, conf.py를 열어 아래 내용으로 수정합니다. extensions ..

Python 패키지 개발일지 07: 스핑크스 개인화

End of content

No more pages to load

◀ PREVNEXT ▶