본문 바로가기

프로그래밍

(90)
error LNK1104: cannot open file 'dxerr9.lib' error LNK1104: cannot open file 'dxerr9.lib' DirectX SDK 2009 November 원래는 저게 됬었는데 왜 안되는지 보니까 9 때문이었다. #pragma comment(lib,"dxerr9.lib") 를 #pragma comment(lib,"dxerr.lib") 로 바꾸니까 됬다.
[API] 함수 호출 규약 함수 호출 규약은 다른 2개의 프로젝트를 연결할 때 사용되는 개념으로 dll 등을 제작할 때 필요하다. 함수를 호출할 경우에는 호출하는 쪽에서 파라미터로 data를 전달하고, 함수에서는 그 data로 여러 처리를 하는데이때 파라미터의 전달 방법 그리고 전달된 파라미터를 해제하는 방법이 여러가지가 있다. 이를 함수 호출 규약이라고 한다. 호출 규약에는 __stdcall, __cdecl, __fastcall, __thiscall 등 여러가지 종류가 있다. __stdcall Windows API의 기본 호출 방식이다. __cdecl C/C++ 의 기본 호출 방식이다. __fastcall 이름 그대로 빠른 호출 규약이다. Windows API 는 이 호출 규약을 지원하긴 하지만 사용하진 않는다. __thisca..
[AI] FSM (Finite State Machine : 유한 상태 기계) AI ( Artificial Intelligence ) 란, 인공지능으로 인간의 학습능력, 추론능력, 지각능력, 이해능력 등을 컴퓨터 프로그램으로 실현한 것이다. FSM 은 인공지능 기법중 하나로 유한한 개수의 상태를 가지는 추상기계이다. 한번에 보통 하나의 상태만을 가지며 현재 상태(Current State)란 임의로 주어진 시간의 상태를 말한다. FSM은 어떤 이벤트에 의해 한 상태에서 다른 상태로 변화할 수 있으며 이를 전이라고 한다. 현재 상태로부터 가능한 전이 상태와 이러한 전이를 유발하는 조건의 집합으로 정의된다. 프로그래밍에서 FSM은 실행 시점에서 현재 상태에 기반해 객체의 코드 일부를 선택적으로 수행하므로써 객체의 행동을 제어하는 용도로 쓰인다. 이론적으로는 어떠한 객체의 제어에도 쓰일 ..
GPG Game Programming Gems 통합 찾아보기http://www.gpgstudy.com/gpgindex/
[디자인패턴] Bridge 패턴 브릿지는 추상화 부분과 구현 부분을 분리하는 패턴입니다. 기능(추상화 부분)과 구현을 별도의 클래스로 정의해 분리하는 방법으로 두 클래스를 서로 다른 계층 구조에 넣어 모두 변경 가능하게 합니다. 기능과 구현을 각각 정의한 후 구현에 관련된 클래스를 기능 클래스가 포함!합니다. 이렇게 하면 기능과 구현이 분리된 것을 알 수 있고, 최적화된 클래스 설계가 가능합니다. 또한 구현을 완전히 숨길 수 있다는 장점이 있습니다. 예를 들어보면, 두 클래스 무기와 종족이 있습니다. #pragma once #include using namespace std; // 무기 class cWeapon { public: cWeapon(void) {}; virtual ~cWeapon(void) {}; // 사용하기 virtual..
[디자인패턴] 어댑터 패턴 (Adapter Patten) 어댑터 패턴이란, A는 원래 존재하던 클래스 혹은 시스템입니다. 이것을 클래스 B에 적용시키려고 했더니 인터페이스가 달라 호환이 복잡해지게 생겼습니다. A와 B클래스는 변경이 불가능하고 둘은 연결시켜야 합니다. 어떻게 해야할까요? 이때 두 클래스를 연결시키려고 사용하는 것이 어댑터입니다. 정의는 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환하는 것으로 어댑터를 이용해 인터페이스 호환성 문제때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있습니다. 쉬운 예로 들어봅시다. 예전에는 모두 아날로그 방송이였습니다. 하지만 지금은 디지털 방송으로 바뀌었지요? 디지털 방송을 예전 티비로 보기위해선 SetTop Box를 설치해야 합니다. 이 SetTop Box가 어댑터로 아날로그 ..
[디자인패턴] 팩토리 메소드 패턴 팩토리 패턴은 대표적인 생성 패턴 중 하나로 느슨한 결합을 이용하는 디자인입니다. 객체의 인스턴스를 만드는 작업이 항상 공개되어있어야 하는 것은 아니며, 공개를 할 때 객체간 결합의 문제가 발생할 수도 있습니다. 팩토리 패턴을 이용해 불필요한 의존성을 없앨 수 있습니다. 구조를 설계할 때 인터페이스에 맞춰서 코딩하면 변화에 열려있는 코드가 됩니다.패턴에서 가장 중요한 것중 하나는 캡슐화라는 개념으로 바뀌는 부분과 바뀌지 않는 부분을 분리하고, 바뀌는 부분을 묶어두는 것입니다.팩토리에서의 캡슐화는 생성을 묶어놓습니다. 간단한 팩토리를 보겠습니다. Pizza OrderPizza(char* pType) { Pizza m_pizza; // 피자 생성 if(strcmp(pType,"치즈")) { m_pizza =..
[디자인패턴] Facade 패턴 Facade의 뜻은 정면, 표면이라는 뜻입니다. 퍼사드 패턴은 어떤 서브 시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공하고, 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브 시스템을 더 쉽게 사용할 수 있습니다. 퍼사드 패턴을 만들기 위해서는 어떤 서브 class에 속한 일련의 복잡한 클래스들을 단순화하고, 통합한 클래스를 만들어야 합니다.다른 패턴과 달리 추상화같은게 필요없어 단순한 편으로, 퍼사드를 이용하면 클라이언트와 서브시스템이 긴밀하게 연결되지 않아도 되고, 객체지향의 원칙을 준수하는데 도움이 됩니다. 간단히 말하면 단순화된 인터페이스를 통해 서브시스템을 더 쉽게 사용하게 합니다. 퍼사드 패턴의 장점은 더 간단한 인터페이스를 만들 수 있다는 것이 있습니다. 또한 클라이언트 구현과..