本文章属于原创性文章,珍惜他人劳动成果,转载请注明出处:
前言:最 近闲来无事,而且也是因为刚接触安卓不久,所以萌生了以后在开发web 项目的过程中同样开发安卓手游,因前一段时间项目需要独立完成了一款功能型手机app ,该App比较简单,全是按钮操作,也就是Activity之间的相互传值与过渡,所以对安卓的基本知识有了一定了解,在我的印象当中,感觉安卓手游是比 较困难的,但是有困难就要克服,所以有了开发游戏的念头。
接着上一篇文章,框架搭建出来之后,我们把代码写一下:
以下是:框架:
飞机大战项目结构
按照思路先把Root代码写出来:
package com.pm_road.fireair.bean;
/**
*
* @ClassName: Root
* @Description: 所有实体类的父类
* @author liPeng
* @date 2014-11-5 上午10:20:19
*
*/
public class Root {
protected float x;// 位置x
protected float y;// 位置y
protected int srcPic;// 图标指向
public float getX() {
return x;
}
public void setX(float x) {
this.x = x;
}
public float getY() {
return y;
}
public void setY(float y) {
this.y = y;
}
public int getSrcPic() {
return srcPic;
}
public void setSrcPic(int srcPic) {
this.srcPic = srcPic;
}
}
然后把飞机的实体类代码写出来:
package com.pm_road.fireair.bean;
/**
*
* @ClassName: Plane
* @Description: 飞机
* @author lipeng
* @date 2014-11-5 上午10:03:50
*
*/
public class Plane extends Root {
protected int life;// 生命
protected boolean shot;// 是否发射
public int getLife() {
return life;
}
public void setLife(int life) {
this.life = life;
}
public boolean isShot() {
return shot;
}
public void setShot(boolean shot) {
this.shot = shot;
}
}
接下来是你控制的飞机(实体类里没有任何代码,主要原因是继承的原因,写这样一个实体类,主要原因是用于区别敌机):
package com.pm_road.fireair.bean;
/**
* 控制的战机
* @ClassName: YourPlane
* @Description: 你的战机,继承飞机
* @author lipeng
* @date 2014-11-5 上午10:21:02
*
*/
public class YourPlane extends Plane{
}
敌机实体类代码:(里面也没有任何代码,主要原因是继承了plane,区别你控制的飞机)
package com.pm_road.fireair.bean;
/**
*
* @ClassName: EnemyPlane
* @Description: 敌机
* @author lipeng
* @date 2014-11-5 上午10:22:57
*
*/
public class EnemyPlane extends Plane{
}
飞机的子弹实体类:
package com.pm_road.fireair.bean;
/**
*
* @ClassName: Bullet
* @Description: 子弹
* @author liPeng
* @date 2014-11-5 上午10:24:48
*
*/
public class Bullet extends Root{
private boolean fly;//是否飞行
public boolean isFly() {
return fly;
}
public void setFly(boolean fly) {
this.fly = fly;
}
}
实体类写完之后:我们开始写相应的线程代码:首先是PlaneRunnable 线程,而在此线程中:飞机会发射子弹,在发射子弹的时候,会再起一个子弹线程BulletRunnable
package com.pm_road.fireair.thread;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.util.Log;
import android.view.SurfaceHolder;
import android.widget.ImageButton;
import com.pm_road.fireair.bean.Bullet;
import com.pm_road.fireair.bean.Plane;
import com.pm_road.fireair.common.CommonUtil;
/**
* 飞机线程
*
* @ClassName: PlaneThread
* @Description: 飞机线程
* @author lipeng
* @date 2014-11-5 上午10:27:40
*
*/
public class PlaneRunnable implements Runnable {
private Plane plane;// 此线程中的飞机
private Context context;// 上下文
private SurfaceHolder holder;