飞机大战代码

飞机大战游戏代码详解

  • 整体实现思路
  • 如何绘制循环滚动的背景图片
  • 如何绘制飞机
  • 如何绘制子弹
  • 如何判断碰撞(子弹与飞机碰撞、飞机与飞机碰撞)
  • 如何绘制爆炸效果
  • 如何添加音效
  • 哪些地方用到封装,继承,多态,方法重载,接口等
  • 我的收获和感悟

目录

整体实现思路

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值