7월, 2018의 게시물 표시

처음 접하는 프로그래밍

이미지
처음 프로그래밍을 접할 때 어렵다고 느낄 수 있습니다. x 프로그래밍을 하려면 컴퓨터에 명령하기 위해 프로그래밍 언어(C++, JAVA, 파이썬 등)를 배워야 하고,  이는 영어, 독일어 등 외국어를 배우는 것과 비슷하지만 문법적으로 조금만 틀려도 컴퓨터는 못 알아 듣고 에러를 출력하죠. 영어를 잘 못해도 외국인과 이야기 할 때는 표정이나, 손짓, 등을 통해 얼마든지 내 뜻을 표현 할 수 있지만, 컴퓨터는 이런 융통성이 부족합니다. 조금만 프로그래밍 언어의 문법에 어긋나면 (예를 들어 마침표를 찍지 않는다던지..) 바로 알아 듣지 못합니다. 사실 조금만 프로그래밍 언어에 익숙해 지면 위에서 말한 코드의 문법적 오류는 쉬운 범주에 속하는 오류라는 걸 알게되죠. 프로그래밍 언어로 만든 코드는 컴파일 과정을 거쳐 기계어에 가까운 형태로 변경되어 실행되는데 , 이 컴파일 과정에서 실수로  잘 못 작성된 코드의 문법적 오류는 컴파일러가 바로 알려주므로 조금만 익숙해지면 금방 찾을 수 있습니다. 찾기 어려운 오류는 코드 작성 시 (컴파일타임 이라고 합니다)에서 일어나는 오류가 아니라, 실행 시 (런 타임이라고 합니다) 일어나는 오류입니다. 단순한 문법적 오류가 아니라 의미상 오류(문법이 맞았지만 결과...

심화반 예제 (테트리스)

이미지
모르는 사람이 없는 테스리스 게임 소스코드, 설치파일을 소개합니다. 테트리스 게임은 1984년 구 소련의 프로그래머 알렉세이 퍼지노프가 만든 게임이라고 합니다. C++로 만든 과정은 아래와 같습니다. 1. 테트리스 블록들(총 7가지 모양)을 2차원 배열(4x4)로 만든 후 각자의 모양을 bool 타입의 변수에 저장합니다. 2. 테트리스 맵이 될 2차원 배열을 만들어 (가로 20, 세로 10) 각 셀의 배열의 위치 정보를 저장해 둡니다. 3. 프로그램 시작시 랜덤함수를 이용해 떨어질 도형 모양의 번호를 구한 후, 각 도형모양에 맞는 블록을 맵의 가장 위쪽 좌표에 그려줍니다. 4. 한단계식 아래로 이동시킵니다. (Y축의 배열 인덱스를 증가) 5. 키보드 방향키 (좌, 우)를 누르면, 떨어지는 도형의 배열을 회전 시켜 다시 그립니다. 6. 맨 아래 바닥에 닿았거나 또는 블록에 닿을때까지 계속 아래로 이동하다가 해당 조건을 만족하면 도형의 위치정보를 맵에 기록해 둡니다. 7. 3번 ~ 7번 과정을 반복합니다. 8. 만약 블록이 안착(?) 했다면 한 줄(행)이 모두 도형으로 채워졌는지 검사하고, 맞다면 해당 줄의 도형정보를 삭제한 후, 위에 쌓여진 도형들은 6번의 과정을 거쳐 아래로 내려줍니다. 실제 코드로 구현한 클래스 다이어 그램입니다. 좀 더 자세한 내용은 링크된 소스코드를 참조해서, 한번 만들어 보시기 바랍니다. 생각보다 어렵지만, 테스리스 역시 프로그래밍 공부하기 좋은 예제입니다. 버그가 있다면 알려주세요. ^^ 개발환경 : Microsoft Visual Studio 2015, Windows 10 Pro 64bit 개발언어 : C++, MFC 핵심 적용 기술, 환경  Device Context, GDI, Raster Operation, Double Buffering (깜빡임방지) SDI (Single Document Interface)...

심화반 예제 (그림판)

이미지
C++, MFC 과정을 수료 후, 심화반 학원생들이 가장 처음 만드는 그림판 프로젝트의 소스코드와 설치파일을 소개합니다. 제가 대학교 3학년 때 학과 수업으로 진행했었던 프로젝트이며, 윈도우즈 프로그래밍을 처음 접하는 개발자가 공부하기 좋은 예제입니다. 개발환경 : Microsoft Visual Studio 2017, Windows 10 Pro 64bit 개발언어 : C++, MFC 핵심 적용 기술, 환경  Device Context, GDI, Raster Operation SDI (Single Document Interface) Windows Message (Mouse, Command Message) 첨부파일  설치파일 (Installshield로 제작된 설치파일, 클릭)  소스코드 (C++ 소스코드, rar 압축파일형태, 클릭) 구글아이디로 로그인하면 다운로드 가능합니다. ...

이 블로그의 인기 게시물

Qt Designer 설치하기

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