GameView.java :  » UnTagged » tankforandroid » com » ipanel » view » Android Open Source

Android Open Source » UnTagged » tankforandroid 
tankforandroid » com » ipanel » view » GameView.java
package com.ipanel.view;

import com.ipanel.R;
import com.ipanel.game.LayerManager;
import com.ipanel.game.Sprite;
import com.ipanel.tank.TankSprite;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.drawable.BitmapDrawable;
import android.view.KeyEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;

public class GameView extends SurfaceView implements Callback {

  GameThread gameThread;

  TankSprite tank, enemy;
  
  Sprite bo;
  
  LayerManager layerManager;

  public GameView(Context context) {
    super(context);
    // TODO Auto-generated constructor stub

    SurfaceHolder holder = getHolder();

    holder.addCallback(this);
    
    layerManager = new LayerManager();

    Resources resources = context.getResources();

    Bitmap tankpic = BitmapFactory.decodeResource(resources,
        R.drawable.tank);
    // tankpic = Bitmap.createScaledBitmap(tankpic, 128, 128, true);
    tank = new TankSprite(layerManager,tankpic, 16, 16, TankSprite.TANK_SILVER_SMALL);
    tank.setPosition(100, 100);

    enemy = new TankSprite(layerManager,tankpic, 16, 16, TankSprite.TANK_RED_SMALL);
    enemy.setPosition(100, 150);

    Bitmap bopic = BitmapFactory.decodeResource(resources, R.drawable.bo);
    bo = new Sprite(bopic, 32, 32);
    
    layerManager.append(tank);
    layerManager.append(enemy);
    

    gameThread = new GameThread(holder);

  }
  
  public TankSprite getEnemy(){
    return enemy;
  }

  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {

    if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
      tank.turnLeft();
      return (true);
    }

    if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
      tank.turnRight();
      return (true);
    }

    if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
      tank.turnUp();
      return (true);
    }
    if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
      tank.turnDown();
      return (true);
    }
    if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER){
      tank.shut();
      return (true);
    }
    
    return super.onKeyDown(keyCode, event);
  }

  @Override
  public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
      tank.stop();
      return (true);
    }

    if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
      tank.stop();
      return (true);
    }

    if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
      tank.stop();
      return (true);
    }
    if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
      tank.stop();
      return (true);
    }
    return super.onKeyUp(keyCode, event);
  }


  @Override
  public void surfaceChanged(SurfaceHolder holder, int format, int width,
      int height) {
    // TODO Auto-generated method stub

  }

  @Override
  public void surfaceCreated(SurfaceHolder holder) {
    // TODO Auto-generated method stub
    gameThread.start();
  }

  @Override
  public void surfaceDestroyed(SurfaceHolder holder) {
    // TODO Auto-generated method stub
    gameThread.stopThread();
  }

  class GameThread extends Thread {

    SurfaceHolder holder;

    boolean run = true;

    GameThread(SurfaceHolder holder) {
      this.holder = holder;
    }

    public void run() {
      run = true;
      int i = 0;
      while (run) {

        Canvas c = null;
        try {
          synchronized (holder) {
            c = holder.lockCanvas();
            c.drawARGB(255, 0, 0, 0);
            Paint mPaint = new Paint();
            mPaint.setColor(Color.RED);
            // c.drawText("" + i++, 100, 100, mPaint);
            
            
            layerManager.paint(c, 0, 0);
//            tank.paint(c);

//            enemy.move();
            
//            enemy.paint(c);

            // bo.setPosition(100, 100);
            // bo.paint(c);
            // bo.nextFrame();

            sleep(200);
          }
        } catch (Exception e) {
          e.printStackTrace();
        } finally {
          if (c != null)
            holder.unlockCanvasAndPost(c);
        }
      }

    }

    public void stopThread() {
      run = false;
    }

  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.