canvas教程

《飞机大战》安卓游戏开发源码(二)

字号+ 作者:H5之家 来源:H5之家 2018-02-09 14:05 我要评论( )

本文章属于原创性文章,珍惜他人劳动成果,转载请注明出处:http://www.pm-road.com/index.php/2014/11/06/157/ 前言:最 近闲来无事,而且也是因为刚接触安卓

本文章属于原创性文章,珍惜他人劳动成果,转载请注明出处:

前言:最 近闲来无事,而且也是因为刚接触安卓不久,所以萌生了以后在开发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;

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评
v