본문 바로가기

프로그래밍

pygame으로 고전 테트리스 만들기 고전 테트리스를 pygame 기반으로 만들었습니다. 1. 게임 규칙과 UI 구성 - 10 x 20 고전 규격 보드, 7종 블록(I, O, T, S, Z, J, L) - 좌우 이동, 회전, 빨리 내리기, 즉시 떨어뜨리기 - 화면 우측에 점수와 레벨 표시 - 레벨이 오르면 낙하 속도가 빨라짐 - 대기 상태의 화면에서 시작 키를 누르면 게임이 시작됨 2. 개발 환경 - 파이썬 버전 : 3.13 - pygame 버전 : 2.6.1 3. 실행 화면 4. 조작키 - S : 게임 시작 - 좌/우 방향 키 : 블록 좌우 이동 - 위 방향키 : 시계 방향으로 회전 - Z : 반시계 방향으로 회전 - 아래 방향키 : 빨리 내리기 - Space 키 : 즉시 떨어뜨리기 - P.. 더보기
pygame으로 공 튀기기 만들기 게임으로 써의 기능은 없고 단순히 흰색 공이 벽에 부딪치면 튀어 나가는 동작을 하는 코드로 방향 키를 이용해서 속도를 조절하는 프로그램입니다.1. 기능 - 흰색 공이 벽에 부딪히며 이동 - 위/아래 방향 키로 속도 조절 - space : 초기 위치 이동, esc : 프로그램 종료 - 화면 좌측 상단에 현재 속도를 녹색으로 표시 2. 환경 - 파이썬 버전 : 3.13 - pygame 2.6.1 3. 동작 영상"> 4. 코딩 시 고려한 것들 1) 이동량을 프레임이 아니라 시간에 비례시킨다 x += dx * speed 이렇게 계산하면 프레임이 흔들릴 때 공의 체감 속도도 같이 흔들립니다. 경과 시간(dt)을 곱하면 프레임 수와 무관하게 일정해집니다. dt = clock.tick(F.. 더보기
SQLite3 핵심 요약과 파이썬 예제 1. SQLite3란 무엇인가 SQLite3는 전 세계에서 가장 많이 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS) 중 하나입니다. Oracle이나 MySQL, PostgreSQL처럼 거대한 서버를 구축하여 통신하는 방식이 아니라, 애플리케이션 내부에 임베디드(Embedded)되어 작동하는 것이 가장 큰 특징입니다. 특히 파이썬에서는 내장 라이브러리로 제공되므로 별도로 모듈을 설치할 필요가 없이 바로 사용 가능합니다.2. SQLite3의 핵심 특징과 장점 Serverless (DB서버 없음): 데이터를 요청하고 받는 별도의 'DB 서버 프로세스'가 없습니다. 덕분에 설치나 복잡한 포트 설정, 권한 관리가 필요 없습니다.단 하나의 이진(Binary) 파일: 전체 데이터베이스(테이블, 인덱.. 더보기
pyside 윈도우 타이틀바 작업표시줄 아이콘 설정 pyside로 GUI 프로그램을 만들면 작업 표시줄과 타이틀 좌측 아이콘이 기본 아이콘으로 보이게 됩니다. 대부분의 프로그램은 고유의 아이콘으로 표시되어 어떤 프로그램인지를 잘 알 수 있도록 만들어지는데 pyside로 만든 GUI 프로그램도 나만의 아이콘이 보이도록 하는 방법을 정리했습니다. 창 상단 타이틀 바의 아이콘은 window.setWindowIcon() 메서드를 사용하면 바뀌지만 작업표시줄의 아이콘은 바뀌지를 않습니다. 이유는 윈도우 OS가 pyside로 만든 프로그램을 독립된 앱으로 인식하는 것이 아니라 파이썬 인터프리터의 하위 프로세스로만 인식해서 파이썬 기본 아이콘이 보이게 됩니다. 여기서는 이 현상을 시스템 레벨에서 우회하여 작업표시줄에서도 내가 설정한 아이콘이 보이도록 하는 것까지 포함.. 더보기
파이썬 PySide로 계기판 만들기 Qt 공식 지원 라이브러리인 PySide로 계기판을 만들었습니다. PySide는 내장 라이브러리가 아니므로 pip install pyside6으로 설치해야 합니다.PySide로 계기판을 만들기 위해서 QPainter를 사용할 것인데 여기서 주의할 점이 있습니다. 각도 계산은 math 라이브러리로 할 텐데 math에서 다루는 좌표계와 QPainter에서 다루는 좌표계는 반대로 동작합니다. 이해 대해 먼저 설명하겠습니다.1. 수학 좌표계 (데카르트 좌표계) 파이썬의 기본 math 라이브러리를 포함해 일반적인 수학에서 사용하는 2차원 좌표계는 다음과 같은 규칙을 따릅니다.원점 (0, 0) : 공간의 중앙이나 좌측 하단에 위치합니다.X축 : 오른쪽으로 갈수록 같이 커집니다.Y축 : 위로 갈수록 값이 커집니다... 더보기
파이썬으로 IP 기반 위치 정보 조회하기 IP 주소는 단순한 숫자 조합처럼 보이지만, 그 안에는 생각보다 많은 정보가 담겨 있습니다. 특히 ipinfo.io 같은 서비스는 이 IP를 기반으로 국가, 도시, ISP 등 다양한 데이터를 제공합니다. 이번 글에서는 파이썬으로 이 API를 호출해 IP 위치 정보를 자동으로 가져오는 파이썬 코드를 만들어 보았습니다.아래는 파이썬 코드입니다. 내장 라이브러리가 아닌 requests 라이브러리를 사용하므로 pip install requests로 미리 설치해야 합니다. import requestsdef get_router_geolocation(): # 내 공인 IP 자동 감지 ip = requests.get("https://ipinfo.io/ip").text.strip() # IP 기반 위치 .. 더보기
파이썬으로 오실로스코프(DHO924S) 화면 캡처 파이썬으로 화면 캡처를 하는 코드를 만들었습니다. visa 라이브러리를 사용하는 방법과 socket 통신을 사용하는 방법 두 가지가 있는데 socket 통신을 사용하는 방법으로 했습니다. 추후 visa를 사용하는 방법도 파이썬으로 구현해 보겠습니다. socket 라이브러리는 파이썬 배포판에 포함되어 있는 라이브러리로 따로 설치할 필요는 없습니다. socket 통신의 경우 port 번호를 알아야 합니다. 대부분의 계측기의 경우 5555나 5025등을 많이 사용합니다. 리골 오실로스코프의 경우 5555를 사용하고 있습니다.실행을 위해서는 IP 주소는 현재 오실로스코프에서 확인하던가 이전에 올린 파이썬 코드로 확인 후에 수정해서 동작시켜야 합니다. 아래 링크는 파이썬으로 오실로스코프의 IP 어드레스를 알아내는.. 더보기
파이썬으로 오실로스코프(DHO924S) 계측기 IP 주소 찾기 요즘 나오는 대부분의 오실로스코프는 전면에 USB-A 포트가 있어서 USB 메모리를 연결해 오실로스코프에 표시된 이미지를 캡처하던가 측정 데이터를 가져올 수 있습니다. 리골 오실로스코프의 경우 조금 더 발전해서 USB 포트에 키보드나 마우스를 연결할 수 있습니다. 다만 포트가 한 개로 여러 USB 장치를 연결하려면 HUB HUB가 있어야 합니다. 어느 유튜브를 보면 여기에 WIFI 동글을 꼽아서 무선 통신도 가능하게 해서 사용하기도 합니다. 저는 무선 마우스를 사용하기 위해 무선 마우스 동글을 꼽아 놓고 사용하고 있습니다. 따로 USB HUB를 연결하지 않았으니 USB 메모리를 이용한 화면 캡처는 안됩니다. 그리고 매번 USB 메모리로 캡처해서 PC로 옮기는 것도 번거롭습니다. 그래서 이더넷으로 연결을 .. 더보기