본문 바로가기

창고/Backup_2013_0121

정현이도 할수 있는 안드로이드 어플개발 - 2 : 테트리스 개발의 첫걸음-사각형그리기

반응형

저번시간에 열심히 환경구축을 하였으니 이제 본격적으로 어플 개발을 해보도록 하자.
하지만!!

자 일단 무작정 테트리스를 만들기로 한당신!! (응? 내맘데로 해놓고먼말;; -ㅁ- )
무엇을 해야할것인가?

초보개발자들이 가장 많이 착각하고 있는게 그냥 테트리스를 짠 하면 만들어지는줄 안다는것이다.

TetrisGame tg = new TetrisGame();
tg.start();

이런거-ㅅ-?
절대 안된다는건 당연히 알것이다.
자 그럼 무얼먼저 해야하는가? 먼저 개발에 활용할 가장 기초적인 API 를 파악하는것이다.

테트리스 게임을 만들려면 어떤 것을 알아야할까?
네모난 블럭이 있고 이게 니은, 리을 비슷한 모양이고 빙글빙글 돌릴수 있고 바닥에 꽉차믄 지워진다는거?
물론 그런 로직도 중요하지만;;
가장 기본적인것은 사각형을 화면에 그리는것이다.!!
어떻게 하면 안드로이드 화면에 사각형을 그릴수 있을까?
구글 검색하면 다나온다;;
음음;;

두가지 방법이 있을것이다. Bitmap 이미지로 처리하던가 아님 2D API 를 이용하던가~
우리는 후자로 할것이다.
클래스중 Canvas 클래스의 Canvas.drawRect 라는 함수를 이용해서 사각형을 그릴것이다.
정확하게는 android.graphics.Canvas 이클래스~!
물론 그전에 알아야할것은 안드로이드 프로그램의 구조와 생김새이다.
이걸 익히는것은 역시 책을 보는게 가장좋다-ㅁ-;;

머~ 그건 각자 알아서 하기로 하고 매우 간단히! 설명을 해보겠다.
...
안드로이드 프로그램은 여러개의 Activity 라는 화면이 모여서 만들어진다.
그리고 이 Activity 는 View 를 담아서 보여준다.
각각의 Activity 는 서로가 필요로 하는 정보를 전달받고 주기위해 intent 를 이용한다.
(먼솔?;; )

그럼 우리가 해야할것은
커다란 TetrisGame Activity 를 만들고
블럭들이 표시되는 View를 만들면 될것이다.
그럼 Canvas.drawRect 는 당근 View 안에 들어가면 될것이다.  참쉽다-_-;;
자 그럼 우리가 사용할 View 클래스를 파악하기 위해
http://developer.android.com/reference/android/view/View.html
sdk 사이트의 View 소개페이지를 본다.
View class 함수중 OnDraw(Canvas)  함수가 눈에 들어오지 않는가!!
그렇다. View 의 메소드 OnDraw 를 오버라이딩 하면 되는것이다.

우왕굳-ㅅ-!

그럼이제 우리의 안드로이드 테트리스 게임을 만들기 위한 가장 기초적인 테스트를 할 준비가 끝났다.
이제 그려보자~
Eclipse 를 실행시키고
새프로젝트를 만들자~ 이름은 TetrisTest01 이 좋겠다



뚝딱 프로젝트가 만들어지고 TetrisTest01 클래스가 생겼다. Activity 를 상속받는다고 (extends 한다고 )
써있으므로 아까말한 커다란 틀이 요놈이다.
그럼 View 를 만들자 .
왼쪽 패키지 쪽에서 오른쪽클릭해서 클래스를 선택해사 아래 이미지 같이 입력해서
DrawSquare View 를 만들자



View 를 상속받으므로 생성자가 필수이다 Eclipse 가 빨간줄을 그어주면서
만들라고 강요한다-_-;;
마우스를 살포시 올리면 quick fix 로 뜨므로 바로 생성자가 추가 가능하다.
잘모르겠으면 이따 다 정리된 내소스파일 보면된다-_-;; 어쨌든
Context 를 받는 생성자를 추가하고,
View OnDraw 를 오버라이드 한다.

자 이제 우리에게 Canvas 가 주어졌다!!
그럼 drawRect 만 하면되는데~ 요놈의 인수가 궁금하다..
레퍼런스 ㄱㄱ 한다
http://developer.android.com/reference/android/graphics/Canvas.html

drawRect(float left, float top, float right, float bottom, Paint paint)
left, top,right,bottom 은 위치인데 Paint 라는게 필요하덴다.
여기선 요놈이 붓역할을 한다. 즉 우리가 그릴 사각형의 색깔및 내부 패턴을 정의 한다.
Paint 레퍼런스도 보자
http://developer.android.com/reference/android/graphics/Paint.html

음음;; 색만 지정해주면 쓸수 있겠다.

머 너무 자질구래하게 설명하면 설명도 길어지고 공부도 안되니~
그렇다치고-_-;;
OnDraw 함수에

  Paint pnt = new Paint();
  pnt.setARGB(255, 255, 255, 255); /* 흰색 */  
  canvas.drawRect(0,0,50,50,pnt);


요렇게 넣어야 사각형이 그려진다는 사실을 파악할수 있다.

그럼 우리의 main 함수라 할수 있는 TetrisTest01 클래스에 방금만든 DrawSquare 클래스를 생성하여 포함시킨다.

 DrawSquare ds;
    @Override
    public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     ds = new DrawSquare(this);
     setContentView(ds);
       
    }

그리고 에뮬레이터 기동!!

다음과 같이 보였다면 기초 공사 완료이다!!



다음시간에는 테트리스 블럭 모양을 만들고 회전을 시켜보자.

오늘 한 소스 -->


반응형