一.飞机大战整体思路
1.选定背景,然后设置背景,实现两张背景的循环,达成背景的循环滚动的效果
2.加上一个玩家飞机,给他赋予初始位置,然后给玩家飞机Touch,实现玩家飞机能按照手指的触摸位置来进行移动的效果
3.加上Boss飞机,在背景的上方给Boss飞机进行判断,实现飞机的左右移动,设置Boss飞机的疯狂状态
4.给飞机加上子弹,玩家飞机和Boss飞机子弹都是一样的,创建一个speed给它赋值,这是子弹的速度,用speed++进行子弹的加速,再定义一个isdead,进行子弹的判断
5.进行判断,判断当子弹撞到飞机的时候的各种不同的反应,自己飞机撞到敌机时候的反应,比如玩家飞机和Boss飞机的血量的减少,以及飞机碰到时候的闪烁状态,然后就是赋予碰撞时的声音
6.给飞机和子弹和游戏整体加上背景音效
二.如何实现背景图片滚动
首先定义图片的x,y,Bitmap,给这三个值赋予构造方法,要有canvas和paint,一定要锁定画板和解锁画板,然后在逻辑方法中进行判断,给x和y进行++实现背景的滚动,当你的第一张图循环结束,把第二张图放在后面继续进行滚动,第一张图立马放到第二张图后面接着循环,在视觉上形成一种循环的效果。
下面是背景这一部分的代码:
/**
* 背景图片
*/
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
public class BackGroud {
private int x;
private int y;
private Bitmap bitmap;
public BackGroud(Bitmap bitmap){
this.bitmap = bitmap;
x = 0;
y = x-bitmap.getHeight();
}
public void draw(Canvas canvas){
logic();
Paint paint = new Paint();
canvas.drawBitmap(bitmap,0, x,paint);
canvas.drawBitmap(bitmap,0, y,paint);
}
public void logic(){ //逻辑方法
x+=10;
y+=10;
if(x>=bitmap.getHeight()){
x = y-bitmap.getHeight(); //移动在第二张上面
}
if(y>=bitmap.getHeight()){
y=x-bitmap.getHeight();
}
}
}
三.如何绘制飞机
先给飞机定义一个初始位置,通过定义的属性在屏幕底部的中间,因为屏幕左上角是原点坐标,所以这里的X,Y是飞机和屏幕的左上角的位置,这时候的飞机在中间偏右这个位置,所以你要减去半个飞机的宽度才能到达正中心。
/**
*玩家飞机
*/
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.MotionEvent;
public class Myplane {
private Bitmap bitmap;
private Bitmap bitmapHp;
private int x, y;
private int width, height;
private boolean noCollision;
private int noCollisionCount;
private int Hp = 3;
public Myplane(Bitmap bitmap, Bitmap bitmapHp) {
this.bitmapHp = bitmapHp;
this.bitmap = bitmap;
x = MySurfaceView.width /