파이썬으로 만든 간단 슈팅게임앱

이미지
이번에 만든 주제는 파이썬 + PyQt5로 구현한 슈팅게임(Shooting Game) 입니다.   주요 기능으로, 1. 키보드를 이용한 아군 이동 2. 적군 랜덤 생성 및 이동 3. 적군 아군 충돌 감지 4. 적군 아군 총알 충돌 감지 이 코드를 이해하기 위해 필요한  사전 지식 입니다. 1. 파이썬 자료형 (정수, 문자, 리스트)  2. 파이썬 모듈 (C++의 #include와 유사)  3. 파이썬 클래스 (상속, 객체변수, 생성자) 및 쓰레드, 동기화  4. PyQt5 클래스 이해 (QPoint, QRect, QWidget, QPainter, QLayoutBox 등) PyQt5 설치 및 소개 링크   소스코드 전체 프로그램 소스는 크게 3개의 파이썬 파일(모듈)로 이루어져 있습니다. 1. map.py (아군, 적군 클래스 및 게임을 진행하는 CMap클래스로 구성)  아래는 map.py 파일의 전체 소스코드 입니다. from PyQt5.QtCore import * from PyQt5.QtGui import * from random import * import os import threading import time class CUnit: size = 10 def __init__(self): self.rect = QRect() self.color = QColor(0,0,0) class CMy(CUnit): def __init__(self): super().__init__() self.hp = 10 self.color.setRgb(0,0,255,255) self.bullet = [] class CEnemy(CUnit): def __init__(sel...

PyQt기반 타자연습게임앱 만들기

이미지
이번에 만든 주제는 파이썬 타자연습게임(Typing Game) 입니다. 주요 기능 은 아래와 같습니다. 1. 한글, 영어 선택 기능 2. 난이도 선택 기능 (초, 중, 고급) 이 코드를 이해하기 위해 필요한 사전 지식 입니다. 1. 파이썬 자료형 (정수, 문자, 튜플, 리스트) 2. 파이썬 모듈 (C++의 #include와 유사) 3. 파이썬 클래스 (상속, 객체변수, 생성자) 및 쓰레드, 동기화 4. PyQt5 클래스 이해 (QPoint, QRect, QWidget, QPainter, QLayoutBox 등) 전체 프로그램 소스는 크게 3개의 모듈로 구성되어 있습니다. 1. map.py (단어 클래스 및 게임 진행 클래스로 구성) from PyQt5.QtCore import QPointF, QRect from PyQt5.QtGui import QFont from threading import Thread, Lock from random import randint from time import sleep # 튜플 단어장 kor = ('문자열', '정수', '리스트', '튜플', '딕셔너리', '타입', '출력', '반복문', '변수', '파이썬') eng = ('input', 'int', 'string', 'type', 'list', 'class', 'print', 'python', 'tuple', 'for', 'if', 'while', 'thread', 'random...

파이썬으로 구현한 디지털 시계

이미지
이번에 만든 주제는 디지털 시계입니다. [파이썬 + PyQt5 디지털 시계] 아날로그 시계는 C++과 MFC를 이용해 만든 예제 가 이미 홈페이지에 소개되어 있지만 삼각함수가 필요하므로 중학교 3학년 이상에게 만들어 볼 것을 권장하고 있습니다. [C++, MFC 아날로그 시계] 왜냐하면 시계 외곽선 원의 좌표를 삼각함수를 이용해 찾아내서 선을 그려야 하기 때문이죠. 오늘은 쉬운 디지털 시계를 파이썬 + PyQt5를 이용해 만들어 보겠습니다. 난이도는 매우 쉬운편입니다. 우리는 객체지향프로그래밍 언어인 파이썬을 쓰고 있으므로 클래스 기반으로 만들어 보았습니다. 먼저 전체 코드를 한번 살펴 보겠습니다. import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * from threading import Timer import time QApplication.setAttribute(Qt.AA_EnableHighDpiScaling, True) class CWidget(QWidget): def __init__(self): super().__init__() self.year = QLCDNumber(self) self.month = QLCDNumber(self) self.day = QLCDNumber(self) self.hour = QLCDNumber(self) self.min = QLCDNumber(self) self.sec = QLCDNumber(...

파이썬으로 구현한 그림판앱

이미지
이번에 만들어 본 예제는 Python + PyQt5 를 이용한 그림판 (Painter)  입니다. 주요 기능 은 1. 직선, 곡선, 사각형, 원 그리기 2. 선색, 도형 내부 색 변경 가능 3. 지우개 기능 정도 입니다. 주석 포함 300라인이 채 안되는 코드로 최대한 간단히 구현해 보았습니다. 구글을 열심히 검색해봐도 파이썬+PyQt를 이용한 그림판 예제는 거의 없어 직접 만들어 보았습니다. 먼저 이 코드를 이해하기 위해 요구되는 배경 지식 입니다. 1. Python 의 기본 자료형 (정수, 문자, 리스트) 2. Python 클래스의 이해 (클래스의 개념,  객체 변수, 함수, 상속) 3. PyQt5, 특히 Qt 클래스에 대한 사용법, 이해 정도 입니다. (가장 중요) PyQt5 설치 및 소개글 링크 PyQt5는 C++의 크로스 플랫폼 프레임워크인 Qt 를 파이썬에 사용가능하도록 만든 파이썬 패키지 입니다. PyQt는 Riverbankcomputing 이라는 영국회사에서 만들었습니다. Qt는 C++기반의 멋진 클래스들을 가진 GUI 프레임워크이며, GUI 이외에도 자료형, 네트워크, 3D, 등의 분야에 사용가능한 클래스를 제공해 줍니다. 아래 예제의 Q로 시작하는 모든 타입은 Qt에서 제공되는 클래스입니다. 앞으로 우리는 Qt에서 제공하는 클래스를 가져와 사용하는 방식으로 코드를 만들어 갈 계획입니다. 그럼 본론으로 들어가 보겠습니다. 그림판은 크게 2개의 클래스로 구성되어 있으며, 첫번째는 메인 윈도우 창을 구성하는 CWidget클래스, 두번째는 그림을 표시하는 CView 클래스 입니다. 그리고 클래스를 인스턴스화 시켜 동작하는 메인 함수의 형태로 코드는 구성되어 있습니다. 먼저, 아래는 그림판 전체 코드 입니다. [전체 코드] import sys from PyQt5.QtCore impor...

파이썬 PyQt5 설치하기

이미지
파이썬언어로 GUI (Graphic User Interface) 환경의 프로그램을 만들기 위해서는 여러가지 방법이 존재합니다. 먼저 GUI는 그래픽 환경 기반에서 돌아가는 아래와 같은 프로그램들을 의미합니다. Python + PyQt5로 만든 GUI 예제 GUI 프로그래밍을 위해 제공되는 파이썬 패키지는 대표적으로 파이썬에 내장된 Tkinter 부터 wxPython, PyQt 등 다양하게 존재합니다. Tkinter는 파이썬 공식 GUI 패키지로 추가 설치없이 사용 가능하지만, 깔끔한 디자인이나 복잡한 화면 등을 구성하기에는 그 기능이 부족합니다. 따라서, 학원에서는 이 중 가장 막강한 기능을 자랑하는 Qt를 기반으로 한 PyQt5를 이용해 파이썬 GUI 교육을 진행하고 있습니다. Qt는 C++로 작성된 크로스 플랫폼 프레임워크이며, 이를 파이썬에서 사용하도록 제작된 패키지가 PyQt입니다. 현재는 PyQt5 버전이 주로 사용되고 있습니다. 이제부터는 Visual Studio 2017의 파이썬 환경에 PyQt5 패키지를 설치하는 방법에 대해 설명드리겠습니다. 만약, Visual Studio에 Python 설치 시 아나콘다를 설치한 경우 는, PyQt5를 따로 설치하지 않아도 됩니다. 아나콘다는 파이썬과 파이썬에 사용가능한 패키지들을 한번에 설치하고 관리(수정, 삭제, 업데이트)가 가능하도록 해주는 일종의 종합 선물 세트 입니다. 파이썬 초보자는 파이썬 설치시 발생할 수 있는 경로 문제나 pip 명령어 사용이 익숙하지 않기 때문에 아나콘다를 설치 하는 것을 추천합니다. ...

MS Azure를 이용한 얼굴인식 예시

이미지
아이폰 광고에서 보았던 face 인식 기술 을 MS 파이썬 예제를 참조해 만들어 보았습니다. 먼저 Azure나 Machine learning 에 대해 궁금한 전반적인 사항은 이전에 올린 "음성인식" 관련 글을 참조해 주시기 바랍니다. 얼굴 인식의 기본적인 원리는 아래와 같습니다. 1. MS Azure Cognitive(인지) 기술 준비 (서비스 가입후 key 필요) 2. 분석할 이미지를 웹에 업로드 (클라우드 기반이라 로컬 이미지는 동작하지 않네요) 3. 분석할 이미지의 웹주소를 코드에 추가하고 인지 API 함수 호출 4. 클라우드 기반으로 웹 이미지 분석을 마치면, 이미지 속성 (사진에서의 얼굴영역, 나이, 머리색, 성별, 표정 등) 이 호출 함수 리턴값으로 들어옴 즉 웹상의 이미지를 MS 머신러닝 서버에 넣으면, 분석이 나오는데 이를 결과로 받아오는 방식 입니다. 얼굴 인식 알고리즘을 모르더라도, 쉽게 MS 인지 서비스를 이용해 해당 결과를 코드로 구현이 가능합니다. 참 좋은 세상입니다. 사실 얼굴인식 알고리즘은 개인 또는 기업이라도 쉽게 구현할 수준의 것이 아닙니다. 먼저 해당 코드를 실행한 결과부터 살펴보겠습니다. 첫번째로 MS 예제 코드에 링크된 여성의 사진입니다. 가운데 붉은 선으로 표시된 부분이 얼굴을 인식한 부분입니다. 코드를 작성한 후 해당 이미지의 속성을 같이 출력해 보니 다음과 같습니다. face rectangle 정보는 이미지상에 붉은 사각형으로 표시된 얼굴 영역의 좌표를 의미합니다. face attribute는 여성, 24세, 행복한 표정이라고 분석 결과가 나왔습니다. 우리 가족은 어떻게 나올까 싶어, 이미지를 변경해 실행해 보았습니다. ㅎㅎ 일단 4명의 인물에 대한 얼굴 영역을 정확히 인식합니다. 세부 결과는 아래와 같습니다. ...

MS Azure를 이용한 음성-문자 변환 예제

이미지
흔히, 클라우드라고 하면 온라인에 사진이나, 문서 등 파일을 저장하는 공간으로 인식하는 경우가 많습니다. 물론 이런 단순 파일저장도 클라우드 컴퓨팅 서비스의 일부이긴 하지만, MS, 아마존, IBM, 구글 등의 기업들은 좀 더 다양한 기술을 클라우드에서 제공해 주고 있습니다. 예를 들면, MS는 Azure(애져)라는 이름의 클라우드 컴퓨팅 플랫폼에 음성인식, 얼굴인식, 가상머신, 머신러닝 등의 플랫폼을 제공해주고 있습니다. 요즘 많이 사용되는 클라우드 컴퓨팅 플랫폼 서비스는 Google Cloud Platform , MS Azure , Amazon Web Service Cloud   등 3개의 서비스가 대표적입니다. 아래는 MS Azure 에서 사용가능한 서비스들 입니다. 무료, 유료 서비스가 존재합니다. 이 중 MS의 Azure 의 Cognitive(인지) Service 를 이용해 음성을 문자로 바꾸어주는 코드를 MS 예제를 참조해 C++ 로 직접 만들어 보았습니다. 먼저 결과를 보면, 신기하게도 노트북의 마이크에 제가 직접 음성으로 말한 "Hello, This is ocean coding school"을 문자로 변환해 줍니다. 물론 이런 소프트웨어는 많지만, 사용이 아닌 개발 관점의 포스팅 입니다. 영어 발음이 썩 훌륭하진 않지만, 잘 인식하니 기특합니다. ㅎㅎ 재미있네요. 이미 Artificial Intelligence 와 로봇으로 대표되는 4차 산업 혁명이 착착 진행되고 있음을 체감하였습니다. 아래 코드는 프로그램 실행 화면의 결과이며, 처음 실행시 Say something 이라는 문구를 출력합니다. 이때 마이크에 영어로 이야기 하면 그 내용이 잠시 후 화면에 글씨로 옮겨집니다. 사용자가 말한 음성을 서버로 전송한 후, 이를 문자로 변환해 돌려주는 방식입니다. 근데 여기까지 오는 과정이 만만치 않았습니다...

이 블로그의 인기 게시물

Qt Designer 설치하기

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