안드로이드/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 알 수 없는 사용자

 

하노이의 탑

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

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

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

 

문제

다음 규칙을 지키며 막대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 알 수 없는 사용자

순환(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 알 수 없는 사용자