package com.study.plane;
import java.util.ArrayList;
import java.util.HashMap;
import wyf.ytl.R;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.SoundPool;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
/**
*
* 主游戏界面
*
*/
public class GameView extends SurfaceView implements SurfaceHolder.Callback{
int selectMap = 1;//第几关
PlaneActivity activity;
private TutorialThread thread;//刷帧的线程
GameViewBackGroundThread gameThread;//背景滚动线程
KeyThread keyThread;//键盘监听线程
MoveThread moveThread;//移动物体的线程
ExplodeThread explodeThread;//爆炸换帧的线程
int backGroundIX = 0;//核心图的x坐标
int i = 0;//核心图的索引
int cloudX = 470;//云彩的X坐标
Bitmap battleback;//背景的大图元
Bitmap[] battlebacks = new Bitmap[ConstantUtil.pictureCount];//装分割以后的图片
Bitmap cloud;//云彩
Bitmap enemyPlane1;//敌机1
Bitmap enemyPlane2;//敌机2
Bitmap enemyPlane3;//敌机3
Bitmap enemyPlane4;//敌机4
Bitmap[] number = new Bitmap[10];//数字数组
int[] explodesID = new int[]{//爆炸的所有帧
R.drawable.explode1,
R.drawable.explode2,
R.drawable.explode3,
R.drawable.explode4,
R.drawable.explode5,
R.drawable.explode6,
};
Bitmap[] explodes = new Bitmap[explodesID.length];//爆炸的数组
Bitmap hullBackground;//显示生命的背景图片
Bitmap hull;//生命的图片
Bitmap life;//血块的图片
Bitmap changebullet;
int status = 1;//游戏的状态1表示游戏中,2表示游戏失败即我方飞机没有了生命
Paint paint;//画笔
Plane plane = new Plane(50, 140, 1, 0, ConstantUtil.life, this);//初始化我方飞机
ArrayList<Bullet> badBollets = new ArrayList<Bullet>();//敌方飞机发出的子弹
ArrayList<Bullet> goodBollets = new ArrayList<Bullet>();//我方飞机发出的子弹
ArrayList<Explode> explodeList = new ArrayList<Explode>();//爆炸
ArrayList<ChangeBullet> changeBollets = new ArrayList<ChangeBullet>();//吃了改变枪的物体
ArrayList<EnemyPlane> enemyPlanes;//敌方的飞机
ArrayList<Life> lifes;//存放血块
SoundPool soundPool;//声音
HashMap<Integer, Integer> soundPoolMap;
MediaPlayer mMediaPlayer;
public GameView(PlaneActivity activity) {//构造器
super(activity);
this.activity = activity;//activity的引用
initSounds();
mMediaPlayer = MediaPlayer.create(activity, R.raw.gamestart);
mMediaPlayer.setLooping(true);
getHolder().addCallback(this);//注册接口
this.thread = new TutorialThread(getHolder(), this);//初始化刷帧线程
this.gameThread = new GameViewBackGroundThread(this);//初始化背景滚动线程
this.keyThread = new KeyThread(activity);
this.moveThread = new MoveThread(this);
this.explodeThread = new ExplodeThread(this);
if(activity.processView != null){
activity.processView.process += 20;
}
if(this.selectMap == 1){
enemyPlanes = Maps.getFirst();//取第一关的敌机
lifes = Maps.getFirstLife();//取第一关的的血块
changeBollets = Maps.getFirstBollet();//取第一关吃了改变枪的物体列表
}
initBitmap();//初始化所有图片
if(activity.isSound){
mMediaPlayer.start();
}
if(activity.processView != null){
activity.processView.process += 20;
}
}
public void initSounds(){
soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
soundPoolMap = new HashMap<Integer, Integer>();
soundPoolMap.put(1, soundPool.load(getContext(), R.raw.bulletsound1, 1));
soundPoolMap.put(2, soundPool.load(getContext(), R.raw.explode, 1));
if(activity.processView != null){
activity.processView.process += 20;
}
soundPoolMap.put(3, soundPool.load(getContext(), R.raw.dead, 1));
if(activity.processView != null){
activity.processView.process += 20;
}
}
public void playSound(int sound, int loop) {
AudioManager mgr = (AudioManager)getContext().getSystemService(Context.AUDIO_SERVICE);
float streamVolumeCurrent = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
float streamVolumeMax = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = streamVolumeCurrent / streamVolumeMax;
soundPool.play(soundPoolMap.get(sound), volume, volume, 1, loop, 1f);
}
public void initBitmap(){//初始化所有图片
if(activity.processView != null){
activity.processView.process += 20;
}
paint = new Paint();
paint.setColor(Color.BLACK);
battleback = BitmapFactory.decodeResource(getResources(), R.drawable.battleback);//大背景图片
cloud = BitmapFactory.decodeResource(getResources(), R.drawable.cloud);//云彩
for(int i=0; i<battlebacks.length; i++){//切成小图片
battlebacks[i] = Bitmap.createBitmap(battleback, ConstantUtil.pictureWidth*i, 0, ConstantUtil.pictureWidth, ConstantUtil.pictureHeight);
}
battleback = null;//释放掉大图
enemyPlane1 = BitmapFactory.decodeResource(getResources(), R.drawable.plane4);//敌机1的图片
enemyPlane2 = BitmapFactory.decodeResource(getResources(), R.drawable.plane5);//敌机2的图片
enemyPlane3 = BitmapFactory.decodeResource(getResources(), R.drawable.plane6);//敌机3的图片
enemyPlane4 = BitmapFactory.decodeResource(getResources(), R.drawable.plane7);//敌机4的图片
hullBackground = BitmapFactory.decodeResource(getResources(),R.drawable.hullbackground);
hull = BitmapFactory.decodeResource(getResources(), R.drawable.hull);
life = BitmapFactory.decodeResource(getResources(), R.drawable.life);
changebullet = BitmapFactory.decodeResource(getResources(), R.drawable.changebullet);
number[0] = BitmapFactory.decodeResource(getResources(), R.drawable.number0);
number[1] = BitmapFactory.decodeResource(getResources(), R.drawable.number1);
number[2] = BitmapFactory.decodeResource(getResources(), R.drawable.number2);
number[3] = BitmapFactory.decodeResource(getResources(), R.drawable.number3);
number[4] = BitmapFactory.decodeResource(getResources(), R.drawable.number4);
number[5] = BitmapFactory.decodeResource(getResources(), R.drawable.number5);
number[6] = BitmapFactory.decodeResource(getResources(), R.drawable.number6);
number[7] = BitmapFactory.decodeResource(getResources(), R.drawable.number7);
number[8] = BitmapFactory.decodeResource(getResources(), R.drawable.number8);
number[9] = BitmapFactory.decodeResource(getResources(), R.drawable.number9);
for(int i=0; i<explodes.length; i++){//初始化爆炸图片
explodes[i] = BitmapFactory.decodeResource(getResources(), explodesID[i]);
}
for(EnemyPlane ep : enemyPlanes){//为敌机初始化图片
if(ep.type == 1){
ep.bitmap = enemyPlane1;
}
else if(ep.type == 2){
ep.bitmap = enemyPlane2;
}
else if(ep.type == 3){
ep.bitmap = enemyPlane3;
}
else if(ep.type == 4){
ep.bitmap = enemyPlane4;
}
}
for(Life l : lifes){//为血块初始化图片
l.bitmap = life;
}
for(ChangeBullet cb : changeBollets){//为吃了改变枪的物体初始化图片
cb.bitmap = changebullet;
}
}
public void onDraw(Canvas canvas){//自己写的绘制方法,并非重写的
//画的内容是z轴的,后画的会覆盖前面画的
int backGroundIX=this.backGroundIX;
int i=this.i;
int cloudX = this.cloudX;
//解决i左侧的问题
if(backGroundIX>0){
int n=(backGroundIX/ConstantUtil.pictureWidth)+((backGroundIX%ConstantUtil.pictureWidth==0)?0:1);//计算i左面有几幅图
for(int j=1;j<=n;j++){
canvas.drawBitmap(
battlebacks[(i-j+ConstantUtil.pictureCount)%ConstantUtil.pictureCount],
backGroundIX-ConstantUtil.pictureWidth*j,
ConstantUtil.top,
paint
);
}
}
//�
没有合适的资源?快使用搜索试试~ 我知道了~
plane_study.zip_碰撞检测
![preview](https://csdnimg.cn/release/downloadcmsfe/public/img/white-bg.ca8570fa.png)
共165个文件
class:69个
png:56个
java:22个
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 47 浏览量
2022-09-21
18:15:05
上传
评论
收藏 873KB ZIP 举报
温馨提示
一个简单的飞行射击类游戏代码,功能齐全,包括敌机,子弹生成,碰撞检测等功能,不错的学习资料
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JPG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JPG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JPG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JPG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JPG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JPG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
共 165 条
- 1
- 2
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/dabc422b995e4f93b0df429caef6266e_weixin_42656416.jpg!1)
四散
- 粉丝: 54
- 资源: 1万+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)