전체 글75 6. STD::SORT STD::SORT ▼ 관련 개념 Loop & Template & STD ▼ 구현 코드 #include template bool Compare(T lhs, T rhs) { return (lhs < rhs); } int main() { std::array iArr = { 5, 4, 3, 2, 1 }; std::sort(iArr.begin(), iArr.end(), Compare); return (0); } CPP A.11에서 사용할 수 있는 std::sort를 사용한 방법이다. A.11를 지원하는 CPP 컴파일러라면 대부분의 경우 프로그래머가 직접 구현한 정렬 함수에 비해서 높은 성능을 낸다. (한가지 정렬법으로 구현된게 아니라 경우에 따라 최적의 방법으로 바꾸는 방식으로 되어있다.) 다른 알고리즘 문제를 .. 2021. 1. 27. 0. 개발 환경 설정 Cocos2D-X 설치하기 Cocos2D-X는 가장 최근 버전 4.0(2019.12.04)이후로 사실상 유산(Legacy) 프로젝트가 되었다. Cocos 프로젝트의 유지보수를 주도하는 추콩(chukong) 스튜디오가 Cocos Studio를 중심으로 Cocos를 개발하기로 결정했기 때문이다. Cocos Studio는 기존의 Cocos2D-X와 같이 오픈 소스인데다 유니티와 언리얼과 같이 접근성이 매우 놓아졌다. 자바스크립트를 스크립트 언어로 채택하면서 컴파일 없이 게임을 개발할 수 있을 뿐 아니라 내부적으로는 C++로 작성되어 있어서 성능 역시 기존의 Cocos2D-X와 비교해도 손색이 없다. 지금도 C++을 사용해서 게임 제작 실습하기엔 Cocos2D-X로 충분하지만 외국 포럼에서는 C++을 공부하려면.. 2021. 1. 26. 24. 클라스 템플릿(Class Template) 주조(Template)는 이름에서도 알 수 있다시피 찍어낼 수 있는 틀을 만들 수 있는 기능이다. 템플릿을 이용한 함수는 /SUMMORIZE에서 계속 사용하고 있기 때문에 클라스의 경우를 살펴보자. 클라스 템플릿(Class Template) ▼ 헤더파일(.h/.hpp) 파일에 모두 들어가야한다. #ifndef __POINT2D_H__ #define __POINT2D_H__ template class Point2D { private: T m_x; T m_y; public: Point2D(T _x, T _y); ~Point2D(); void SetPoint2D(T _x, T _y); T GetX(); T GetY(); }; template Point2D::Point2D(T _x, T _y) { m_x = _.. 2021. 1. 26. 23. 상속(Inheritance) CPP에서 클라스를 더욱 강력한 존재로 바꿔주는 개념인 상속은 실제 영어권에서는 { 계승 }이란 뜻으로 사용된다고 한다. 이름 그대로 자식 클라스가 부모 클라스를 계승해오는 개념으로 게임 개발 속도를 크게 올려준다. 이번엔 조금은 긴 코드를 통해서 이해해보자. Private, Protected, Public ▼ 간단한(?) 클라스 상속 예시 코드 class Parent { private: int parentPrivateValue; protected: int parentProtectedValue; public: int parentPublicValue; public: Parent() { parentPrivateValue = 1; parentProtectedValue = 2; parentPublicValue .. 2021. 1. 26. 6. 삼각형 회전 시키기 GLM을 사용해서 삼각형을 회전시키는 것은 매우 간단하다. 회전 행렬에 원하는 각도만큼 넣기만 하면 끝이다. (물론 진짜 행렬 연산을 구현했다면 코드가 2배는 길어졌을 것이다.) 1 호도(Radian) 값 설정 회전을 한다는 것은 각도를 변경한다는 의미가 된다. 컴퓨터는 호도(Radian)으로 빠르게 연산하기 때문에 미리 1 호도값을 설정해서 사용하면 편리하다. ▼ 호도는 상수로 설정 해준다. const GLint WIDTH = 720, HEIGHT = 480; //--------------------------------------------- // 1 호도값 const float toRadians = 3.14159265f / 180.0f; //--------------------------------.. 2021. 1. 25. 22. 참조(&)와 포인터(*) 차이 참조(&)는 CPP에서 추가된 새로운 기능이다. 이전에 13. 포인터(Pointer) 에서 등장했었기 때문에 이번에는 둘의 차이점만 간단하게 정리한다. ▼ 참조(&)는 선언과 동시에 초기화가 되어야 한다. int main() { int base = 5; int *pointer; pointer = &base; // OK int &reference; reference = &base; // ERROR return (0); } 코드에서 보는 것처럼 참조(&)를 포인터(*)처럼 선언 후 따로 초기화하려고 하면 에러가 발생한다. int *reference = base; 와 같이 선언과 동시에 초기화를 진행해줘야 한다. 불편해 보일 수도 있지만 이러한 규칙 때문에 참조(&)는 무조건 초기화가 되기 때문에 매번 nul.. 2021. 1. 25. 이전 1 2 3 4 5 6 7 8 ··· 13 다음