본문 바로가기
반응형

프로그래밍 이야기/C++ 기초26

[게임이론] 벡터-내적의 활용 https://definelife.tistory.com/56 [게임이론] 백터의 내적 벡터의 내적에 대해 알아본다. 티스토리는 수식입력이 참 어렵다. 스크린샷으로 대신한다. definelife.tistory.com 벡터의 내적에 대해 알아봤으니 이제 실제 게임에서 어떻게 사용되는지 알아본다. 마찬가지로 엔진 구성이나 사용 방식보다는 학습한 공식을 적용해보는데 중점을 둔다. 위 포스팅에서의 핵심 공식은 다음과 같다. 위와 같이 스크린상에 다수의 오브젝트 ghost가 존재하고 flashlight가 이동하면 이 flashlight안에 들어온 ghost의 개수를 확인하는 시나리오이다. 이에 대한 중심 코드는 아래와 같다. void CheckGhost() { int i = 0; // 초기값은 0 // foreac.. 2020. 12. 26.
[C++]Design Pattern - Decorator Pattern [문제점] 미사일을 발사하는 우주선이 있다. 가령 어떤 아이템을 획득하면 왼쪽 미사일이 추가되고, 다시금 아이템을 획득하면 오른쪽 미사일도 추가되는 이러한 기능을 만들어보자. #include using namespace std; class SpaceCraft { int color; int speed; public: void Fire() { cout 그러나 에러(RightMissile은 LeftMissile을 받을 수 없다. // --> 공통의 기반 클래스가 있어야 한다. (우주선과 기능추가 객체는 동일한 기반 클래스를 가져야 한다.) RightMissile rm(&lm2); rm.Fire(); return 0; } 그러나 이 경우에도 불편한 점이 있다. 모든 객체가 Component를 포함해야 하는 것이.. 2020. 12. 18.
[C++] 일반 함수에서의 가변성 [문제점] 다음과 같이 정렬을 수행하는 예제가 있다. Sort함수의 정책(오름차순 정렬, 내림차순 정렬)을 외부에서 결정할 수 있도록 고쳐보자. #include #include using namespace std; void Sort(int* x, int size) { for (int i = 0; i < size-1; i++) { for (int j = i+1 ; j< size; j++) { // 오름차순, 내림차순의 정책을 결정하는 코드 if( x[i] < x[j] ) { swap(x[i], x[j]); } } } } int main() { int x[10] = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 10}; Sort(x, 10); for(auto n : x) { cout 2020. 12. 11.
[C++]Design Pattern - Application Framework 흔히 객체지향 프로그래밍이라 함은 쉽게 생각해 본다면 모든 것을 객체로 만드는 것이라고 할 수 있겠다. 그러나 C++은 태생적으로 main이 일반 함수이기 때문에 모든 것을 객체로 만들 수가 없다. GUI, 스마트폰 앱, 게임과 같이 특정 분야의 애플리케이션들은 전체적인 흐름이 항상 유사하다. 이런 전체적인 흐름이 유사한 애플리케이션에서는 이를 위해 main함수 안에서 전반적인 흐름을 담아 라이브러리 내부에 감추는 기법을 사용한다. #include using namespace std; class CWinApp; // 클래스 전방선언 CWinApp* g_app = 0; class CWinApp { public: CWinApp() { g_app = this; } virtual bool InitInstance.. 2020. 12. 7.
반응형