1.游戏分析
飞机大战中的主要“角色”有:
1.玩家飞机
2.敌方飞机
3.玩家飞机发送的子弹
4.敌方Boss飞机发送的子弹
我们需要控制的有:
1.绘制屏幕内的角色
2.控制角色的逻辑,比如:敌方飞机与我方飞机的碰撞检测,我方飞机发射的子弹与敌方飞机之间的碰撞检测,敌方Boss飞机发射的子弹与我方飞机直接的碰撞检测等等。
资源:
要完成一个游戏,还要有资源的加载,比如飞机,子弹等图片的加载等,音效的加载。
游戏背景的绘制
3、如何绘制飞机
飞机大战中的主要“角色”有:
1.玩家飞机
2.敌方飞机
3.玩家飞机发送的子弹
4.敌方Boss飞机发送的子弹
我们需要控制的有:
1.绘制屏幕内的角色
2.控制角色的逻辑,比如:敌方飞机与我方飞机的碰撞检测,我方飞机发射的子弹与敌方飞机之间的碰撞检测,敌方Boss飞机发射的子弹与我方飞机直接的碰撞检测等等。
资源:
要完成一个游戏,还要有资源的加载,比如飞机,子弹等图片的加载等,音效的加载。
游戏背景的绘制
其实是一张图,这张图可以首尾相接,也即是“卷轴”,原理就是卡马克卷轴算法的原理。
2、如何绘制循环滚动的背景图片
在MySurfaceView中创建run方法
调用mipmap中的背景图片
再创建BackGround类
代码如下:
- package com.example.lenovo.myapplication;
- 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+=5;
- y2+=5;
- if(y1>=MySurfaceView.Height){
- y1=y2-bitmap.getHeight();
- }
- if(y2>=MySurfaceView.Height){
- y2=y1-bitmap.getHeight();
- }
- }
- }
绘制敌机:
- package com.example.lenovo.myapplication;
- import android.graphics.Bitmap;
- import android.graphics.Canvas;
- import android.graphics.Paint;
- import java.util.function.BooleanSupplier;
- public class BossPlane {
- private Bitmap bitmap;
- private int x,y;
- private int frameW,frameH;