안드로이드/cocos2d-x2016. 1. 16. 23:56

프로젝트 생성하기

 http://gharlic.tistory.com/21 

위 게시물을 참고해 프로젝트를 생성한다.

 윈도우키 + R -> cmd 실행 -> cd C:\CocosProject 입력

cocos new [프로젝트 이름] -p com.[패키지 이름].[프로젝트 이름] -l cpp를 입력

ex) cocos new puzzleTest -p com.puzzleTest.puzzleTest -l cpp

 

 

 

 

프로젝트 실행하기

 프로젝트 폴더\project\puzzleTest\proj.win32 디렉토리에서 puzzleTest.sln파일을 실행하여

Visual Studio 2013에서 개발을 시작할 준비를 한다.

 

 

 

 

가로모드 / 세로모드 설정하기

 프로젝트 폴더\proj.android\AndroidManifest.xml파일을 실행한다. (메모장 등등으로)

위 사진의 밑 줄 친 부분의 android:screenOrientation= 을 아래 값으로 수정한다. 여기선 세로모드를 선택한다.

 가로모드 : "Landscape"

 세로모드 : "Portrait"

 

 

 

 

 

다양한 해상도 지원

 Visual Studio에서 AppDelegate.cpp를 편집한다.

bool AppDelegate::applicationDidFinishLaunching()함수에 다음 내용을 추가한다.

1
2
3
4
    // 다양한 해상도 지원
    Size winSize = Director::sharedDirector()->getWinSize();
    glview->setFrameSize(winSize.width, winSize.height);
    glview->setDesignResolutionSize(DESIGN_WIDTH, DESIGN_HEIGHT, kResolutionShowAll);
cs

getWinSize() 함수는 현재 디바이스의 해상도를 받아오는 역할

setDesignResolutionSize() 함수에 내가 디자인한 해상도를 입력한다.

 

 

 

 

공통 선언 파일

 위의 코드를 보면 DESIGN_WIDTH와 DESIGN_HEIGHT가 있는데 이 것은 cocos2D에서 지원하는 전처리가 아니다.

보다 간편한 개발을 위해서 프로젝트 이름\Classes폴더에 Common.h 파일을 생성하고

이 파일에 앞으로 자주 등장하는 상수를 미리 설정해두는 것이다.

1
2
3
4
5
6
7
8
9
10
#ifndef PuzzleTest_Common
#define PuzzleTest_Common
#include "cocos2d.h"
 
USING_NS_CC;
 
#define DESIGN_WIDTH    1080.0f
#define DESIGN_HEIGHT    1920.0f
 
#endif
cs

앞으로 이 파일에 내용을 계속 추가해 나갈 것이다.

 

HellowWorldScene 말고 내가 만든 Scene출력하기

AppDelegate.cpp파일의 bool AppDelegate::applicationDidFinishLaunching() 함수를 보면

1
2
    // create a scene. it's an autorelease object
    auto scene = HellowWorldScene::createScene();
cs

위 와 같은 코드를 찾을 수 있다.

 

솔루션 탐색기의 HellowWorldScene.cpp와 HellowWorldScene.h파일에 있는 createScene() 함수를 호출하여

Scene을 생성하는 것이다.

이 부분을 다음과 같이 변경한다.

1
2
    // create a scene. it's an autorelease object
    auto scene = CGameLayer::createScene();
cs

 

그 다음 프로젝트 우 클릭 -> 추가 -> 클래스에서 CGameLayer파일을 생성한다.

 

CGameLayer.h

1
2
3
4
5
6
7
8
9
10
11
12
13
#ifndef PuzzleGame_GameLayer
#define PuzzleGame_GameLayer
 
#include "Common.h"
 
class CGameLayer : public cocos2d::Layer {
public:
    static cocos2d::Scene* createScene();
 
    virtual bool init();
 
    CREATE_FUNC(CGameLayer);
#endif
cs

 

CGameLayer.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "GameLayer.h"
#include "GameObject.h"
#include <stdio.h>
#include <string.h>
 
USING_NS_CC;
 
cocos2d::Scene* CGameLayer::createScene() {
    //cocos2d::Scene* pScene = cocos2d::Scene::create();
    //CGameLayer* pLayer = CGameLayer::create();
 
    auto pScene = Scene::create();
    auto pLayer = CGameLayer::create();
 
    pScene->addChild(pLayer);
 
    return pScene;
}
 
bool CGameLayer::init() {
    if (!Layer::init()) { return false; }
 
    // 배경 이미지 출력
    cocos2d::Sprite* pBackgroundSprite = cocos2d::Sprite::create("background.png");
    pBackgroundSprite->setPosition(cocos2d::CCPointZero);
    pBackgroundSprite->setAnchorPoint(ccp((float)0, (float)0));
    addChild(pBackgroundSprite);
 
    return true;
}
cs

위 소스는 기본적인 틀이다.

CGameLayer.cpp 파일의 24행의 background.png를 출력하는 기능만 추가하였다.

 

 

팁 - 문법이 책이랑 조금 다른데?

 참고서적이나 기타 블로그 등의 여러 소스를 보면 문법이 서로 다른 것을 알 수 있는데

구버전에서 CCSprite이던 것이 Sprite로 바뀐 것 등이다.

Ctrl+Space키를 누르면 지원되는 메소드를 볼 수 있는데

여기서 비슷한 키워드를 찾아서 사용하면 된다.

 

 

 

다음 게시물에서 이 프로젝트에서 사용할 리소스를 준비하는 과정을 다루겠다.

Posted by gharlic
안드로이드/cocos2d-x2016. 1. 16. 22:52

 

 

 

 

간단히 얘기해서

 프렌즈팝을 만들 것이다.

아이템, 특수블록 기타 등등은 덜어내고 기본적인 기능만 만들어볼 예정이다.

 

 

 

개발환경

 Window7

 cocos2D-x 3.2

 ndk r9d

 Visual Studio 2013

 Eclipse (java8)

 

 

 

참고서적

 

http://book.naver.com/bookdb/book_detail.nhn?bid=7307932

책에서는 cocos2D-x 2.0.4버전을 사용해서 문법이 현재와 상당히 다른 부분이 있다.

책의 예제는 육각형 퍼즐게임이 아닌 사각형 퍼즐게임이기 때문에

이 글과 상이한 부분이 있음을 알림

 

참고로

 Cocos2d-x를 처음 배우는 과정에서 포스팅하는 글이다.

중간에 코드가 계속 바뀔 수 있다.

Posted by gharlic
안드로이드/cocos2d-x2016. 1. 16. 22:27

프로젝트 생성

 먼저 Python 2.7이 설치되어 있어야 한다.

 다음으로 프로젝트를 생성할 workspace를  생성한다. 그냥 폴더를 만들라는 얘기다.

 ex) C:\CocosProject

 

 윈도우키 + R -> cmd 실행 -> cd C:\CocosProject 입력

이 상태에서 cocos new -h를 입력하면 프로젝트 생성에 대한 도움말이 출력된다.

 

cocos new [프로젝트 이름] -p com.[패키지 이름].[프로젝트 이름] -l cpp를 입력

ex) cocos new puzzleTest -p com.puzzleTest.puzzleTest -l cpp

 

 

 

 

프로젝트 설명

프로젝트 생성에 성공했다면 다음과 같이 폴더가 생성된다.

1. Classes폴더 : Visual studio에서 개발할 때 사용되는 .cpp와 .h 파일의 디렉토리를 이 폴더로 생성해야 한다.

2. proj.android  : C++로 개발된 프로젝트를 이클립스를 통해 android로 빌드할 때 사용된다.

3. proj_win32    : C++ 프로젝트가 위치해있다. 프로젝트이름.sln파일을 열어 개발을 시작한다.

4. Resources   : Visual studio에서 사용할 이미지파일 등 리소스를 이 폴더에 위치시켜야 한다.

 

 

 

 

Visual Studio

 Visual Studio는 2013버전 이상을 사용해야 한다.

안드로이드로 빌드하기 전 window용으로 미리 제작하여 테스트할 수 있다.

 

 

 

 

Eclipse

 Android SDK를 설치했다면 아마 이클립스에도 Android가 연동되었을 텐데 만약 안되었다면

상단메뉴 Help -> Install New Software -> add

 -> Name : 아무거나 입력 -> Location : http://dl-ssl.google.com/android/eclipse/ 입력한다.

 

cocos2D-x 라이브러리를 불러오도록 하겠다.

상단메뉴 File -> Import -> General -> Existing Prohects into Workspace 선택

Select root directory : Cocos2d-x 설치폴더\cocos\platform\android\java 선택

Option -> Copy prohects into workspace 체크 -> Finish

 

이제 게임 프로젝트를 불러오도록 하겠다.

상단메뉴 File -> Import -> General -> Existing Prohects into Workspace 선택

Select root directory : 프로젝트 폴더\proj.android 선택

Option -> Copy prohects into workspace 체크 해제 -> Finish

패키지 탐색기 -> 프로젝트 우 클릭 -> Properties -> Android탭 선택

Prohect Build Target -> Android 2.3.3 선택

Library -> 기존 라이브러리 Remove -> add -> libcocos2dx 선택

 

확인할 것

프로젝트 폴더\proj.android\src\org\cocos2dx에 lib폴더가 없다면

cocos2d-x폴더\cocos\platform\android\java\src\org\cocos2dx에 있는 lin폴더를 복사한다.

cocos2d-x폴더\templates\cpp-template-default\proj.android\src\org\cocos2dx에도 복사하면

다음 부터는 자동으로 생길 것 이다.

 

 

 

 

이제 실행해보기

컴퓨터에 usb케이블로 안드로이드 휴대폰을 연결 -> Ctrl+B를 눌러 빌드

 -> 프로젝트 우 클릭 -> Run As -> Android Application 선택

 

 

 

 

버전에 따라 다른 점

 구 버전에서는 한글 깨짐, 빌드 시 Cygwin 설치 필요, Cpp파일 자동 등록 등 처음 설정해줄 것이 많았는데

 3.x 버전부터는 자동으로 되는 모양이다.

 일단 없이 해보고 문제가 있으면 그 때 검색해서 해결한다.

Posted by gharlic