整体实现思路
绘制循环滚动的背景图片创建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