Android studio飞机大战游戏分析-月末总结

整体实现思路

绘制循环滚动的背景图片创建BackGround类
绘制飞机和子弹.创建Myplane和Bullet类
在Myplane中构造isCollision绘制飞机与boss飞机的碰撞,飞机与子弹的碰撞
绘制爆炸效果创建boom类
添加音效创建GameSoundpool添加飞机发射子弹的音效和爆炸音效

绘制循环滚动的背景图片

建一个Background类,用draw方法和logic方法使两张图片紧密连接在一起,当第一张图片小于MySurfaceView高度时另一张图片接着循环

[java] view plain copy 
1.package com.example.a29148.myapplication;  
2.  
3.import android.graphics.Bitmap;  
4.import android.graphics.Canvas;  
5.import android.graphics.Paint;  
6.  
7.public class BackGround {
     
8.    private int y1;  
9.    private  int y2;  
10.    private Bitmap bitmap;  
11.    public BackGround(Bitmap bitmap){  
12.        this.bitmap = bitmap;  
13.        y1 = 0;  
14.        y2 = y1-bitmap.getHeight();  
15.    }  
16.    public void draw(Canvas canvas){  
17.  
18.        logic();  
19.        Paint paint = new Paint();  
20.        canvas.drawBitmap(bitmap,0,y1,paint);  
21.        canvas.drawBitmap(bitmap,0,y2,paint);  
22.    }  
23.    public void logic(){  
24.        y1+=5;  
25.        y2+=5;  
26.        if(y1>=MySurfaceView.Height){  
27.            y1=y2-bitmap.getHeight();  
28.        }  
29.        if(y2>=MySurfaceView.Height){  
30.            y2=y1-bitmap.getHeight();  
31.        }  
32.    }  
33.}  

绘制飞机和子弹.

绘制飞机:创建Myplane,draw方法并在MySurfaceView传递参数,在后面还定义了飞机的血量,还定义了一个布尔型的noCollision使手指可以拖动飞机,并判断飞机是否被boss飞机发射的子弹击中和被boss飞机的疯狂模式撞到减少血量;当飞机的血量小于等于零时,判定游戏失败

[java] view plain copy 
1.package com.example.a29148.myapplication;  
2.  
3.import android.graphics.Bitmap;  
4.import android.graphics.Canvas;  
5.import android.graphics.Paint;  
6.  
7.public class BackGround {
     
8.    private int y1;  
9.    private  int y2;  
10.    private Bitmap bitmap;  
11.    public BackGround(Bitmap bitmap){  
12.        this.bitmap = bitmap;  
13.        y1 = 0;  
14.        y2 = y1-bitmap.getHeight();  
15.    }  
16.    public void draw(Canvas canvas){  
17.  
18.        logic();  
19.        Paint paint = new Paint();  
20.        canvas.drawBitmap(bitmap,0,y1,paint);  
21.        canvas.drawBitmap(bitmap,0,y2,paint);  
22.    }  
23.    public void logic(){  
24.        y1+=5;  
25.        y2+=5;  
26.        if(y1>=MySurfaceView.Height){  
27.            y1=y2-bitmap.getHeight();  
28.        }  
29.        if(y2>=MySurfaceView.Heigh
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值