카테고리 없음

Android Game example, EnemyPlane

Soul-Learner 2012. 5. 8. 12:09

Android Game example, EnemyPlane

적 비행기가 위에서 아래로 내려오는 내용 구현

GameState.java

package game.framework;


import android.graphics.Bitmap;

import android.graphics.Canvas;

import android.util.Log;

import android.view.KeyEvent;

import android.view.MotionEvent;


public class GameState implements IState {

Background background;

BackgroundClouds clouds;

Airplane airplane;

GameKeyPad keyPad;

EnemyPlane enemyPlane;


public GameState() {

keyPad = new GameKeyPad();

airplane = new Airplane();

airplane.init();

enemyPlane = new EnemyPlane();

background = new Background();

clouds = new BackgroundClouds();

}

@Override

public void init() {   }


@Override

public void destroy() { }


@Override

public void update() {

background.update();

clouds.update();

airplane.update();

enemyPlane.update();

}


@Override

public void render(Canvas canvas) {

background.draw(canvas);

clouds.draw(canvas);

airplane.draw(canvas);

enemyPlane.draw(canvas);

keyPad.draw(canvas);

}


@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

return false;

}


@Override

public boolean onTouchEvent(MotionEvent event) {

return keyPad.onTouchEvent(event);

}

}



AppManager.java

package game.framework;


import java.util.ArrayList;


import android.content.res.*;

import android.graphics.*;


public class AppManager {


private GameView gameView;

private Resources resources;

private Airplane airplane;

ArrayList<EnemyPlane> enemyList = new ArrayList<EnemyPlane>();

private AppManager() {}


void setGameView(GameView gameView) {

this.gameView = gameView;

}


void setResources(Resources resources ){

this.resources = resources;

}


public GameView getGameView() {

return gameView;

}


public Resources getResources() {

return resources;

}


public Bitmap getBitmap(int resId) {

return BitmapFactory.decodeResource(getResources(), resId);

}


public Airplane getAirplane() {

return airplane;

}


public void setAirplane(Airplane airplane) {

this.airplane = airplane;

}


private static AppManager instance;


public static AppManager getInstance() {

if(instance==null) instance = new AppManager();

return instance;

}

}


Airplane.java

package game.framework;


import java.util.*;


import android.graphics.*;

import android.util.Log;


public class Airplane extends GraphicObject {


int speedX, speedY;

ArrayList<Missile> misList =  new ArrayList<Missile>();

public Airplane() {

super(AppManager.getInstance().getBitmap(R.drawable.mustang_transparent));

}

public Airplane(Bitmap bitmap) {

super(bitmap);

}


public void init() {

AppManager.getInstance().setAirplane(this);

}

public void setSpeed(int speedX, int speedY) {

this.speedX = speedX;

this.speedY = speedY;

}

public void update() {

if(this.x==0 && this.y==0) return;

x += speedX;

y += speedY;

for(int i=0;i<misList.size();i++) {

if(misList.get(i).speedY!=0) misList.get(i).update();

}

}

public void draw(Canvas canvas) {

if(this.x==0 && this.y==0) {

this.x = canvas.getWidth()/2-bitmap.getWidth()/2;

this.y = canvas.getHeight()-bitmap.getHeight();

}

for(int i=0;i<misList.size();i++) {

if(misList.get(i).speedY!=0) misList.get(i).draw(canvas);

}

canvas.drawBitmap(bitmap, x, y, null);

}

public void fireMissile() {

Missile misToFire = null;

for(int i=0;i<misList.size();i++) {

if( ! misList.get(i).inuse) {

misToFire = misList.get(i);

Log.i("미사일선택", "미사일 재사용");

break;

}

}

if(misToFire==null) {

misToFire = new Missile();

Log.i("미사일선택", "미사일 새로 생성");

misList.add(misToFire);

}


misToFire.setPosition(this.x+(bitmap.getWidth()/2)-(misToFire.bitmap.getWidth()/2), this.y);

misToFire.setSpeed(0, -4);

misToFire.inuse = true;

}

}


EnemyPlane.java

package game.framework;


import android.graphics.Canvas;


public class EnemyPlane extends Airplane {

public EnemyPlane() {

super(AppManager.getInstance().getBitmap(R.drawable.enemy_transparent));

setSpeed(0, 1);

AppManager.getInstance().enemyList.add(this);

}

@Override

public void draw(Canvas canvas) {

if(this.x==0 && this.y==0) {

this.x = canvas.getWidth()/2-bitmap.getWidth()/2;

this.y = 0;

}

super.draw(canvas);

}

}