뭐라도 만들어보자!!( 프로젝트 ) (43) 썸네일형 리스트형 2. MFC Programming : 쉽게 배우는 MFC 프로그래밍(CH4) 해당 내용은 쉽게 배우는 MFC 프로그래밍의 Ch4, Ch5을 정리한 것이다. 학습하면서 정리하는 용도로 이 글을 작성하였음을 참고하기를 바란다. 윈도우 운영체제는 GUI 기반으로 다양한 입력 방법을 제공한다. 윈도우 운영체제는 몇 가지의 특징을 가지고 있다. 하나는 장치의 변경이 프로그램과 독립적이라는 것이다. 예를 들어 기존의 A 사 키보드를 이용하여 입력을 할 수 있는 프로그램에 대해 구조가 다른 B사 키보드를 사용하여 입력하더라도 그 프로그램이 제대로 동작될 수 있다는 것이다. 둘 째는 여러 프로그램이 화면을 분할하여 사용해야하는 만큼, 출력 영역에 제한이 있어야 한다. 이 점 때문에, 윈도우 OS는 응용 프로그램이 직접 출력 장치 등에 접근하여 자원을 독점하는 것을 허락하지 않는다. 장치에 직접.. 1. MFC programming : 쉽게 배우는 MFC 윈도우 프로그래밍 MFC를 공부하면서 간단하게 정리하는 방식으로 글을 올릴 것이다. 해당 글은 쉬게 배우는 MFC 윈도우 프로그래밍(한빛아카데미 출판, 김선우, 신화선 지음)의 Chapter 1부터 Chapter 3까지를 정리한 것이다. 앞서서 윈도우 프로그래밍은 간단하게 윈도우 운영체제에서 구동되는 윈도우 프로그래밍을 만드는 것이다. 윈도우 운영체제의 특징으로는 다음과 같은 것을 들 수 있다. 그래픽 사용자 인터페이스 : 사용자의 인터페이스가 DOS 방식이 아닌, 그래픽 기반의 인터페이스 메시지 구동 구조 : 운영체제가 프로그램의 외부 또는 내부에 변화가 발생했음을 메시지를 통해 해당 프로그램에 알려준다. 프로그램은 사용자가 지정한 논리의 흐름에 따라 이루어지는 거이 아닌, 메시지에 대해 매순간 어떻게 반응할 것인지를 .. Visual stuido code, C/C++ 세팅(윈도우 버전) 1. Visual studio code 설치 2. Visual studio code에서 C/C++ extension pack 설치 3. MinGW 프로그램 설치 자세한 설치 방법은 밑의 블로그에서 방법 참고하여 설치할 것 https://jhnyang.tistory.com/445 윈도우에서 C/C++ 컴파일과 빌드를 위한 MSYS2 설치하기, MSYS2란 무엇인가? 안녕하세요 양햄찌 블로그 주인장입니다. ㅎㅎ 저번에 이클립스 CDT 환경구성 포스팅에서 C/C++ 컴파일러인 MINGW를 설치하는 방법에 대해 알아보긴 했었는데요, 오늘은 VSCode에서 C/C++ 개발 목적으 jhnyang.tistory.com 설치한 후에는 제어판에서 환경 변수 등록(확인은 cmd에서 gcc -v, g++ -v 처보고 ver.. 3. C++를 이용한 Postfix 계산기 만들기 완성은 8월 6일에 했는 데, 미루다보니 16일인 지금에서야 올리게 되었다. 트리 구조를 배우고 있었던 당시 예제로 nTree를 구현하면서 이 것을 계산기를 만드는 데 사용할 수 도 있겠다는 생각이 들면서 코딩을 시작하게 되었다. 계산기는 기본적으로 콘솔 형식으로 사용자로부터 수식을 입력받으면, 계산기 앱이 이를 해석하고 결과를 도출하거나 혹은 식이 도저히 계산할 수 없을 정도로 엉망인 경우에는 에러 메세지를 뱉도록 하였다. 계산기 앱을 만드는 것은 생각보다는 난이도가 있었다. 특히 사용자의 입력 부분을 다루는 데 있어서, 생각할 부분들이 많았다. 예를 들어 정의되지 않은 연산 기호가 사용된 경우, 잘못된 형식의 수를 입력하거나(ex) 1..2), 연산 기호가 중복되어 입력된 경우 등에 대한 판단이나 수.. 2. C++ Console Snake Game Snake Game을 만들고 나서 느낀 점은 확실히 테트리스가 난이도는 더 높았다는 것이다. 사실 블록의 충돌처리나 여러 블록들의 운동을 한 번에 처리하는 것은 전의 프로젝트에서 한 번 다루어 본 것이어서 크게 어려웠던 것은 없었던 것 같다. 그나마 잠깐 해매었던 부분을 꼽자면 플레이어(뱀)의 성장과 움직임을 구현하는 것에 있어서 예상했던 것과 다른 양상을 보여주어서 재설계가 필요했던 것 정도? 아무튼 이번에 프로젝트를 진행하면서 주안점을 둔 것은 보다 객체지향 기법을 이용하여 짜임새 있는 프로그램을 짜는 것이었다. 개인적으로는 main() 함수에서는 클래스 생성자 하나만 있기를 바랬다. (그리고 이 부분은 달성했다!!) 다만 클래스 자체의 짜임새도 전보다는 나름 깔끔해진 것 같다. 특히 렌더링(?)을 .. 1-5. C/C++ Console 테트리스를 만들어보자!!(Class : StackedBlockState) 어쩌면 게임의 진행과 가장 큰 연관성이 높은 클래스라고도 할 수 있겠습니다. 클래스의 역할은 현재 쌓인 블록 상태의 업데이트, 바운더리 추출, 라인 삭제, 게임 오버 판단이 있습니다. 클래스의 구조는 다음과 같습니다. class StackedBlockState { public: blockMemory stackedBlockState[GAMETEMPLATE_Y + GAMETEMPLATE_MARGIN_TYPE_1] [GAMETEMPLATE_X + 2 * GAMETEMPLATE_MARGIN_TYPE_1]; list collisionBoundary; StackedBlockState() { collisionBoundary = list(); for (int i = 0; i < GAMETEMPLATE_Y + GAMET.. 1-4. C/C++ Console 테트리스를 만들어보자!!(Class : TetrisBlock) Class TetrisBlock에 대해서 설명하고자 합니다. 말그대로 우리가 알고있는 4 개의 1 칸 블록으로 구성된 테트리스 블록의 움직임과 충돌상태 등을 관리하는 클래스입니다. 이번 글은 이전 포스팅의 Block 클래스를 참고하시면서 보면 좋습니다.(특히 Block 클래스 소스 코드를 보면서 오시는 걸 추천드려요!!) //TetrisBlock 클래스입니다. class TetrisBlock { private: Block componentBlock[4]; int tetrisBlockType; int tetrisBlockRotationNum; ableToMove tetrisBlockNowMovableState; dotPos bringBackNowPos[4]; dotPos bringBackPrevPos[4].. 1-3 C/C++ Console 테트리스를 만들어보자!!(Class : Block) 앞서 예고한 데로 3개의 클래스에 대해서 글 3개에 걸쳐서 설명하고자 합니다. Block이라는 클래스는 1칸짜리 블록에 대해서 정의한 것입니다. 차후에 TetrisBlock 클래스에서 4개의 Block 인스턴스를 생성하고 관리하게 될 것입니다. 다음은 Block Class의 정의입니다. 변화가 반영된 nowState와 그 이전 상태인 prevState를 눈여겨 볼필요가 있습니다. 전 상태의 블록은 지우고, 현재 상태의 블록을 출력한다면 사용자에게는 블록이 이동하는 것처럼 느껴질 것입니다. /* struct dotPos{ int posX; int posY; bool whetherStacked; }; sturct ableToMove{ bool ableToFall; bool ableToMoveLeft; boo.. 이전 1 2 3 4 5 6 다음