언어

[Basic C++] #58_포인터, 배열과 포인터, 포인터 연산 C++의 "포인터"에 대해 알아보겠습니다. "전문가를 위한 C"의 22 항목, "효과적인 메모리 관리"에 해당하는 내용입니다. 포인터 개념 1. 포인터? 포인터는 단순히 메모리 위치를 계산하는 주 솟값입니다. 2. "*"를 활용한 역 참조 "*" 연산자를 활용하면 포인터를 역 참조할 수 있습니다. 여기서 역 참조란 단순히 포인터가 가리키는 메모리 주소에 들어있는 값을 가져올 수 있습니다. 3. "&"를 활용한 참조 "&" 연산자를 활용하면 어떤 값이 저장되어 있는 메모리의 주솟값을 가져옵니다. 보통 포인터 변수에 "&a" 값을 넣어줌으로써 "a"라는 변수의 메모리 주소 값을 넘겨줍니다. 배열과 포인터 1. 배열 == 포인터, but ALL..
[Basic C++] #57_동적 메모리 C++의 "동적 메모리"에 대해 알아보겠습니다. "전문가를 위한 C"의 22 항목, "효과적인 메모리 관리"에 해당하는 내용입니다. 동적 메모리 1. 메모리 구조 1. 코드 영역 : 컴파일된 프로그램이 저장되는 영역, ready-only! 2. 데이터 영역 : 전역 변수 및 정적 변수가 저장되는 영역 3. 힙 영역 : 동적으로 할당된 변수를 저장하는 영역 4. 스택 영역 : 함수 매개변수, 지역 변수 및 기타 함수 관련 데이터가 저장되는 영역 2. Heap 정적 메모리와 반대로 힙은 동적 메모리 할당에 사용되는 공간입니다. 동적 메모리 할당이란, 프로그램 실행 중에 메모리 공간을 할당받는 것을 의미하며, 프로그램의 종료와 함께 해제해주어 운영체제에 반납해야 합니다..
[디자인 패턴] #11_타입 객체, Type Object 게임 디자인 패턴 중 "타입 객체"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 13 항목, "타입 객체"에 해당하는 내용입니다. 개념 1. 타입 객체 클래스 하나를 인스턴스 별로 다른 객체형으로 표현하며, 앞으로 추가할 새로운 클래스들을 유연하게 만들 수 있게 합니다. 2. 왜 필요한가? #include using namespace std; class Monster { public: virtual ~Monster(); virtual string getAttack() = 0; protected: Monster(int initialHealth):health(initialHealth){} private: int health; }; class Dr..
[Basic C++] #56_cctype, 대문자+소문자 확인 C++의 라이브러리 중 "cctype"에 대해 알아보겠습니다. cctype 헤더가 제공하는 소문자+대문자 판별 함수에 대한 내용입니다. isdigit, isupper, islower, isspace 1. 헤더 #include 2. 코드 #include #include #include using namespace std; int main() { string str = "aBF c12"; cout
[디자인 패턴] #10_Sandbox Pattern, 샌드박스 패턴 게임 디자인 패턴 중 "행동 패턴"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 12 항목, "하위 클래스 샌드박스"에 해당하는 내용입니다. 샌드박스 패턴 1. 정의 상위 클래스가 제공하는 기능들을 통해서 하위 클래스에서 행동을 정의한다. 2. 상세 내용 * 상위 클래스가 제공하는 인터페이스 없이, 하위 클래스에서 각각의 행동을 정의할 경우? 1. 중복 코드의 문제점 2. 대부분의 외부 코드와 커플링 된다. 3. Too Much Coupling 문제로 외부에서 코드를 변경할 경우, 클래스가 깨진다. 4. 모든 하위 클래스가 공통적으로 공유할 불변식을 정의하기 어렵다. * 기본적인 구현 방법? 원시 명령을 상위 클래스의 "protec..
[디자인 패턴] #9_업데이트 패턴, Update Pattern 게임 디자인 패턴 중 "순서 패턴"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 10 항목, "업데이트 메서드"에 해당하는 내용입니다. 업데이트 패턴 1. 개념 * 개념 : 객체 컬렉션에 들어 있는 객체별로 한 프레임 단위의 작업을 진행하라고 "알려줘서" 전체를 시뮬레이션한다. 2. 왜? // 메인 게임 루프 while(true) { //... // 몬스터 객체의 이동 거리 업데이트 if(bMonsterLeft == true) { x--; if(x == 0) bMosterLeft = false; }else { x++; if(x == 100) bMonsterLeft = true; } // 이동 거리 결과 업데이트 Monster.setPo..
[디자인 패턴] #8_게임 루프, Game Loop Pattern 게임 디자인 패턴 중 "순서 패턴"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 9 항목, "게임 루프"에 해당하는 내용입니다. 게임 루프 1. 사용 목적 * Why? : 게임 시간 진행을 유저 입력과 프로세서의 속도와 디커플링 합니다. 2. 개념 사용자 입력을 기다리는 동안 루프가 계속 돌며 게임을 진행합니다. 루프가 얼마나 빠르게 돌았는지에 따라서 "FPS"가 측정되며, 어떠한 플랫폼에서도 일정한 속도를 유지하는 것이 주요합니다! 코드 예제 1. 게임 루프의 기본 형태 while(true) { processInput(); update(); render(); } 1. 사용자 입력 처리 2. 상태 업데이트 3. 화면에 그려내기 * 주..
[디자인 패턴] #7_이중 버퍼, Double Buffer 게임 디자인 패턴 중 "이중 버퍼 패턴"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 8 항목, "이중 버퍼"에 해당하는 내용입니다. 이중 버퍼 1. 개념 * 이중 버퍼 패턴? : 어떠한 클래스는 변경이 가능한 상태를 캡슐화합니다. 해당 상태는 지속적으로 변경되지만, 외부에서 볼 때 한 번에 변경되는 것처럼 보이게 하고 싶습니다. 따라서, 해당 클래스를 "현재" 상태와 "다음" 상태를 갖도록 합니다! 이때, "현재" 상태는 항상 "읽기" 전용이며, "다음" 상태는 항상 "쓰기" 혹은 "변경"에 사용됩니다! 2. 그렇다면, 언제? 1. 순차적으로 변경해야 하는 상태가 있을 때 2. 변경 도중에도 접근 할 수 있는 상태가 있을 때 3. 외부에서..
[디자인 패턴] #6_상태 패턴, State Pattern 게임 디자인 패턴 중 "상태 패턴"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 7 항목, "상태"에 해당하는 내용입니다. 유한 상태 기계(FSM) 객체의 내부 상태에 따라 스스로 행동을 변경할 수 있게 허가하는 패턴으로, 이렇게 하면 객체는 마치 자신의 클래스를 바꾸는 것처럼 보입니다. 1. FSM, 유한 상태 기계 유한 상태 기계는 입력, 상태, 그리고 전이 (Transition)로 구성된 수학적 모델입니다. FSM = 입력 + 상태 + 전이 주요 포인트는 아래와 같습니다. 1. 가질 수 있는 "상태"가 한정적입니다. 2. 한 번에 한 가지 "상태"만 허용됩니다. 예를 들면, 서 있는 동시에 점프할 수 없습니다! 3. "입력" 혹은 "이..
[Basic C++] #55-7_템플릿 변수 C++의 템플릿 중 "템플릿 변수"에 대해 알아보겠습니다. "전문가를 위한 C"의 11 항목, "템플릿을 이용한 제네릭 코드 작성"에 해당하는 내용입니다. 템플릿 변수 // 템플릿 변수 선언 template constexpr T pi = T(3.14................); // 정의 방법 int main() { float piToInt = pi; // pi 를 int 타입으로 초기화 double piToDouble = pi; // pi 를 double 타입으로 초기화 }
Hardii2
'언어' 카테고리의 글 목록 (6 Page)