전체 글
-
다시 C++ 정리@ 16. 1 ~ 17. 1/C++ 2016. 11. 15. 01:58
프로그래밍 디자인(디자인하느라 하루종일 투자해도된다)--------------------------------------------------------------------------------------------------------------------------------------------------------- 1. 공통적인 부분을 우선 모아보기2. 추상화~~ 인터페이스 나누기 서브시스템 확인하기..서브 시스템이란..예를들어 최상위 객체? mgr개념의 클래스와 일반 객체 클래스까지 포함하는 최상위 클래스를 기능별로 나눈것.. 그리고 각 서브시스템의 인터페이스와 상호연동을 정의하는 것이다. 표로 만든다면서브시스템 이름 | 인스턴스 개수 | 서브시스템 기능 | 공개된 인터페이스 | 어떤 서브시..
-
쓰레드 관련쥬신게임아카데미/C++ 2016. 3. 29. 02:48
쓰레드 생성시 전달되는 함수는DWORD WINAPI ThreadProc(LPVOID lpParam)이런식으로 반환값은 DWORD, 매개변수는 LPVOID 인자값..WINAPI 호출규약형식으로 지정되어야 한다..그리고 그 함수내 지역변수는 각 쓰레드에서 공유되지 않음..스택영역이니까.. 쓰레드 종료는 항상1. return 0이 최고다. (이건 하나씩 리턴되면서 종료...순차적으로 다해야함 아래랑 비교됨)2. ExitThread함수 호출방식(특정 위치에서 쓰레드의 실행을 종료시키고자 하는 경우 즉, 여기서 모든쓰레드를 종결합니다라는 의미그러나 ...순차적으로 호출된 함수내에 객체가 있다면..소멸자가 호출이 안되는 경우가있어서 메모리 누수 발생된다..그래서 return 0 호출이 더 좋은..)(매개변수로 종료..
-
GPG gem 1일차쥬신게임아카데미 2016. 3. 7. 18:46
1. 하드 코딩을 없애라.. 어떤 것이들 바뀔 수 있다고 가정해야한다. 게임이 시동될 때마다 또는 필요할 때마다 텍스트 파일등를 읽어서 처리할 수 있또록 시스템을 만들어야한다.. 무기의 종류가 4가지엿다가 100가지로 늘어나도 텍스트 파일만 적당히 수정하면 되니까.. 2. 데이터 중복 피해라 서로 다른 두 지점에서 동일한 행동이 일어나야 하는 경우 코드는 하나만 존재해야한다. 데이터도 여러곳에서 쓰인다면 전역적으로 만드는것이다.. 헝가리안 dw == DWORD, w == WORD s_ == 정적변수 static C로 시작하는 클래스 구체 클래스(특정한 용도와 구현을 가진 클래스 I로 시작하는 것은 인터페이스 클래스(다른 클래스들이 상속받을 기반 클래스로 쓰임) 클래스 설계 변수 초기화를 개별적인 함수에서..
-
1차 시연회 정리쥬신게임아카데미/자기반성 2016. 3. 5. 21:44
WINAPI 시연회 준비간 잘못된 점.1. 큰틀에서의 문제게임상에서 각 역활에 대한 큰 틀에서의 분석이 매우 미흡..마우스를 사용하는 게임 특성상 가운데 메인 UI에 각 상태를 나타내는 방식이 필요했고..UI메니저를 만들어서 마우스가 각 객체를 선택했을때 필요한 정보(구조체)를 key메니져에서 받아 UI메니져에게 전달하는 식으로 생각했음..덕분에 key메니저가 상당히 무거웠지만(당연할수 밖에 없음..)꽤 괜찮은 생각이였음..하지만 문제는* 큰틀 그 이상 그 이하 생각을 못했던 점..큰틀과 점점 더 작아지는 부분에 대해 생각이 매우 미흡..하나의 객체나 하나의 무언가 필요할때 그 연계성에 대한 생각이 매우 미흡했다..문서화가 없었다는 점이 미칠듯한 망한 요인..반드시 어느정도의 문서화가 필요하다..머릿속에..
-
중재자 패턴@ 16. 1 ~ 17. 1/디자인 패턴 2016. 2. 1. 20:41
정의 다수의 객체를 다뤄야 하는 경우 주로 사용한다. 서로 관련된 객체를 복잡한 연관 관계를 한 곳으로 집중시키고자 하는 경우 이 객체들간의 “중재자”가 되어 그들이 서로를 알지 못하더라도 다른 객체에게 정보를 전달할 수 있다. 장점 중재자 클래스를 사용함으로써 각 클래스를 정의할 때 다른 객체를 참조할 필요 없이 중재자만 참조. 여러 객체들에게 분산될 행위를 한 곳으로 모아 객체간의 결합도를 낮춘다. M:N의 관계를 M:1의 관계로 바꿔주어 관리, 확장, 재사용성이 높아진다. 객체들간의 상호 연관 관계를 중재자에서 구현함으로써 객체의 행위와 무관하게 객체간의 관계를 다룰 수 있다. 단점 객체들 간의 모든 연관 관계를 집중하기 때문에 규모가 커지고 복잡해질 수 있다. 클래스 다이어그램 학원에서 작성한 중..
-
정리쥬신게임아카데미/궁금했던것 2016. 1. 16. 01:20
STL안에 실체냐 포인터냐 이건 얕은복사를 생각하면된다 만약 내부에 멤버가 포인터인게 있다면 (내부에서 new하면) 이건 100프로 포인터를 넣어라 아니라면 실체를 넣는게 속도나 처리면서 좋음(소멸 delete를 따로 할 필요가 없음) 나눗셈은 겁나 느리다 쉬프트써라 멤버변수로 포인터있다면 이니셜라이저에 생성자에서 0넣어줘라 그래야지 초기화되지 않은 포인터 접근시 에러발생 백터사용시 erase pop_front사용시 가리키는 포인터 주의! 반드시 헤더에서 포함이 발생하는것이 상속의 단점이다(상속받기위해선 부모헤더포함한것) 시컨스전이에서 부모는 자식의 시컨스를 타이틀이라고하면 타이틀 new하고 게임이면 게임을 new 하는 일대일 대응방식임..부모에서 전부 switch로 하는게 이님 일일이..확인생성 등등...
-
상속시 부모 private 변수,복사생성자, 깊/얕 복사, 전역변수, 포인터 레퍼런스?, 함수호출규약?쥬신게임아카데미/C++ 2016. 1. 7. 13:19
//------------------------시작----------------------------// ////복사생성자 호출모양 ////1. CObj obj(10); ////CObj obj2(obj); //기본적인 ****복사생성자**** 발생 // ////2. 함수 호출시 ****매개변수에 객체를 값에 의해 전달****될때 //void Render(CObj obj) //여기서 CObj obj는 값에의해 전달되는 매개변수이니.. ****복사생성자**** 발생.. ////3. 함수 내에서 ****객체를 값에 의해 리턴****할떄 //CObj Func() //{ // CObj obj(10); // return obj; //obj가 반환값이 CObj값이기 때문에 ****복사생성자**** 발생 //} //C..
-
싱글싱글턴쥬신게임아카데미/궁금했던것 2016. 1. 6. 17:40
http://chfhrqnfrhc.tistory.com/entry/%EC%A0%84%EC%97%AD%EB%B3%80%EC%88%98%EC%99%80-%EC%A0%84%EC%A0%81%EB%B3%80%EC%88%98 https://kldp.org/node/121931 말그댈 싱글은..하나 턴은 인스턴스가 만들어지는것.. 싱글턴 패턴은 해당 클래스의 인스턴스가 하나만 만들어진다. - 어디서든지 그 인스턴스에 접근할 수 있도록 한다. - 클래스에서 자신의 단 하나 뿐인 인스턴스를 관리하도록 만들면 된다. 어떠한 객체가 꼭 하나만 있어야 되는 경우 싱글톤으로 정의한 클래스 템플릿을 상속 받도록 한다. 도대체 왜 쓸까? 흔히 관리하는 프로그램에서 많이 쓰인다고 한다. 어느 블로그에서 "서점에서 관리자가 책들을 관..