Study

Study/C#, Winform

[C#] 바이트 배열 다루기 : BitConverter

C#을 다루면서 비트를 다룰 때 생각보다 많이 사용하게되는 BitConverter입니다. 데이터를 바이트 배열로 변환하거나 바이트 배열을 데이터로 변환하여 전달할 때 많이 쓰입니다. BitConverter Class // // 요약: // Converts base data types to an array of bytes, and an array of bytes to base // data types. public static class BitConverter BitConverter는 static class의 형태로 내부의 함수들 또한 static 함수로 이루어져 있습니다. BitConverter에서 자주 쓰이는 함수 (데이터를 Byte 배열로 변환) // bool 값을 byte[]로 변환 public s..

Study/C#, Winform

[C#] 바이트 배열을 이용한 비트 다루기 : BitArray

C#을 다루면서 비트를 다룰 때 생각보다 많이 사용하게되는 BitArray입니다. 바이트 배열을 넣어서 사용하기도 하고 비트의 개수를 넣어서 사용하기도 합니다. BitArray 생성자 using System.Collections; // BitArray를 사용하기 위함 // length 만큼의 길이를 가진 비트배열을 만듬 (모든 비트는 0) public BitArray(int length); // length 만큼의 길이를 가진 비트배열을 만들고 기본값을 defaultValue로 설정 public BitArray(int length, bool defaultValue) // 바이트 배열을 비트배열로 만듬 // 예) bytes = byte[2] -> BitArray를 16칸 자리를 만듬 // (BitArray..

Study/C++

[C++/Console] 테트리스 만들어 보기 - 7 (자동 하강, 블럭 회전, 라인 클리어)

[C++/Console] 테트리스 만들어 보기 - 6 (바닥 충돌, 블럭 랜덤 생성) [C++/Console] 테트리스 만들어 보기 - 5 (충돌 판정 - 벽, 블럭) [C++/Console] 테트리스 만들어 보기 - 4 (플레이어(블럭) 움직임) [C++/Console] 테트리스 만들어 보기 - 3 (화면 출력에 대한 고찰) [C++/Console] eskeptor.tistory.com 지난 시간에는 바닥 충돌, 블럭 랜덤 생성에 대해서 알아보았습니다. 오늘은 시간이 지남에 따라 자동으로 블럭이 하강하고, 스페이스바를 눌렀을 때 블럭이 회전되며, 하나의 라인을 형성하면 해당 라인을 클리어 후 점수가 올라가는 점수 시스템에 대해서 알아보겠습니다. 자동 하강 테트리스는 지정된 시간이 지나면 블럭이 아래로 ..

Study/C++

[C++11] unordered_map

최근에 스크립트형 언어 컴파일러를 만들고 있습니다. (실시간 스크립트 변형 후 동작을 위한) 이 과정 중에서 어휘 분석기(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..

Study/C++

[C++/Console] 테트리스 만들어 보기 - 6 (바닥 충돌, 블럭 랜덤 생성)

[C++/Console] 테트리스 만들어 보기 - 5 (충돌 판정 - 벽, 블럭) [C++/Console] 테트리스 만들어 보기 - 4 (플레이어(블럭) 움직임) [C++/Console] 테트리스 만들어 보기 - 3 (화면 출력에 대한 고찰) [C++/Console] 테트리스 만들어 보기 - 2 (키보드 입력 및 블럭) [C++/Console] eskeptor.tistory.com 지난 시간에는 충돌 판정에 관련하여 알아보았습니다. 오늘은 바닥 충돌(또는 블럭 충돌) 및 블럭 랜덤 생성에 대해서 알아보겠습니다. 바닥 충돌 (또는 블럭 충돌) 지난 시간에 이어서 바닥에 충돌하였을 때 감지하는 방법을 알아봅시다. 바닥을 확인하는 CheckBottom 함수를 작성합니다. void CheckBottom() { ..

Study/C++

[C++/Console] 테트리스 만들어 보기 - 5 (충돌 판정 - 벽, 블럭)

[C++/Console] 테트리스 만들어 보기 - 4 (플레이어(블럭) 움직임) [C++/Console] 테트리스 만들어 보기 - 3 (화면 출력에 대한 고찰) [C++/Console] 테트리스 만들어 보기 - 2 (키보드 입력 및 블럭) [C++/Console] 테트리스 만들어 보기 - 1 (간단 소개 및 더블 버퍼링) Window 환 eskeptor.tistory.com 지난 시간에는 플레이어(블럭)의 움직임에 관련하여 알아보았습니다. 오늘은 플레이어(블럭) 충돌 판정에 대해서 알아보겠습니다. 충돌 판정 지난 시간에 했던 프로젝트를 실행해서 움직여보면 좌, 우, 하단 끝에 도달하여도 계속 가는 것을 볼 수 있습니다. 이것을 방지하기 위해서는 충돌 판정을 통해서 움직이지 못하도록 해야합니다. 그럼 어떻..

Study/C++

[C++/Console] 테트리스 만들어 보기 - 4 (플레이어(블럭) 움직임)

[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..

Study/C++

[C++/Console] 테트리스 만들어 보기 - 3 (화면 출력에 대한 고찰)

[C++/Console] 테트리스 만들어 보기 - 2 (키보드 입력 및 블럭) [C++/Console] 테트리스 만들어 보기 - 1 (간단 소개 및 더블 버퍼링) Window 환경에서 C++과 Console창을 이용하여 테트리스를 만들어 봅시다. 명령 프롬프트의 환경설정 테트리스에서 사용하는 특수 문 eskeptor.tistory.com 지난 시간에는 키보드 입력 및 블럭에 관련하여 알아보았습니다. 오늘은 Console 상에서 도형 및 프레임(화면)에 대하여 어떻게 출력할지에 대한 고찰을 해보겠습니다. 화면 출력 테트리스는 기본적으로 네모난 틀 안에서 시작합니다. 기본적으로 가로로 10칸, 세로로 20칸으로 구성됩니다. (프레임 제외) 이 공간을 이차원 배열로 표현하면 // Origin Map const..

Study/C++

[C++/Console] 테트리스 만들어 보기 - 2 (키보드 입력 및 블럭)

[C++/Console] 테트리스 만들어 보기 - 1 (간단 소개 및 더블 버퍼링) Window 환경에서 C++과 Console창을 이용하여 테트리스를 만들어 봅시다. 명령 프롬프트의 환경설정 테트리스에서 사용하는 특수 문자(벽돌과 같은)는 명령 프롬프트의 폰트 설정에 많은 영향을 받 eskeptor.tistory.com 지난 시간에는 기본적인 소개와 화면 갱신에 관련하여 알아보았습니다. 오늘은 키보드 입력과 블럭에 대해서 알아보도록 하겠습니다. 윈도우 기반 콘솔에서 C/C++로 키보드 입력 받기 이 방식은 Windows 운영체제의 명령 프롬프트에서 C/C++로 키보드를 입력받는 방식입니다. Linux 운영체제의 Terminal에서는 사용할 수 없습니다. 여기서 사용하는 conio.h에 정의된 함수들은 ..

Study/C++

[C++/Console] 테트리스 만들어 보기 - 1 (간단 소개 및 더블 버퍼링)

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 테트리스 매커니즘 이 프로그램은 다음과 같은 매커니즘을 갖습니다. 상단에서 블럭이 하단으로 내려온다. 도형은 ..

Eskeptor
'Study' 카테고리의 글 목록