안드로이드/cocos2d-x2016. 1. 16. 21:46

개발환경

 Windows7 64bit

 Visual Studio 2013

 Cocos2D-x 3.2

 Python 2.7.8

 Eclipse (java 8)

 

개발환경 설치 

 환경변수 설정을 쉽게 하기 위해 모든 프로그램을 같은 폴더에 설치한다.

 ex) C:\COCOS 폴더를 생성

 

 Cocos2D-x3.2

 http://www.cocos2d-x.org/filedown/cocos2d-x-3.2.zip

 

 Ant 1.9.4

 http://apache.tt.co.kr//ant/binaries/apache-ant-1.9.4-bin.zip

 

 NDK r9d

 32bit http://dl.google.com/android/ndk/android-ndk-r9d-windows-x86.zip

 64bit http://dl.google.com/android/ndk/android-ndk-r9d-windows-x86_64.zip

 

 ADT ( Android SDK )

 http://dl.google.com/android/installer_r24.4.1-windows.exe

 안드로이드 버전은 2.3.3을 타겟으로 한다.

 

 ※ Cocos2D-x와 NDK는 각 버전 별로 문법이 상이하기 때문에 http://stackoverflow.com/를 애용 해야한다.

 무언가 안된다고 상심할 필요는 없다.

 

환경변수 설정

 내 컴퓨터 우 클릭 -> 속성 -> 고급 시스템 설정 -> 환경 변수 -> 새로 만들기

 

변수 이름 : ANDROID_SDK_ROOT

변수 값    : C:\:COCOS\SDK폴더

 

변수 이름 : ANDROID_HOME

변수 값    : C:\:COCOS\SDK폴더

 

변수 이름 : NDK_ROOT

변수 값    : C:\:COCOS\NDK폴더

 

변수 이름 : ANT_ROOT

변수 값    : C:\:COCOS\ANT폴더

 

Cocos2D-x 설치

 윈도우키+R -> cmd 실행 -> cd C:\Cocos\Cocos2D-x-3.2 입력

 -> download-deps.py 입력 -> setup.py 입력

 

 

 

설치 완료

 다음 게시물에서 프로젝트 생성과 빌드 테스트를 하겠다.

 

 

Posted by gharlic

 

하노이의 탑

 알고리즘 예제에서 단골 문제이다. 그만큼 머리를 많이써야하는 알고리즘 중 하나이다.

하노이의 탑 문제를 해결하는 프로그램을 작성할 때 알고리즘을 짜기 위해 머리를 쥐어짤 필요는 없다.

검색창에 하노이의 탑이라고 검색하면 기본적인 규칙과 풀이순서가 제공된다.

 

문제

다음 규칙을 지키며 막대A에 쌓여있는 원판 b개를 막대C로 옮기는 것이다.

1. 한 번에 하나의 원판만 이동할 수 있다.

2. 맨 위에 있는 원판만 이동할 수 있다.

3. 크기가 작은 원판 위 에 큰 원판이 쌓일 수 없다.

4. 중간의 막대를 임시적으로 이용할 수 있으나 앞의 조건들을 지켜야한다. 

 

다음 사진은 이해를 돕기위한 원판이 3개일 때의 풀이 과정이다.

 

위 사진을 분석하여 알고리즘을 도출할 수있다.

막대A에서 C로 모두 옮기기 위해 B를 임시 버퍼로 사용한다.

n-1개의 원판을 A에서 B로 임시로 옮긴다.

n번쨰 원판(재일 큰 원판)을 A에서 C로 옮긴다.

n-1개의 원판을 B에서 C로 옮긴다.

 

그럼 어떻게 n-1개의 원판을 옮기느냐?

재귀호출을 통해 해결한다.

현재 작성중인 함수의 파라미터를 n-1로 바꾸어 순환호출하면 된다.

 

소스

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
void hanoi_tower(int n, char from, char tmp, char to) {
   if( n==1 ) printf("원판 1을 %c 에서 %c으로 옮긴다.\n",from,to);
   else {
      hanoi_tower(n-1, from, to, tmp);
      printf("원판 %d을 %c에서 %c으로 옮긴다.\n",n, from, to);
      hanoi_tower(n-1, tmp, from, to);
   }
}
 
main() {
hanoi_tower(4, 'A', 'B', 'C');
}
cs

원판의 이동 과정을 printf문으로 출력하는 소스이다.

필요에 따라 파라미터를 그래픽으로 활용하던

횟수를 카운트하여 몇번 움직여야하는지를 계산하던

본인 능력껏 활용하라. 

'프로그래밍 > 알고리즘' 카테고리의 다른 글

순환(재귀)과 반복  (0) 2015.07.11
순차(절차)지향과 객체지향 프로그래밍  (0) 2015.07.11
Posted by gharlic

순환(recursion)이란

 알고리즘이나 함수가 자기 자신을 다시 호출하여 문제를 해결하는 기법이다.

문제 정의 자체가 순환적으로 되어 있는 경우에 적합하다.

예) 팩토리얼, 피보나치 수열, 하노이의 탑, 이진탐색 등

 

반복이란

 for문, while문등 흔히 쓰는 반복문을 통한 알고리즘이다.

순환에 비해 수행속도가 빠르지만 순환적인 문제는 알고리즘이 매우 복잡해질 수 있다.

수행속도가 빠르다고 문제해결 속도가 빠른 것은 아니다.

순환으로 10번만에 할 계산은 반복으론 10000번을 해야할 수도 있다.

 

예제1 팩토리얼

 순환

1
2
3
4
5
int factorial(int n)
{
if( n <= 1 ) return(1);
else return (n * factorial(n-1) );
}
cs

 반복

1
2
3
4
5
6
7
int factorial_iter(int n)
{
int k, v=1;
for(k=n; k>0; k--)
v = v*k;
return(v);
}
cs

 

 

 

에제2 거듭제곱

 순환

1
2
3
4
5
6
7
double power(double x, int n)
{
if( n==0 ) return 1;
else if ( (n%2)==0 )
return power(x*x, n/2);
else return x*power(x*x, (n-1)/2);
}
cs

 반복

1
2
3
4
5
6
7
8
double slow_power(double x, int n)
{
int i;
double r = 1.0;
for(i=0; i<n; i++)
r = r * x;
return(r);
}
cs

 

 

 

 

'프로그래밍 > 알고리즘' 카테고리의 다른 글

하노이의 탑  (0) 2015.07.11
순차(절차)지향과 객체지향 프로그래밍  (0) 2015.07.11
Posted by gharlic