본문 바로가기
반응형

프로그래밍314

cocos2d-x 기본구조 ●CCNode- CCNode는 cocos2d-x의 최상위 클래스로 cocos2d-x의 모든 클래스는 이 클래스를 상속받는다.- CCNode는 자식노드를 가질수 있다. ●CCDirector- 싱글톤클래스로 하나의 어플리케이션에서 하나의 인스턴스만 존재한다.- 게임의 화면을 장면단위로 구성해서 처리할 수 있는 기능을 제공한다.- 여러 장면들을 뒤로 가게 하거나 앞으로 가도록 하는 클래스이다. ●CCScene, CCLayer- 일반적인 게임의 메인화면, 메뉴화면, 게임화면 등이다.- CCScene은 터치이벤트, accelerometer 입력을 처리할 수 없다.- CCLayer는 터치이벤트, accelerometer 입력을 처리할 수 있다. ●CCSprite- 이미지 파일을 화면에 출력하는 역할을 한다.- 이미.. 2013. 4. 15.
cocos2d-x 윈도우 개발 환경 세팅하기 ●이 블로그에서 cocos2d-x개발하는 환경은 Window7 32bit입니다. ●cocos2d-x - cocos2d-x는 c++을 사용한다. - cocos2d-x로 프로그래밍 할 경우 별도의 수정 없이 하나의 소스로 ios, 안드로이드용 앱을 만들수 있다. 다만 ios용은 최종 컴파일은 맥에서 해야한다. - cocos2d-x 자체가 개발 툴은 아니고 그래픽 프레임워크이기 때문에 개발툴에 설치되어야 한다. 윈도우에서는 Visual Studio, 이클립스 등, 맥에서는 Xcode에 설치해서 사용한다. ●cocos2d-x 개발 환경 세팅하기 - cocos2d-x 다운로드 - http://www.cocos2d-x.org 에서 cocos2d-x를 다운로드한다. - 압축을 풀고 적당한 위치에 압출을 푼 폴더를 둔.. 2013. 4. 15.
안드로이드 상단의 제목표시줄 없애고 전체화면(Full Screan)모드로 표시 ●상단의 제목표시줄을 없애고 전체 화면(Full Screen)모드로 표시하기 - 매인 액티비티의 setContentView() 메서드 위에 설정한다. - 프로그램 제목 표시줄 없애기 requestWindowFeature(Window.FEATURE_NO_TITLE); - 상태표시줄 없애기 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 2013. 1. 1.
안드로이드 에러 E/AndroidRuntime(351): java.lang.IllegalArgumentException: current should be >= start and <= end ●DatePickerDialog 처리할때 생긴 에러입니다. E/AndroidRuntime(351): java.lang.IllegalArgumentException: current should be >= start and 2012. 11. 3.
안드로이드 디데이(dday) 계산 소스2 ●DatecalActivity.java package your.pack; import java.util.Calendar; import android.app.Activity; import android.app.DatePickerDialog; import android.app.Dialog; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.DatePicker; import android.widget.TextView; public class DatecalActivity extends Activity {.. 2012. 10. 31.
안드로이드 디데이(Dday) 계산 소스 ●레이아웃 2012. 10. 30.
안드로이드 계산기 소스2 ● package your.packaga; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class CalculActivity extends Activity implements OnClickListener{ /** Called when the activity is first created. */ double a, b, tmp; //a는 첫번째 숫자, b는 두번째 숫자, c는 중간 계산값 int flag1=0, f.. 2012. 10. 29.
안드로이드 계산기 소스1 ●레이아웃 2012. 10. 29.
유니티(unity) 3D 터레인(Terrain) ●Terrain추가 - 프로젝트탭에서 우클릭->Import Package->Terrain assets 을 선택하고 창이 뜨면 import버튼을 누른다. - 상단 메뉴 Terrain->Create Terrain을 누른다. ●터레인 크기 조절 - 상단 메뉴 Terrain의 Set Resolution메뉴를 누르면 터레인 크기를 조절할 수 있다. ●터레인의 인스펙터를 보면 마치 심시티에서 맵을 만들 때 처럼 나무,지형 등을 추가, 수정, 삭제 등을 할 수 있다. ●스카이박스 설정 - 프로젝트 탭에서 우클릭->Import Package->SkyBox - 상단 메뉴의 Edit->Rending Setting을 누른다. - 아래 사진처럼 SkyBox Meterial 오른쪽 작은 동그라미 버튼을 눌러서 원하는 하늘을 선.. 2012. 8. 30.
유니티(unity) 3D 사운드 출력, 오브젝트에 색,텍스처 넣기 ●사운드 출력 1. 오브젝트를 선택한 후 Component->Audio->Audio Source 를 선택한다. 2. 추가할 음악 파일을 해당 오브젝트 안의 인스펫터의 Audio Source에 있는 Audio Clip에 드래그한다. ●오브젝트에 색 넣기 1. 프로젝트 탭에서 우클릭후 create->Meterial를 누른다. 2. 만든 Meterial 파일을 누른뒤 인스펙터의 Main Color부분을 눌러서 색을 설정한다. 3. 만든 Meterial을 적용할 오브젝트에 드래드한다. ●오브젝트에 텍스처 넣기 1. 적용할 텍스처를 아래 그림처럼 네모안에 드래그한다. 2. 만든 Meterial을 적용할 오브젝트에 드래드한다. 2012. 8. 29.
유니티(unity) 3D 카메라 워킹, 프리팹 ●카메라 워킹 1. 프로젝트탭에서 Import Package->Script를 누른다. 2. Import를 누른다. 3. SmoothFollow를 드래그해서 Main Camera에 끌어놓는다. 4. 카메라가 따라다닐 오브젝트를 메인카메라의 인스펙터안에 있는 Smooth Follow 안의 Target에 드래서해서 놓는다. ●프리팹(Prefab) - 프리탭은 오브젝트의 원본은 따로 저장해두고 오브젝트가 필요할 때마다 원본의 정보를 사용해서 복사본을 만드는 것이다. 오브젝트를 단순 복사하는 것보다 관리도 편하고 컴퓨터에 부담도 덜 준다. ●프리팹 만들기 1. 프로젝트 탭에서 우클릭->create->Prefab을 누른다. 2. 하이어라키에 있는 오브젝트를 프로젝트탭에 만든 Prefab에 드래그한다. 프리팹으로 등.. 2012. 8. 28.
유니티(unity) 3D 키보드 입력으로 오브젝트 움직이기 ●유니티는 오브젝트를 제어하는 키를 Horizontal,Fire 등으로 부른다. Edit->Project Settings->Input에 들어가면 어떤 키가 할당되있는지 확인할 수 있다. ●다음과 같은 스크립트를 만든다. 아래 스크립트는 오브젝트를 wsad로 상하좌우로 움직이게 하는 스크립트이다. move.js #pragma strict var speed=10; function Start () { } function Update () { var move=speed*Time.deltaTime; var ver=Input.GetAxis("Vertical"); var hor=Input.GetAxis("Horizontal"); transform.Translate(Vector3.forward*ver*move); tr.. 2012. 8. 27.
유니티(unity) 3D 리지드바디(Rigid body)로 오브젝트 움직이기 ●리지드 바디(RigidBody) 추가하기 - Plane오브젝트와 Cube오브젝트를 만들고 Cube오브젝트를 클릭한 상태에서 아래 그림처럼 RigidBody를 선택한다. 그리고 나서 ▶(플레이버튼)을 누르면 Cube가 아래로 떨어진다. ●RigidBody란 오브젝트에 물리적인 특성을 부여하는 컴포넌트이다. 외부에서 힘을 주어 이동시키는 오브젝트는 반드시 리지드바디 컴포넌트를 추가해야한다. ● Mass - 질량. 질량이 작을수록 더 빨리 움직이고, 더 멀리 움직인다. Drag - 저항. 이 값이 크면 속도가 떨어진다. Angular Drag - 회원 운동 저항. 이 값이 0이면 한없이 굴러간다. Use Gravity - 중력 사용 여부 Is Kinematic - 관절 운동 처리 여부 Collision De.. 2012. 8. 23.
유니티(unity) 3D 단축키 정리 ●디자인 탭에서의 마우스 버튼 - 왼쪽 버튼 - 게임 오브젝트 선택 - 오른쪽 버튼 - 화면 회원 - 마우스 휠 - 화면 확대/축소 - 휠 드래그 - 화면 이동 - alt+왼쪽버튼 - 화면 회전 - alt+오른쪽버튼 - 줌인/줌아웃 ●File 메뉴 - Ctrl+N - 새 Scene 만들기 - Ctrl+O - Scene 열기 - Ctrl+S - Scene 저장 - Ctrl+Shift+S - 새 이름으로 Scene 저장 - Ctrl+Shift+B - Build 설정 - Ctrl+B - Build+Run - Alt+F4 - 유니티 종료 ●Edit 메뉴 - Ctrl+C/X/Y - 복사/잘라내기/붙여내기 - Ctrl+Z - 실행 취소 - Ctrl+Y - 되돌리기 - Ctrl+D - 오브젝트 복제 - Shift+D.. 2012. 8. 20.
유니티(Unity) 3D 화면 인터페이스2 ●하이어라 키 - 디자인 탭에서 만든 오브젝틀르 계층 구조로 표시하는 곳이다. 하이어라키 상단의 'create'는 'GameObject->Create Other'메뉴와 같은 기능을 한다. 하이어라키에서 오브젝트를 선택한후 'F'키를 누르면 선택한 오브젝트가 디자인 탭의 중앙에 나타난다. ●프로젝트 탭 - 현재의 프로젝트에서 사용하고 있는 각종 리소스를 표시한다. ●인스펙터 - 오브젝트에 대한 세부 정보를 표시하고 변경할 수 있는 곳이다. 2012. 8. 20.
유니티(Unity) 3D 화면 인터페이스1 ●유니티의 기본 화면이다. 아래처럼 나오지 않으면 상단우측의 Layout부분에서 2by3으로 고쳐주면 아래 화면처럼 나온다. ● 1.화면 이동 - alt+마우스 왼쪽 눌러도 같은 기능을 한다. 2.오브젝트 이동 3.오브젝트 회전 4.오브젝트 확대 ● 1. Center - 두개 이상의 오브젝트를 선택했을 때 오브젝트 사이의 중간점이 기준이 되도록 설정한다. Pivot - 두개 이상의 오브젝를 선택했을 때 마지막에 선택한 오브젝트가 기준이 되도록 설정한다. 2. Global - 디자인 탭 전체를 기준으로 하는 글로벌 좌표로 설정한다. Local - 오브젝트를 기준으로 하는 로컬 좌표로 설정한다. ● 1. 디자인 탭에서의 오브젝트를 표시하는 형식을 설정한다. 2. 디자인 탭의 컬러형식을 설정한다. 3. 디자인.. 2012. 8. 20.
안드로이드 옵션 메뉴 만들기 ●옵션메뉴는 메뉴버튼을 눌렀을 때 나타나는 메뉴이다. 안드로이드는 보통 버튼을 '홈버튼,이전버튼,메뉴버튼' 3가지 버튼을 가지고 있다. 화면 하단에 표시할수 잇는 옵션 메뉴 항목은 최대 6개가지이고 6개 초과한 항목은 목록형태로 나타난다. ●이클립스 상단의 Source항목에서 Override/Implement Methods를 선택하고 창이 나타나명 onCreateOptionsMenu와 onOptionsItemSelected()를 선택한다. 이렇게 안하고 그냥 직접 코딩해도 상관없다. ●onCreateOptionsMenu() - 메뉴 항목 추가 menu.add(그룹번호, 메뉴식별번호, 배치순서, 메뉴에 표시할 타이틀); - 아이콘 추가와 단축키 추가 - 선택사항이므로 해도되고 안해도 된다. menu.add.. 2012. 6. 23.
안드로이드 ArrayList ●ArrayList - ArrayList는 링크드 리스트(linked list)라는 자료구조를 이용한 리스트로서 고정된 크기를 갖은 배열과 달리 임의로 데이터의 추가,삭제,변경등이 자유로운 배열 Class이다. - 다음과 같은 형식을 가진다 ArrayList 변수명 = new ArrayList(); -ex) ArrayList a = new ArrayList(); a.add(new Aaa()); //Class를 새로 생성해서 추가 a.add(new Aaa(1,2)); //Class가 파라미터를 받은 경우 int n = a.size(); //ArrayList에 저장된 요소의 개수 a.get(index); //해당 인덱스 위치의 요소 찾기 a.remove(index); //해당 인덱스 위치의 요소 삭제 a.c.. 2012. 6. 23.
안드로이드 비트맵 그림 자르기(slice) ●그림 자르기 - Bitmap.createBitmap()는 사진에서 필요한 부분만 새로운 비트맵으로 만든다. - Bitmap.createBitmap( Bitmap source, int x, int y, int width, int height ) ●이미지 확대, 축소 - Btimap.createScaledBitmap(그림파일, 너비, 높이, true) - imgBack = BitmapFactory.decodeResource(context.getResources(), R.drawable.back); //이미지 불러오기 imgBack = Bitmap.createScaledBitmap(imgBack, width, height, true); //해당 이미지를 width,height만큼 늘려서 imgBack에 저장.. 2012. 6. 22.
안드로이드 뷰(View) 2 ●캐릭터 이미지 불러오기 - 캐릭터로 사용할 이미지는 배경을 투명하게 처리두어야 한다. 먼저 캐릭터 이미지를 res폴더 안에 임의의 폴더 drawable에 저장한다. 이때 리소스로 사용할 파일 이름은 영어 소문자로 써야하고 숫자, 언더바등을 사용하여 작성한다. - 이미지를 저장한 후 소스 코드에서 " Bitmap bitmap = BitmapFactory.decodeResource(리소스, 리소스 id); " 를 이용해서 비트맵을 읽어온다. - 리소스는 " Resources res; res=context.getResources(); "를 사용하여 구한다. - context가 매개변수로 넘오온 경우에는 다음과 같이 간단히 작성할 수 있다. Bitmap bitmap = BitmapFactory.decodeRe.. 2012. 6. 22.
안드로이드 뷰(View) 1 ●사용자 뷰(View) 만들기 - 먼저 멕티비티의 setContentView(R.layout.main)부분을 setContentView(new 뷰클래스이름(this)) 으로 바꿔주면 뷰클래스이름에 해당하는 사용자 뷰가 화면에 표시된다. 사용자뷰는 안드로이드의 layout을 거치지 않고 직접 View에 출력하도록 만든 Class이다. ● 1, MyView안의 전역변수 선언 2. 변수 초기화 영역 3. 실제로 View의 Canvas로 그림을 그리는 영역 - Canvas를 조작하거나 Timer, Handler 등을 이용해서 반복적으로 호출하는 것 등을 다루는 곳이다. ●단말기의 해상도 구하기 - 안드로이드os가 탑재되어 있는 단말기의 해상도가 기기마다 다르기 때문에 ui를 구성할때 단말기 해상도에 맞도록 조절.. 2012. 6. 21.
안드로이드 버튼의 리스너 작성 ●엑티비티(Activity) 영역 1. 전역변수 선언 영역 2. 프로그램 초기화 영역 - onCreate() 메서드는 프로그램이 켜질때 한 번 실행된다. 이 부분은 변수에 초기값을 지정해주고 버튼 등의 컨트롤에 리스너를 연결하는 용도로 쓰인다. 3. 프로그램에서 반복적으로 사용할 영역 - 실제로 작성할 프로그램의 본체이다. 각종 연산과정과 처리결과를 화면에 표시하는 소스코드 등을 여기에 작성한다. ●버튼 리스너 작성 기본 1. 리스너 할당 2. 리스너 본체 ●예제 - EditText에 어떤 값을 입력한후 '확인' Button을 누르면 그 값이 TextView에 표시되는 예제 2012. 6. 20.
자바 난수 발생하기 ●random()함수나 Random 클래스를 이용해서 만든다. Random 클래스를 사용하는 경우, import java.util.*을 선언해줘야한다. ●double ran=Math.random(); //0< ran 2012. 6. 20.
변수명과 메서드명 작성 규칙 ●자기가 만든 프로그램이라도 몇 주만 지나면 다 까먹는다. 딱 정해진 규칙은 없지만 가독성과 프로그램 흐름을 기억 위해 될수 있으면 다음의 규칙을 따르는게 좋다. ●변수명 작성 규칙 - 변수명은 될 수 있으면 의미를 가진 단어를 사용한다. - 첫글자는 소문자로 시작한다. - 상수는 대문자를 사용한다. - 동사와 명사가 섞인 변수명을 작성할 때는 동사를 먼저 적는다. - boolean형의 변수는 접두어로 is나 can을 붙인다. - 반복문 등의 내부에서 사용하는 변수는 i,j,k를 사용한다. - class전체에 사용되는 class형의 변수는 접두어로 m이나 g를 붙인다. - 변수명 오른쪽에 그 변수가 무슨 의미인지 주석처리한다. ●메서드명 작성 규칙 - 하나의 메서드가 길어져 전체를 한 화면에 보기 곤란한.. 2012. 6. 17.
html 웹표준 로고 넣기 ●로고는 h1태그를 써서 그 안에 넣어준다. h1은 페이지 내에서 가장 중요한 것을 나타내는 태그이다. ex) 2012. 5. 31.
html <div>로 메뉴(내비게이션) 만들기2 ●마우스 롤 오버 태그, 속성 ●웹표준 준수 위해서 이미지의 alt속성을 꼭 넣어주고, 처럼 태그 마지막 부분을 꼭 막아줘야한다. 별 의미 없는 그냥 화면을 꾸미기 위한 이미지의 경우는 alt속성에 값을 넣지 않고 alt=""처럼 빈 속성값을 설정한다. ●이미지 링크 테두리 없애기 - 이미지에 링크를 걸면 테두리가 생긴다. 개별적으로 border값을 설정하는 것 보다 css를 이용하여 테두리를 제거한다. img {border:"0"} ●가로 메뉴 예 2012. 5. 30.
html <div>로 메뉴(내비게이션) 만들기1 ●세로 메뉴 1111 2222 3333 4444 결과 1111 2222 3333 4444 ●li안에 이미지를 세로로 나열할 때 이미지 사이에 여백이 생길경우, img속성에 'vertical-align:top;'로 설정한다. ●가로 메뉴 1111 2222 3333 4444 결과 1111 2222 3333 4444 ●li안에 'display:inline;'를 적용하면 가로로 배열이 된다. ●li안에 이미지를 가로로 나열할 때 이미지 사이에 여백이 생기는 경우, li안에 'float:left;'로 설정한다. 2012. 5. 30.
html <div>로 웹사이트 레이아웃 구성하기2 ●웹표준 레이아웃 a b c d ●#wrap{margin:0 auto; width:900px;} - table에서는 align="center"로 중앙 정렬을 했지만, 웹표준에서는 따로 중앙정렬은 없다. 그래서 중앙정렬을 하려면 가장 바깥 div에 'margin:0 auto'를 선언해 준다. 'margin:0'은 상하 0px라는 뜻이고 'auto'는 좌우를 중앙에 위치하게 한다. ●큰 div(wrap,header,sidebar,content,footer 등)를 만들고 그 안에 세부적인 div를 만든다. 큰 div는 height값을 주지 않고 세부적인 div에 height를 준다. ●width, margin, padding, height 수치를 정확히 계산해서 레이아웃을 만든다. 만들 레이아웃 디자인을 프린.. 2012. 5. 28.
DTD((Document Type Definition) 개념 ●DTD(Document Type Definition) - 웹브라우저가 웹페이지를 동일한 기준에 의해 해석 되도록 문서의 타입을 선언하는 것이다. 이클립스 사용시 파일을 생성하면 이클립스가 자동으로 dtd를 선언해준다. ●DTD는 여러가지 종류가 있다. html페이지 제일 위에 선언해야한다. 엄격모드를 사용하는 것이 정확한 웹표준을 따르는 것이지만 우리나라의 브라우저 사용실태를 고려하면 하위 버전의 브라우저에서도 호환되어야 하기 때문에 호환모드를 사용해야 한다. ex) html 4.01 Transitional(호환모드) html 4.01strict(엄격모드) 2012. 5. 25.
html <div>로 웹사이트 레이아웃 구성하기1 ●형태 #wrap{width:1000px;} #header{width:1000px; float:left;} #sidebar{width:300px; float:left;} #content{width:700px; float:left;} #footer{width:1000px; float:left;} header sidebar content footer ●html의 와 css로 레이아웃 구성하기 예 header sidebar content footer ● wrap - 레이아웃 전체를 묶어서 wrap안에 있는 div들이 깨지지 않고 자리를 잘 잡게 하기 위한 테두리이다. header - 넓이값과 float으로 위치를 잡아주면 된다. sidebar, content - sidebar와 content의 합은 레이아웃 .. 2012. 5. 22.
반응형