[C++/Console] 테트리스 만들어 보기 - 6 (바닥 충돌, 블럭 랜덤 생성) [C++/Console] 테트리스 만들어 보기 - 5 (충돌 판정 - 벽, 블럭) [C++/Console] 테트리스 만들어 보기 - 4 (플레이어(블럭) 움직임) [C++/Console] 테트리스 만들어 보기 - 3 (화면 출력에 대한 고찰) [C++/Console] eskeptor.tistory.com 지난 시간에는 바닥 충돌, 블럭 랜덤 생성에 대해서 알아보았습니다. 오늘은 시간이 지남에 따라 자동으로 블럭이 하강하고, 스페이스바를 눌렀을 때 블럭이 회전되며, 하나의 라인을 형성하면 해당 라인을 클리어 후 점수가 올라가는 점수 시스템에 대해서 알아보겠습니다. 자동 하강 테트리스는 지정된 시간이 지나면 블럭이 아래로 ..
최근에 스크립트형 언어 컴파일러를 만들고 있습니다. (실시간 스크립트 변형 후 동작을 위한) 이 과정 중에서 어휘 분석기(Lexical Analyzer)를 구현하는 과정에서 이전에 한 번 써보았던 unordered_map를 사용하게되어 unordered_map을 다시 공부한 내용을 써보려고 합니다. 들어가기에 앞서 제가 공부한 내용들은 전부 아래의 링크들에서 학습 및 참고하였습니다. A Proposal to Add Hash Tables to the Standard Library X(i, j, n, hf, eq) X a(i, j, n, hf, eq) X Constructs an empty container with at least n buckets, using hf as the hash function a..
[C++/Console] 테트리스 만들어 보기 - 5 (충돌 판정 - 벽, 블럭) [C++/Console] 테트리스 만들어 보기 - 4 (플레이어(블럭) 움직임) [C++/Console] 테트리스 만들어 보기 - 3 (화면 출력에 대한 고찰) [C++/Console] 테트리스 만들어 보기 - 2 (키보드 입력 및 블럭) [C++/Console] eskeptor.tistory.com 지난 시간에는 충돌 판정에 관련하여 알아보았습니다. 오늘은 바닥 충돌(또는 블럭 충돌) 및 블럭 랜덤 생성에 대해서 알아보겠습니다. 바닥 충돌 (또는 블럭 충돌) 지난 시간에 이어서 바닥에 충돌하였을 때 감지하는 방법을 알아봅시다. 바닥을 확인하는 CheckBottom 함수를 작성합니다. void CheckBottom() { ..
[C++/Console] 테트리스 만들어 보기 - 4 (플레이어(블럭) 움직임) [C++/Console] 테트리스 만들어 보기 - 3 (화면 출력에 대한 고찰) [C++/Console] 테트리스 만들어 보기 - 2 (키보드 입력 및 블럭) [C++/Console] 테트리스 만들어 보기 - 1 (간단 소개 및 더블 버퍼링) Window 환 eskeptor.tistory.com 지난 시간에는 플레이어(블럭)의 움직임에 관련하여 알아보았습니다. 오늘은 플레이어(블럭) 충돌 판정에 대해서 알아보겠습니다. 충돌 판정 지난 시간에 했던 프로젝트를 실행해서 움직여보면 좌, 우, 하단 끝에 도달하여도 계속 가는 것을 볼 수 있습니다. 이것을 방지하기 위해서는 충돌 판정을 통해서 움직이지 못하도록 해야합니다. 그럼 어떻..
[C++/Console] 테트리스 만들어 보기 - 3 (화면 출력에 대한 고찰) [C++/Console] 테트리스 만들어 보기 - 2 (키보드 입력 및 블럭) [C++/Console] 테트리스 만들어 보기 - 1 (간단 소개 및 더블 버퍼링) Window 환경에서 C++과 Console창을 이용하여 테트리스를 만들어 봅시다. eskeptor.tistory.com 지난 시간에는 화면 출력에 관련하여 알아보았습니다. 오늘은 플레이어(블럭) 움직이는 처리에 대해서 알아보겠습니다. 플레이어(블럭) 클래스 먼저 플레이어(블럭)의 처리를 도와줄 클래스를 작성하여봅시다. class CPlayer { public: // Block 방향 enum eDirection { Dir0 = 0, Dir90, Dir180, Dir..
[C++/Console] 테트리스 만들어 보기 - 2 (키보드 입력 및 블럭) [C++/Console] 테트리스 만들어 보기 - 1 (간단 소개 및 더블 버퍼링) Window 환경에서 C++과 Console창을 이용하여 테트리스를 만들어 봅시다. 명령 프롬프트의 환경설정 테트리스에서 사용하는 특수 문 eskeptor.tistory.com 지난 시간에는 키보드 입력 및 블럭에 관련하여 알아보았습니다. 오늘은 Console 상에서 도형 및 프레임(화면)에 대하여 어떻게 출력할지에 대한 고찰을 해보겠습니다. 화면 출력 테트리스는 기본적으로 네모난 틀 안에서 시작합니다. 기본적으로 가로로 10칸, 세로로 20칸으로 구성됩니다. (프레임 제외) 이 공간을 이차원 배열로 표현하면 // Origin Map const..
[C++/Console] 테트리스 만들어 보기 - 1 (간단 소개 및 더블 버퍼링) Window 환경에서 C++과 Console창을 이용하여 테트리스를 만들어 봅시다. 명령 프롬프트의 환경설정 테트리스에서 사용하는 특수 문자(벽돌과 같은)는 명령 프롬프트의 폰트 설정에 많은 영향을 받 eskeptor.tistory.com 지난 시간에는 기본적인 소개와 화면 갱신에 관련하여 알아보았습니다. 오늘은 키보드 입력과 블럭에 대해서 알아보도록 하겠습니다. 윈도우 기반 콘솔에서 C/C++로 키보드 입력 받기 이 방식은 Windows 운영체제의 명령 프롬프트에서 C/C++로 키보드를 입력받는 방식입니다. Linux 운영체제의 Terminal에서는 사용할 수 없습니다. 여기서 사용하는 conio.h에 정의된 함수들은 ..
Window 환경에서 C++과 Console창을 이용하여 테트리스를 만들어 봅시다. 명령 프롬프트의 환경설정 테트리스에서 사용하는 특수 문자(벽돌과 같은)는 명령 프롬프트의 폰트 설정에 많은 영향을 받습니다. 그러므로 명령 프롬프트의 폰트는 "굴림"을 사용 해주세요. 테트리스의 소스 코드 현재 이 테트리스의 코드는 깃허브에 공개되어 있습니다. GitHub - Eskeptor/Tetris_Cpp: C++ Tetris C++ Tetris. Contribute to Eskeptor/Tetris_Cpp development by creating an account on GitHub. github.com 테트리스 매커니즘 이 프로그램은 다음과 같은 매커니즘을 갖습니다. 상단에서 블럭이 하단으로 내려온다. 도형은 ..
C++용 Bloat-Free GUI Library인 ImGui(아임구이) 입니다. 저도 최근에 알게된 라이브러리 입니다. GitHub - ocornut/imgui: Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies - GitHub - ocornut/imgui: Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies github.com 현재 많은 기업들로 부터 지원을 받고 있는..
이전 시간에는 MFC Grid Control(이하 Grid)을 사용하기 위한 과정을 봤습니다. 혹여나 잘 되지 않았다면 위 파일을 이용하여 해보세요. 이전 과정에서 수정했던 것을 반영한 MFC Grid Control 소스 입니다. MFC Grid Control 생성 이제 Grid를 생성하여봅시다. 도구 상자에서 Custom Control을 생성합니다. 여기서 중요한 것은 클래스(Class)에 MFCGridCtrl을 넣어주는 것입니다. (저는 ID를 IDC_GRID로 설정하였습니다.) 이제 메인 다이얼로그의 헤더 파일(h)로 와서 Grid 변수와 초기화용 함수를 선언해줍니다. #pragma once #include "GridCtrl_src/GridCtrl.h" class CMFC노리터Dlg : public..