본문 바로가기
반응형

분류 전체보기361

c++ 클래스(class) 2 ●정보은닉- 객체 외부에서 객체 내의 멤버변수에 직접 접근하는 것을 허용하지 않고 객체 내의 변수는 private로 선언하고 여기에 접근하는 멤버함수를 public로 선언하는 기법을 정보은닉이라고 한다. - 아래 코드에서처럼 멤버변수는 private로 선언하고 private로 선언한 변수에 접근하는 멤버함수를 선언한다. - 일반적으로 멤버변수에 데이터를 입력하는 함수는 setter함수, 데이터를 가져오는 함수를 getter함수라고 한다.ex) ●캡슐화- 연관있는 데이터와 함수를 하나의 클래스로 만드는 것이다. - 사용,수정,삭제 등 유지보수의 편의를 위해 하나의 클래스로 만든다. - 개념은 간단하지만 캡슐화를 잘 하려면 많은 경험과 객체지향에 대한 이해,공부가 필요하다. ●생성자- 객체 생성과 동시에 초.. 2013. 6. 17.
c++ 클래스(class) 1 ●클래스=멤버 변수 + 멤벼함수 ●클래스를 이용해서 만든 변수를 객체(Object)라고 한다. 객체를 만드는 것을 객체화 또는 인스턴스화라고 표현한다. ●접근 제어- public - 클래스 외부에서도 접근 가능하다. - private - 클래스 내부에서만 접근 가능하다. 클래스 내부에서 따로 접근 제어를 선언하지 않으면 default로 private으로 인식한다.ex)calss Abc{private: int a;public: setter(int k){ a = k; }}; ●일반적으로 클래스를 만들때 클래스, 변수, 함수 선언은 헤더파일에 하고 멤버 함수 정의는 cpp파일에 구현한다.ex)Abc.h#includeclass Abc{void a();void b();}; Abc.cpp#include "Abc.h.. 2013. 6. 16.
c++ 레퍼런스(Reference) ●레퍼런스(Reference)- 'int &a' 처럼 &를 사용해서 변수를 생성는 것이 레퍼런스이다.('&'는 사용되는 위치에 따라 주소값을 반환 할수도 있고 레퍼런스를 선언할때 사용할 수도 있다.) - 변수는 메모리 공간에 할당된 이름을 의미한다. 레퍼런스는 이름 있는 메모리 공간에 하나의 이름을 더 붙여주는 것이다. - 레퍼런스와 변수는 생성되는 방법만 다르고 일단 생성되고 나면 동일한 것이다. - 아래 두 함수는 동일한 의미를 지닌다ex)int function(){ int a; int &b=a; return a;} int function(){ int a; int &b=a; return b;} ●레퍼런스 선언- 변수는 새로운 메모리 공간에 이름을 부여하지만 레퍼런스는 반드시 이미 이름을 지니고 있는 .. 2013. 6. 13.
c++ 네임스페이스(namespace) ●namespace- 특정영역를 지정하고 이름을 붙여준 것이다.- 서로 다른 부분에서 똑같은 함수 이름이 선언되어서 에러가 나는 것을 막아준다. ●using- namespace안의 함수를 사용할때마다 namespace::function 을 쓰면 불편하다.- using을 사용해서 namespace를 선언하면 일일히 namespace:: 를 쓰지않아도 된다. 2013. 6. 12.
c++ 매크로 함수, 인라인(inline) 함수 ●매크로 함수- 함수 호출 문장이 함수 몸체 부분으로 치환된다.- 전처리기에서 처리하기 때문에 속도가 빠르다.- 복잡한 연산보다는 간단한 연산을 사용할 때 좋다.ex)#define AAA(x, y) ((x)*(y)) ●inline 함수- 일반적인 함수를 정의하는 과정에서 앞에 'inline'를 붙여주면 된다.- inline함수는 컴파일러에 의해 처리된다.- 호출 스택을 생략해서 속도가 빨라지지만, 코드가 길어질 경우 속도가 느려질 수도 있다.- 컴파일러에 따라 inline이 성능 향상에 해가 된다고 판단하면 inline을 무시하고 일반적인 처리를 할 수도 있다. 2013. 6. 12.
c++ 디폴트 매개 변수 ●디폴트 매개 변수- 매개 변수를 선언할때 값을 설정하는 것이다. 함수를 호출할 때 매개 변수 인자로 아무것도 입력하지 않으면 디폴트 매개변수로 선언한 값을 인자로 간주한다.ex) int function(int a = 1) {~~} ●디폴트 매개 변수와 함수와 매개 변수가 없는 함수 동시 선언은 안된다. 2013. 6. 12.
c++ 함수 오버로딩 ●함수 오버로딩- 함수 이름이 같고 매개변수의 타입, 개수가 다른 함수를 정의한다.단, 함수이름이 같고 매개변수의 타입, 개수도 같고 함수의 리턴타입만 다른 함수의 선언은 허용되지 않는다. ●함수 이름이 같고, 리턴타입이 같지만 매개변수의 타입,개수가 다름 ●함수 이름은 같지만, 리턴타입과 매개변수 타입,개수가 다름 ●아래와 같이 함수 이름,매개변수의 타입,개수가 같고 리턴타입만 다를 경우 오버로딩이 되지 않고 에러가 발생한다. 2013. 6. 11.
c++ 로드, PDB 파일을 찾거나 열 수 없습니다. ●로드, PDB 파일을 찾거나 열 수 없습니다. - 비주얼C++에서 디버그를 실행하면 이렇게 나오면서 창이 나오고 바로 꺼진다. 'a.exe': 'ImageAtBase0x200000' 로드, 포함/제외 설정으로 로드가 비활성화되었습니다.'a.exe': 'ImageAtBase0x200000' 언로드'a.exe': 'C:\Windows\System32\shunimpl.dll' 로드, PDB 파일을 찾거나 열 수 없습니다.'a.exe': 'C:\Windows\System32\SortWindows6Compat.dll' 로드, PDB 파일을 찾거나 열 수 없습니다.'a.exe': 'C:\Windows\System32\imm32.dll' 로드, PDB 파일을 찾거나 열 수 없습니다.'a.exe': 'C:\Windo.. 2013. 6. 11.
c++ visual c++로 프로젝트 시작하기 2013. 6. 11.
cocos2d-x TestCpp 예제로 공부하기 ●좌측 솔루션 탐색기에서 TestCpp을 디버그하면 cocos2d-x에 관한 여러가지 예제를 실행시켜 볼 수 있다. 2013. 6. 9.
cocos2d-x 게임 중 일시정지하고 팝업창 띄우기(pause, resume) ●게임 중 화면을 정지 버튼을 누르면 일시정지하고 팝업창을 띄운다. 팝업창에서 버튼은 누르면 다시 게임 화면으로 돌아간다. 팝업창을 띄우고 게임상의 액션,스케줄을 멈추고 재시작하기 위해 " CCDirector::sharedDirector()->pause(); " 을 사용하고 정지버튼터치를 비활성하기 위해 "CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(pMenu, kCCMenuHandlerPriority,true); "를 사용한다. 팝업창이 열렸을때, 닫혔을때 구분해서 함수를 실행하기 위해 노티피케이션(Notification)을 이용한다. 노티피케이션은 클래스사이에서 메시지를 주고 받고 하는 싱클톤 객체이다. ●예제- He.. 2013. 6. 9.
cocos2d-x sprintf이용해서 점수 표시 ●sprintf- 메모리에 출력한다.- sprintf(문자배열명, "출력문자와 자료형(ex.%d)", 입력 데이터); ●예제- HelloWorldScene.cpp #include "HelloWorldScene.h" using namespace cocos2d; CCScene* HelloWorld::scene(){ CCScene *scene = CCScene::create(); HelloWorld *layer = HelloWorld::create(); scene->addChild(layer); return scene;} bool HelloWorld::init(){ if ( !CCLayerColor::initWithColor(ccc4(255, 255, 255, 255)) ) { return false; }//.. 2013. 6. 9.
cocos2d-x 간단한 액션 게임 예제3 ●StageIdx.h #ifndef __StageIdx__H__#define __StageIdx__H__ #include "cocos2d.h"//싱글톤 클래스using namespace cocos2d; class StageIdx : public cocos2d::CCLayer{public:static StageIdx *getInstance();void setStage2true();bool getStage2Bool(); private:StageIdx();~StageIdx();}; #endif // __StageIdx__H__ ●StageIdx.cpp #include "StageIdx.h" StageIdx::StageIdx(void){CCUserDefault::sharedUserDefault()->setBoo.. 2013. 6. 9.
cocos2d-x 간단한 액션 게임 예제2 ●AppDelegate.h #ifndef __APP_DELEGATE_H__#define __APP_DELEGATE_H__ #include "cocos2d.h" class AppDelegate : private cocos2d::CCApplication{public: AppDelegate(); virtual ~AppDelegate(); virtual bool applicationDidFinishLaunching(); virtual void applicationDidEnterBackground(); virtual void applicationWillEnterForeground();}; #endif // __APP_DELEGATE_H__ ●AppDelegate.cpp #include "cocos2d.h"#inc.. 2013. 6. 9.
cocos2d-x 간단한 액션 게임 예제1 ●터치하면 캐릭터가 점프하고 장애물을 피하는 게임이다. 장애물에 충돌하면 패배화면으로 넘어간다. 코인에 충돌하면 스코어가 오른다. ●구조 ●파일, 리소스 목록 ●파일 목록 - AppDelegate - LoadingLayer - 로딩 화면 - MainMenuLayer - 메인 메뉴 화면 - StageSelect - 스테이지 선택 화면 - Stage1Layer - 스테이지1 - Stage2Layer - 스테이지2 - StageIdx - 스테이지1을 깨야 스테이지2가 선택되도록 처리하기 위한 싱글톤 클래스를 구현 - WinLayer - 승리화면 - LoseLayer - 패배화면 ●동영상 2013. 6. 8.
cocos2d-x error 처리되지 않은 예외가 있습니다. 엑세스 위반이 발생했습니다 ●처리되지 않은 예외가 있습니다. 엑세스 위반이 발생했습니다 - 에러- 메모리 할당이 안 되어 있거나 할당된 수치를 넘어서 데이터가 저장되었을 때 나타난다. 2013. 6. 6.
cocos2d-x warning error C2360 ●error2360- switch문에서 나타난 에러이다. 에러를 해결하려면 switch문 case에 {} 을 사용한다. ex)switch(a){case 1: { ~~~ }case 2: { ~~~ }} 2013. 6. 3.
cocos2d-x 패럴렉스노드(ParallaxNode) ●두개이상의 배경 이미지 패럴랙스노드에 추가 - HelloWorldScene.cpp #include "HelloWorldScene.h" using namespace cocos2d; CCScene* HelloWorld::scene(){ CCScene *scene = CCScene::create(); HelloWorld *layer = HelloWorld::create(); scene->addChild(layer); return scene;} bool HelloWorld::init(){ if ( !CCLayerColor::initWithColor(ccc4(255, 255, 255, 255)) ) { return false; } ///////////////////////////////배경 스프라이트1CCSpr.. 2013. 6. 2.
cocos2d-x CCUserDefault ●CCUserDefault- 환경설정이나 점수등을 저장하는 등 데이터를 저장할 때 사용한다.ios의 NSUserDefault, 안드로이드의 SharedPreferences와 비슷하다. ●String형 저장, 불러오기- 저장CCUserDefault::sharedUserDefault()->setStringForKey("string", "aa"); //(이름, 값) - 불러오기std::string s = CCUserDefault::sharedUserDefault()->getStringForKey("string"); ●Interger형 저장, 불러오기- 저장CCUserDefault::sharedUserDefault()->setIntegerForKey("integer", 1); - 불러오기int i = CCUse.. 2013. 6. 1.
cocos2d-x 스케줄 ●스케줄- 특정시간마다 특정함수를 호출한다.- 정지(pause), 재시작(resume), 스테이지로 들어가면 타이머 활성화 등을 사용하게 해준다. ●예제- HelloWorldScene.h #ifndef __HELLOWORLD_SCENE_H__#define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" class HelloWorld : public cocos2d::CCLayerColor{public: virtual bool init(); static cocos2d::CCScene* scene(); CREATE_FUNC(HelloWorld);void doStart(CCObject* pSender);void doPause(CCObject* pSender);void doResum.. 2013. 6. 1.
cocos2d-x 터치(Touch) ●스탠다드 터치 델리게이트 예제 - HelloWorldScene.h #ifndef __HELLOWORLD_SCENE_H__#define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" class HelloWorld : public cocos2d::CCLayerColor{public: virtual bool init(); static cocos2d::CCScene* scene(); CREATE_FUNC(HelloWorld);virtual void ccTouchesBegan(cocos2d::CCSet *pTouches, cocos2d::CCEvent* event);virtual void ccTouchesMoved(cocos2d::CCSet *pTouches, cocos2d::C.. 2013. 6. 1.
cocos2d-x 심플오디오엔진(SimpleAudioEngine) ●심플오디오엔진을 사용하려면 프로젝트 종속성 설정에서 libCocosDeshion을 선택해준다. ●효과음 내기- SimpleAudioEngine::sharedEngine()->playEffect("effect.wav"); ●효과음 미리 로딩 - 용량이 큰 파일을 재생하는데 시간이 걸리기 때문에 미리 메모리에 준비시킨다.- SimpleAudioEngine::sharedEngine()->preloadEffect("effect.wav"); ●효과음 메모리 해제- SimpleAudioEngine::sharedEngine()->unloadeffect(EFFECT_FILE); ●배경음 내기- SimpleAudioEngine::sharedEngine()->playBackgroundMusic("background.mp.. 2013. 5. 31.
cocos2d-x 애니메이션 ●그림 파일을 입출력 할때 시스템 비용이 많이 든다. 그래서 여러개의 그림파일을 하나의 파일(plist)로 만들어서 불러들이고 plist에서 필요한 그림파일을 불러들이는게 좋다. 개별 스프라이트를 불러들이는 것보다 plist를 통해 불러들이면 리소스 관리가 쉽고 편하다. ●스프라이트 배치 노드를 이용한 애니메이션 - HelloWorld.cpp #include "HelloWorldScene.h" using namespace cocos2d; CCScene* HelloWorld::scene(){ CCScene *scene = CCScene::create(); HelloWorld *layer = HelloWorld::create(); scene->addChild(layer); return scene;} bool.. 2013. 5. 31.
cocos2d-x 트랜지션(Transition) 추가,삭제,교체 ●장면 추가,삭제,교체 - HelloWorldScene.h #ifndef __HELLOWORLD_SCENE_H__#define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" #include "Box2D/Box2D.h" #include "SimpleAudioEngine.h" class HelloWorld : public cocos2d::CCLayerColor{public: virtual bool init(); static cocos2d::CCScene* scene(); CREATE_FUNC(HelloWorld);void doPushScene(CCObject* pSender);void doReplaceScene(CCObject* pSender);}; #endif // __HE.. 2013. 5. 30.
cocos2d-x 액션3 ●이즈 액션(Ease Action)- 전체 액션시간은 수정하지 않고 내부의 액션 속도를 조절한다. CCEaseIn - 액션의 끝이 빨라진다.CCEaseOut - 액션의 처음이 빨라졌다가 끝이 느려진다.CCEaseInOut - 액션의 처음이 느렸다가 중간에 빨라지고 끝에서 느려진다. void HelloWorld::doAction(CCObject* pSender) {//액션 정의CCActionInterval* move=CCMoveBy::create(2,ccp(100,0)); //빨라지기CCActionInterval* move_ease_in=CCEaseIn::create(move, 2);//느려지기CCActionInterval* move_ease_out=CCEaseOut::create(move, 2);//빨라.. 2013. 5. 29.
cocos2d-x 액션2 ●CCSequence- 액션의 순서를 정하고 순차적으로 실행한다. void HelloWorld::doAction(CCObject* pSender){//액션 정의CCActionInterval* action1=CCMoveTo::create(2,ccp(100,200));CCActionInterval* action2=CCRotateBy::create(2,90);CCActionInterval* action3=CCScaleTo::create(2, 2.0); CCFiniteTimeAction* seq=CCSequence::create(action1, action2, action3, NULL); pMan->runAction(seq);} ●CCSpawn- 등록된 모든 액션을 동시에 시행한다. void HelloWorld.. 2013. 5. 28.
cocos2d-x 액션1 ●액션- 많은 액션은 By와 To로 나뉘는데 By는 지정한 값만큼 변하는 것이고, To는 지정한 값으로 변하는 것이다.- 위치관련 - CCMoveBy, CCMoveTo, CCJumpBy, CCJumpTo, CCBezierBy, CCBezierTo, CCPlace- 크기관련 - CCScaleBy, CCScaleTo- 회전관련 - CCRotateBy, CCRotateTo- 가시성 - CCShow, CCHide, CCBlink, CCToggleVisibility- 투명도 - CCFadeIn, CCFadeOut, CCFadeTo- 색관련 - CCTintBy, CCTintTo ●액션 기본 예제 - HelloWorldScene.cpp의 doAction함수안에 여러가지 액션 함수를 넣어 액션 예제를 확인한다. - H.. 2013. 5. 28.
c++ 폴더안에 있는 헤더파일 include ●c++헤더파일 추가- 폴더안에 있는 헤더파일 include 할때 폴더이름까지 써야함ex)include "aaa/aaa/a.h" 2013. 5. 26.
포토샵 그림 파일 배경 투명하게 만들기 ●포토샵 그림 파일 배경 투명하게 만들기 1. 그림파일을 불러온다. 2. 레이어 패널에서 우측 자물쇠모양 아이콘을 더블클릭하고 ok를 누른다. 3. 마술봉 툴을 선택하고 흰 배경을 클릭한다. 4. delete 키를 눌러 배경을 삭제한다. . 2013. 5. 18.
일러스트레이터 패스 자르기, 기준점 정렬하기 ●지우개 툴로 패스 자르기 - 지우개 툴을 선택한다.' ]', '[' 를 누르면 마우스 포인터 원모양이 커지거나 작아진다. 원하는 크기로 바군후 오브젝트를 클릭하면 클릭한대로 지워진다. - 오브젝트를 가로질러 드래그하면 오브젝트가 닫힌 패스로 잘린다. ●가위 툴로 자르기 - 가위 툴을 선택하고 오브젝트위에 마우스 포인터를 갖다대고 클릭하면 기준점이 추가된다. 직접 선택 툴로 드래그하면 패스가 끊어져 옮겨진다. ●칼 툴로 패스 자르기 - 칼 툴을 선택하고 오브젝트를 가로질러 드래그한다. ●기준점 정렬하기 - 직접 선택 툴로 기준점 2개를 선택하고 상단메뉴 Object->Path->Average 를 선택한 후 ok를 누르면 정렬된다. - Horizontal은 가로 일직선, Vertical은 세로 일직선, B.. 2013. 5. 11.
반응형