티스토리 툴바


"native 메소드 이름은 대문자로 시작한다."  이것은 개인적인 규칙으로 자주 사용하지 않기에 잊어먹는 것을 방지하기 위해서 나를 위해서 쓰는 포스트입니다.

[소스 1]
	static {
		System.loadLibrary("libFrameBuffer");	
	}
	
	private static native int CreateObject();
	private static native int ReleaseObject(int handle);
	
	private static native void Clear(int handle);
	private static native void AddPackage(int handle, int framePackage);
	
	private static native int GetFrame(int handle);
	private static native void FreeFrame(int frame);

	private static native void SkipFrame(int handle);

	private static native boolean GetIsEmpty(int handle);
	private static native int GetPositon(int handle);
	
	
	private int _Handle = CreateObject();
	
	protected void finalize() throws Throwable {
		ReleaseObject(_Handle);
		
		super.finalize(); 
	}
	
	public void clear() {
		Clear(_Handle);
	}
[소스 1]은 델파이를 통해서 만들어진 클래스를 안드로이드로 포팅하기 위해서 C로 함수별로 클래스의 메소드를 구현하고, 이것을 다시 자바의 클래스로 래핑하는 과정에서 나온 소스입니다.

08: 라인과 28: 라인의 메소드 이름을 같게 할 수 없기 때문에 한 쪽에는 이름이 달라야 합니다.  이를 위해서 native 메소드는 대문자로 시작하면서 구별하고 있습니다.  특수 문자 또는 "jni" 등의 접두사를 붙일까 고민했었지만, 개인적으로 마음에 들지 않아서 위와 같이 결정하였습니다.


 
저작자 표시 비영리 변경 금지
Posted by 류종택
https://market.android.com/details?id=com.steema.teechart.android&hl=ko
http://www.artfulbits.com/Android/aiCharts.aspx
http://www.java4less.com/charts/chart.php?info=android
http://www.achartengine.org/
http://www.keepedge.com/products/android_charting/#features

 
저작자 표시 비영리 변경 금지
Posted by 류종택
TAG android, Chart


기존의 소스와 비교해보시면 많이 달라진 것이 보일 겁니다.
예전에는 원고 마감에 쫓기고 다른 프로젝트에 쫓겨서 잘 못된 부분도 있고,
제 방식대로 코딩하면 익숙하지 않은 분들에게 혼선이 생길 까봐 일부러 그런 부분도 있습니다.

시스템을 4단계로 나눠서 개발하는 방식을 취하고 있습니다.
(저는 언제나 이런 스타일로 개발하니까요)

인터페이스 계층에서 나타나는 최상의 객체인 Borad, ShuffleButton 의 참조는
원래 소스와 같이 Main에서 처리할 수도 있지만,
이것은 초보자가 읽기 쉬울 수 있겠으나, 참조할 때마다 Main을 거치거나,
Main에서 코딩하게 되는 문제가 발생합니다.  
교재가 바로 Main에서 코딩하고 있고, 초보자들이 대부분 이런 방식을 사용합니다.

델파이처럼 전역변수로 참조를 사용할 수도 있습니다.
그리고, 마지막으로 저처럼 싱글톤 또는 유사한 방식으로 처리할 수가 있습니다.
어느 쪽이 좋다라고 하기는 좀 어려울 수 있겠으나, 저는 싱글톤을 좋아합니다.

Main에 쓸 때없이 널려져 있던 소스가 각자 원래 있어야 할 곳으로 옮겨졌고,
참조 또한 간편하게 정리가 되었습니다.

너무 분업을 심하게 한 탓에 설계되었던 Blocks와 BlockControl을 제거 하였고,
인터페이스에 맞춰서 개발하는 방식에 대한 설명을 하려고 만들었던 인터페이스를 제거하였습니다.
좋은 예가 아니었던 것 같습니다.

그리고 읽는 방법을 모르실 수 있겠지만,
3단계에 해당하는 인터페이스 계층에 대한 간단한 Job Flow 도 첨부합니다.


저작자 표시 비영리 변경 금지
Posted by 류종택



연재하던 원고를 하나로 통합했습니다.  가벼운 게임 엔진을 통해서 게임을 만들어 가는 과정을 설명하고 있으며, OOP를 근거로 설계하고 코딩하는 과정을 설명하고 있습니다.
저작자 표시 비영리 변경 금지
Posted by 류종택

게임으로 배우는 안드로이드 #5.pdf


ShootingGame.7z


JetBoy.7z


잡지사에 연재했던 마지막 원고입니다.

현재 진행하는 프로젝트가 어느 정도 마무리되면, 안드로이드 게임 강좌를 정리해서 오프라인으로 발표 할 예정입니다.
 


저작자 표시 비영리 변경 금지

'프로그래밍 > Android & Java' 카테고리의 다른 글

슬라이딩 퍼즐 새로운 소스  (0) 2011/10/14
게임으로 배우는 안드로이드  (0) 2011/10/10
슈팅게임 만들기 #2  (6) 2011/07/18
슈팅 게임 만들기 #1  (0) 2011/06/20
테트리스 퍼즐 만들기  (2) 2011/05/01
슈팅 게임 소스 #1  (6) 2011/04/09
Posted by 류종택
소스 참고: http://ryulib.tistory.com/126

 
저작자 표시 비영리 변경 금지

'프로그래밍 > Android & Java' 카테고리의 다른 글

게임으로 배우는 안드로이드  (0) 2011/10/10
슈팅게임 만들기 #2  (6) 2011/07/18
슈팅 게임 만들기 #1  (0) 2011/06/20
테트리스 퍼즐 만들기  (2) 2011/05/01
슈팅 게임 소스 #1  (6) 2011/04/09
슬라이딩 퍼즐 게임 만들기  (3) 2011/03/23
Posted by 류종택
아래는 제가 월간 W.E.B. 이라는 잡지에 연재하고 있는 원고입니다.  
연재 시점에서 배포할 수가 없어서, 약속된 기한이 지나고 나서 배포합니다.

 
 소스 및 기타 정보는 http://ryulib.tistory.com/121 를 참고하시기 바랍니다.
저작자 표시 비영리 변경 금지

'프로그래밍 > Android & Java' 카테고리의 다른 글

슈팅게임 만들기 #2  (6) 2011/07/18
슈팅 게임 만들기 #1  (0) 2011/06/20
테트리스 퍼즐 만들기  (2) 2011/05/01
슈팅 게임 소스 #1  (6) 2011/04/09
슬라이딩 퍼즐 게임 만들기  (3) 2011/03/23
Android Game - Tetris Puzzle  (2) 2011/03/08
Posted by 류종택
잡지에 연재하는 강좌에 대한 소스입니다.  추후 정리하여 강좌 내용도 공개하도록 하겠습니다.   이번 연재는 게임 핵심 구현을 제외한 화면 전환 및 메뉴 체계 구현에 대한 내용을 다루고 있습니다.

SVN : 
  - https://dev.naver.com/svn/ryulib4android
  - 익명 접속 암호 : anonsvn
  - 폴더: /samples/Game/ShootingGame 



[화면 전환에 대한 상태도]

l  Intro: 게임이 시작될 때 보여주는 화면.

n  화면이 보여지고 난 뒤 2초 후면 Main으로 이동 합니다.

n  실제 게임에서는 필요한 데이터 등을 로딩하는 동안 보여주는 형식을 취합니다.

l  Main: 게임의 Main Menu에 해당하는 화면

n  사용자의 선택에 따라 Option/Game/Finish 화면으로 이동 할 수 있습니다.

l  Option: 게임의 옵션을 설정하고자 할 때 이용하는 화면

n  옵션을 설정한 이후에는 Main 화면으로 이동합니다.

l  Game: 게임 화면

n  게임이 진행되는 화면입니다.

n  게임은 여러 개의 레벨로 구성되어 있을 수 있으며, 한 레벨을 완료하면 다음 레벨로 자동으로 이동하게 됩니다.

n  게임 로직에 의해서 게임이 끝나게 되면 게임 결과에 해당하는 Result 화면으로 이동합니다.

l  Result: 게임 결과 내용을 표시하는 화면

n  사용자가 내용을 확인하면, 다시 Main 화면으로 이동합니다.

l  Finish: 게임이 종료될 때 보여주는 화면

n  게임 어플리케이션이 완전히 종료되기 전에 표시되는 화면이며, 2초 정도 표시한 후에 어플리케이션이 종료됩니다.

저작자 표시 비영리 변경 금지

'프로그래밍 > Android & Java' 카테고리의 다른 글

슈팅 게임 만들기 #1  (0) 2011/06/20
테트리스 퍼즐 만들기  (2) 2011/05/01
슈팅 게임 소스 #1  (6) 2011/04/09
슬라이딩 퍼즐 게임 만들기  (3) 2011/03/23
Android Game - Tetris Puzzle  (2) 2011/03/08
RyuLib.Game for Android 개발자 메뉴얼  (0) 2011/02/24
Posted by 류종택
아래는 제가 월간 W.E.B. 이라는 잡지에 연재하고 있는 원고입니다.  
연재 시점에서 배포할 수가 없어서, 이제서야 공개합니다.

 
 소스 및 기타 정보는 http://ryulib.tistory.com/109 를 참고하시기 바랍니다.
저작자 표시 비영리 변경 금지

'프로그래밍 > Android & Java' 카테고리의 다른 글

테트리스 퍼즐 만들기  (2) 2011/05/01
슈팅 게임 소스 #1  (6) 2011/04/09
슬라이딩 퍼즐 게임 만들기  (3) 2011/03/23
Android Game - Tetris Puzzle  (2) 2011/03/08
RyuLib.Game for Android 개발자 메뉴얼  (0) 2011/02/24
슬라이딩 퍼즐 게임 소스  (6) 2011/02/08
Posted by 류종택
테트리스 블럭 모양의 퍼즐을 모두 맞춰서 사각형을 완성하면 프로그램이 종료되는 게임에 대한 소스입니다.  




[그림 1] 게임 소스 전반적인 흐름에 대한 Job Flow
  • 게임이 시작되면 TetrisBoard.startGame() 메소드가 실행되고, 이후 전체 조각들이 목록을 관리하는 PieceList.clear()를 통해서 초기화됩니다.  
  • 바로 이어서 PieceFactory.slice()를 통해서 사각형을 테트리스 블록 모양의 조각(Piece)으로 나눠 줍니다.  이때 랜덤하게 위치를 최대한 서로 겹치지 않도록 배열합니다.  slice() 메소드는 새로운 조각을 만들어 내고 배치하고 난 뒤에 OnNewPiece 이벤트를 발생시킵니다.  
  • OnNewPiece 대한 이벤트 핸들링은 TetrisBoard에서 진행합니다.  TetrisBoard의 이벤트 리스너는 PieceList.add()를 통해서 생성된 조각을 관리하도록 합니다.
  • 조각(Piece)들은 터치 이벤트를 통해서 이동 시킬 수가 있으며, 이동이 완료되면 OnMoved 이벤트를 발생시킵니다.
  • OnMoved 이벤트의 핸들링은 상위 객체인 PieceList의 객체에서 처리합니다.  모든 조각이 제 위치에 있는 지를 점검하고 만약 모든 조각이 제 위치에 있다면, 게임을 종료하는 OnGameEnd 이벤트를 발생시킵니다.
  • OnGameEnd 이벤트 역시 상위 객체인 TetrisBoard 에서 처리합니다.  예제에서는 [그림 1]과 같이System.exit(0)를 통해서 프로그램을 종료시키고 있습니다.

강좌를 만들기 위해서 미리 작성한 예제입니다.  추후 보다 게임의 모양새를 갖춰가면서 강좌를 이어가도록 하겠습니다.
저작자 표시 비영리 변경 금지
Posted by 류종택