안드로이드 스튜디오 Libgdx 초기 코드 분석
본문 바로가기
프로그래밍/게임 프로그래밍(Libgdx)

안드로이드 스튜디오 Libgdx 초기 코드 분석

by 124578 2020. 10. 3.

안녕하세요. 오늘은 한가위 추석 다음날 입니다. 

코로나 때문에 고향에 못가신 분들도 많으실 것 같네요.

저는 고향에 살아서 그런 고민은 않하고 사는듯 합니다.

 

이번 포스팅은 저번 포스팅에 이어 코드 분석을 해보겠습니다.

이 포스팅이 쭉 이어져서 타워 디펜스 게임이 됩니다.

 

저번 포스팅에 이어 초기 프로젝트 생성후 생성된 코드 입니다.

전체 코드는 아래와 같습니다.

 

<전체 코드>

 

package com.mygdx.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class TowerDefense extends ApplicationAdapter

{
  SpriteBatch batch;
  Texture img;

  @Override
  public void create ()

  {
    batch = new SpriteBatch();
    img = new Texture("badlogic.jpg");
  }

 @Override
 public void render ()

 {
  Gdx.gl.glClearColor(1, 0, 0, 1);
  Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
  batch.begin();
  batch.draw(img, 0, 0);
  batch.end();
 }

 @Override
 public void dispose ()

 {
   batch.dispose();
   img.dispose();
 }
}

 

위와 같은 전체코드에서 부분코드에 대한 설명을 해보겠습니다.

 

<부분 코드>

 

라이브러리 로드 및 패키지 선언 부 입니다. 

딱히 설명할 부분은 없는 듯합니다.

JAVA기반이라서 그런지 코드를 하다 보면 자동으로 import 부분은 생성이 됩니다.

 

package com.mygdx.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

 

//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//

   public class TowerDefense extends ApplicationAdapter 

//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//

 

 메인 클래스 부분입니다. 

 TowerDefense라는 클래스는 ApplicationAdapter를 기반으로 만들어진 클래스 입니다.

 

 

//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//

  SpriteBatch batch;
  Texture img;

//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//

 

SpriteBatch는 이미지를 스프라이트 시켜주는 기능을 가진 라이브러리 입니다.

스프라이트라는 것은 띠를 말합니다.

캐릭터의 동작을 일련의 이미지로 순차적으로 그려 넣은 것입니다.

일반적으로 2D 게임에서 이미지 애니메이션을 시킬때 사용합니다.

 

 

 

아래는 스프라이트 이미지의 예 입니다.

원리는 캐릭터의 움직임을 각각의 이미지로 메모리에 담아 디스플레이 하여 애니메이션 효과를 줍니다.

스프라이트 애니메이션의 예

Texture는 위와 같은 스프라이트 이미지를 저장하는 코드 입니다. 

 

//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//

  @Override
  public void create ()

  {
    batch = new SpriteBatch();
    img = new Texture("badlogic.jpg");
  }

//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//

create() 메소드는 ApplicationAdapter에서 정의된 것을 오버라이드합니다.

말그대로 게임에 필요한 기능을 초기화 하는 부분입니다.

선언한 SpriteBatch와 Texture를 초기화 합니다,

Texture초기화 부분의 badlogic.jpg 이미지는 아래 그림의 assets에 위치해 있습니다.

assets에는 게임제작에 필요한 리소스가 저장됩니다.

 

 

//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//

@Override
public void render ()

{
 Gdx.gl.glClearColor(1, 0, 0, 1)
 Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
 batch.begin();
 batch.draw(img, 0, 0);
 batch.end();
}

//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//

 

render() 메소드도 역시 ApplicationAdapter에서 정의된 것을 오버라이드합니다.

이부분은 말그대로 이미지를 그리는 메소드 입니다.

 

Create()에서 초기화 한것을 그리는 부분입니다.

 

Gdx.gl.glClearColor(1, 0, 0, 1);  배경이미지 색상을 결정합니다.

인자는 앞쪽부터 red, green, blue, alpha 입니다.

 

Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 설정한 이미지 색상설정대로 클리어

 

 batch.begin()

스프라이트 이미지를 그리기 시작

 

batch.draw(img, 0, 0);

그릴 이미지와 위치를 인자로 설정합니다.

 

 batch.end();

이미지 그리기 끝

 

//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//

@Override
public void dispose ()

{
 batch.dispose();
 img.dispose();
}

//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH//

dispose () 메소드도 역시 ApplicationAdapter에서 정의된 것을 오버라이드합니다.

이부분은 말그대로 선언한 메모리를 해제 합니다.

 

batch.dispose();

선언한 Spritebatch를 메모리 해제 합니다.


 img.dispose();

선언한 Texture를 메모리 해제 합니다.

 

 

게임프로그램의 구조는 다음과 같습니다.

 

리소스를 초기화 하고 이미지를 그리는 것입니다.

물론 이미지를 어떻게 그리는지는 알고리즘에 의해 결정됩니다.

 

이상으로 Libgdx 기본 프로그램 구조 설명을 마치겠습니다.

 

다음 포스팅은 초기 화면 설정하는 방법에 대해 포스팅 하겠습니다.

 

감사합니다.

 

댓글


TOP

TEL. 02.1234.5678 / 경기 성남시 분당구 판교역로