飞机大战游戏代码详解
- 整体实现思路
- 如何绘制循环滚动的背景图片
- 如何绘制飞机
- 如何绘制子弹
- 如何判断碰撞(子弹与飞机碰撞、飞机与飞机碰撞)
- 如何绘制爆炸效果
- 如何添加音效
- 哪些地方用到封装,继承,多态,方法重载,接口等
- 我的收获和感悟
目录
整体实现思路
1.将表面视图建立好
2.将背景图片处理好,循环滚动,然后用表面视图调用
3.绘制我的飞机以及BOSS飞机,位置需要调整,用表面视图调用
4.绘制子弹,位置需要调整,用表面视图调用
5.判断碰撞,我的子弹与boss飞机位置一致,boss飞机左、中、右与我的飞机位置碰撞
6.绘制爆炸效果,在视图调用
7.添加音效,在视图调用
如何绘制循环滚动的背景图片
定义两个位图对象,当第一个位图到末尾时,第二个位图从第一个位图的末尾跟上
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
public class BackGround {
private int y1;
private int y2;
private Bitmap bitmap;
public BackGround(Bitmap bitmap){
this.bitmap = bitmap;
y1 = 0;
y2 = y1-bitmap.getHeight();
}
public void draw(Canvas canvas){
logic();
Paint paint = new Paint();
canvas.drawBitmap(bitmap,0,y1,paint);
canvas.drawBitmap(bitmap,0,y2,paint);
}
public void logic(){
y1+=10;
y2+=10;
if(y1>=MySurfaceView.height){
y1 = y2-bitmap.getHeight();//移动到第二张图片的顶部
}
if(y2>=MySurfaceView.height){
y2 = y1-bitmap.getHeight();
}
}
}
如何绘制飞机
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
/**
* created by lenovo64 on 2018/5/25
*/
public class MyPlane {
private Bitmap bitmap;
private int x,y;
public MyPlane(Bitmap bitmap){
this.bitmap = bitmap;
x = MySurfaceView.width/2-bitmap.getWidth()/2;//宽度位置
y = MySurfaceView.height-bitmap.getHeight();//长度位置
}
public void draw(Canvas canvas, Paint paint){
canvas.drawBitmap(bitmap,x,y,paint);
}
}
如何绘制子弹
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
public class Bullet {
private Bitmap bitmap;
private int x, y;
private int speed = 20;
private boolean isDead;
private int type;
public Bullet(Bitmap bitmap, int x, int y,int type) {
this.bitmap = bitmap;
this.x = x;
this.y = y;
this.type = type;
}
public void draw(Canvas canvas, Paint paint) {
canvas.drawBi


885

被折叠的 条评论
为什么被折叠?



