[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 현재 많은 기업들로 부터 지원을 받고 있는..
자료구조에서 Queue는 FIFO(First In First Out)의 구조를 가집니다. 먼저 들어온 자료는 먼저 처리되는 형식입니다. 그렇기 때문에 자료의 삽입은 구조의 맨 뒤에서, 자료의 삭제는 맨 앞에서 이루어집니다. C++ 에서 포인터를 이용하여 Queue 만들기 Queue를 포인터를 이용해 만들어 보겠습니다. 여러 데이터를 사용할 수 있게 제네릭으로 구성하였습니다. Queue는 위와 같은 그림처럼 이루어져 있습니다. Queue라는 구조 안에 Node라는 데이터들이 줄지어 있습니다. 이 Node들은 단방향으로 길게 이어져 있으며 Queue는 이 Node들의 시작 지점(Start)과 끝 지점(End)을 기억하고 있습니다. 데이터의 삭제는 시작 지점(Start)에서, 삽입은 끝 지점(End)에서 이루..