12월, 2019의 게시물 표시

Matplotlib 실시간 차트 그리기

이미지
이번 시간에는 matplotlib 를 이용해 실시간 챠트 (FuncAnimation이용)를 구성하는 방법과 해당 챠트를 PyQt5와 연동하는 방법에 대해 소개합니다. sin 파 FuncAnimation Class를 이용해 실시간으로 그리기 [matplotlib + PyQt5 + FuncAnimation] 인터넷에 matplotlib를 이용해 챠트를 그리는 방법은 많이 소개되어 있지만, 실시간 챠트 예제는 자료가 거의 없어 직접 만들어 보았습니다.  Pyinstaller로 제작한 실행파일 : chart matplotlib 예시 matplotlib는 데이터를 여러 종류 챠트를 구성하고, 보기좋게 그래프로 시각화 시키는 파이 썬 패키지 입니다. 소스코드 import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout import matplotlib.pyplot as plt import matplotlib.animation as animation from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg import numpy as np QApplication.setAttribute(Qt.AA_EnableHighDpiScaling, True) class CWidget(QWidget): def __init__(self): super().__init__() # for PyQt embedding self.fig = plt.Figure() self.canvas = FigureCanv

포트리스 게임의 포물선 운동 구현하기

이미지
대학 시절 " 포트리스 "라는 게임이 있었습니다. 포탄이 날아가는 속도와 각도를 조절해 상대를 맞추는 게임인데, 비슷하게 파이썬으로 구현해 보았습니다. 실제 게임의 요소(적군, 충돌, 바람)는 코드 간단화를 위해 구현하지 않았습니다, 이 글을 참조해 여러분이 직접 한번 코드로 작성해 보면 좋겠습니다. 개요 Python, PyQt5 를 이용한 간단 게임 탱크에서 발사되는 포탄에 포물선 운동 을 적용 Widget, Game, Tank, Bullet 4개의 class를 이용한 객체지향적 설계  [실행화면] 설계 방향 키보드 좌우 (탱크 이동), 상하(포탑 각도) 처리  스페이스 키 눌러짐(탄환 속도 증가), 키 업(탄환 발사) 4개의 클래스로 구성 ( CWidget :배경, CGame :게임 관리, CTank :탱크, CBullet :포탄) Draw, Keyboard Event 처리는 CWidget이 CGame에 위임 CTank는 직사각형으로 그려지고, 대포, 포탄들, 각도, 발사속도를 가짐 CBullet은 하나의 포탄을 의미하는 클래스, 위치, 속도, 각도, 착탄 여부를 가짐 CTank 는 CBullet type 객체를 리스트로 저장 (발사 포탄은 다수이기 때문) 발사된 포탄(CBullet)은 스스로 자신의 위치를 갱신 (포물선 운동) 발사된 포탄의 좌표가 윈도우 바닥 Y 좌표보다 크면 착탄이므로 삭제 소스 코드 총 3개의 파일로 구성 (main.py, game.py, tank.py) main.py (main 함수, CWidget class) game.py (CGame class

이 블로그의 인기 게시물

Qt Designer 설치하기

PyQt5 기반 동영상 플레이어앱 만들기