雷霆战机开发文档Word下载.docx

上传人:b****2 文档编号:5841924 上传时间:2023-05-05 格式:DOCX 页数:12 大小:18.99KB
下载 相关 举报
雷霆战机开发文档Word下载.docx_第1页
第1页 / 共12页
雷霆战机开发文档Word下载.docx_第2页
第2页 / 共12页
雷霆战机开发文档Word下载.docx_第3页
第3页 / 共12页
雷霆战机开发文档Word下载.docx_第4页
第4页 / 共12页
雷霆战机开发文档Word下载.docx_第5页
第5页 / 共12页
雷霆战机开发文档Word下载.docx_第6页
第6页 / 共12页
雷霆战机开发文档Word下载.docx_第7页
第7页 / 共12页
雷霆战机开发文档Word下载.docx_第8页
第8页 / 共12页
雷霆战机开发文档Word下载.docx_第9页
第9页 / 共12页
雷霆战机开发文档Word下载.docx_第10页
第10页 / 共12页
雷霆战机开发文档Word下载.docx_第11页
第11页 / 共12页
雷霆战机开发文档Word下载.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

雷霆战机开发文档Word下载.docx

《雷霆战机开发文档Word下载.docx》由会员分享,可在线阅读,更多相关《雷霆战机开发文档Word下载.docx(12页珍藏版)》请在冰点文库上搜索。

雷霆战机开发文档Word下载.docx

img_shezhi=(ImageView)findViewById(R.id.shezhi);

img_over=(ImageView)findViewById(R.id.over);

4.为三个ImageView对象设置ontouch方法进行操作的实现

img_game.setOnTouchListener(newOnTouchListener()

img_shezhi.setOnTouchListener(newOnTouchListener()

img_over.setOnTouchListener(newOnTouchListener()

5.新建Musicmusic实现菜单音乐的播放与关闭

AssetFileDescriptor

fd=getResources().openRawResourceFd(R.raw.gamebg0)

6.重写onkeyDown方法,实现2次按下返回键退出菜单页面

publicbooleanonKeyDown(intkeyCode,KeyEventevent){

if(keyCode==KeyEvent.KEYCODE_BACK){

if((System.currentTimeMillis()-time)>

2000){

Toast.makeText(getApplicationContext(),"

再按一次退出程序"

Toast.LENGTH_SHORT).show();

time=System.currentTimeMillis();

}else{

finish();

music.stop();

}

returntrue;

returnsuper.onKeyDown(keyCode,event);

}

4.GameMusicActivity界面的开发及设置

1.定义GameMusicActivity,并继承Activity

2.新建gamemusic.xml,并添加三个CheckBox

3.在AndroidManifest.xml中设置

android:

name="

.GameMusicActivity"

android:

theme="

@android:

style/Theme.Dialog"

实现GameMusicActivity为对话框式的Activity

4.去掉GameMusicActivity的标题,实现代码为

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

5.设置GameMusicActivity自定义界面

setContentView(R.layout.gamemusic);

6.新建三个CheckBox对象,获取gamemusic.xml中的三个单选框

music=(CheckBox)findViewById(R.id.checkBox1);

bullet=(CheckBox)findViewById(R.id.checkBox2);

bomb=(CheckBox)findViewById(R.id.checkBox3);

7.为三个CheckBox添加监听器实现三中音效的选择

music.setOnCheckedChangeListener

bullet.setOnCheckedChangeListener

bomb.setOnCheckedChangeListener

5.GameActivity界面的开发及设置

1.定义GameActivity,并继承Activity

2.创建GameView,并继承View

3设置GameMusicActivity自定义界面

GameViewgame=newGameView(this);

setContentView(game);

4.在GameView中实现GameActivity的各种页面布局

6.GameView的主要方法设置

1、绘制向下背景图片

1、建一个GameView类,该类继承View,实现Runnable接口,重写onDraw方法

2、定义一个Bitmap图片类存放背景图片

3、定义一个int类型表示背景移动的速度speed

4、定义一个控制背景的y轴坐标

5、在构造方法中加载背景图片

backMap=BitmapFactory.decodeResource();

6、创建一个缩放的游戏位图,指定宽和高。

backMap=Bitmap.createScaledBitmap(backMap,GameActivity.ScreenW,

GameActivity.ScreenH,true);

//获得屏幕宽高

DisplayMetricsmetrics=newDisplayMetrics();

getWindowManager().getDefaultDisplay().

getMetrics(metrics);

ScreenW=metrics.widthPixels;

ScreenH=metrics.heightPixels;

7、在onDraw中画背景图片

canvas.drawBitmap(backMap,0,-backMap.getHeight()+mapY,null);

//隐藏在屏幕上端的

canvas.drawBitmap(backMap,0,mapY,null);

//显示的

8、在run方法中写一个死循环不断的去改变mapY的速度

while(flag){

mapY+=speed;

postInvalidate();

//再次调用重绘

//判断如果大于的屏幕的高度重置0

if(mapY>

=GameActivity.ScreenH){

mapY=0;

}

try{

Thread.sleep(100);

}catch(InterruptedExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

2、绘制可移动的战机

1、加载战机图片

planeMap=BitmapFactory.decodeResource();

2、定义一个战机类MyPlane

1、通过构造函数传递飞机的图片(为后期画子弹准备)

2、在构造方法中指定飞机的初始位置。

x轴居中:

x=(GameActivity.ScreenW-planeMap.getWidth())/2;

y抽自定义y=GameActivity.ScreenH-planeMap.getHeight()*2;

3、定义一个画飞机的方法

publicvoiddrawPlane(Canvascanvas){

canvas.drawBitmap(bitmap,x,y,null);

}

4、在onDraw方法中调用drawPlane方法传递Canvas参数

3、在GameView重写onTouchEvent方法。

得到当前的触摸的状态以及坐标

//定义如下的全局变量记录触摸的状态

inttouchCode=1;

floatx,y;

touchCode=event.getAction();

x=event.getX();

y=event.getY();

4、在Plane类中添加一个改变飞机位置的方法

定义飞机的偏移坐标

floatdx,dy;

intplane_speed=20;

//战机的移动速度

publicvoidupdatePlane(floatnew_x,floatnew_y){

//计算偏移量的公式

dx=speed*(new_x-x)/(Math.abs(new_x-x)+Math.abs(new_y-y));

dy=speed*(new_y-y)/(Math.abs(new_x-x)+Math.abs(new_y-y));

x+=dx;

y+=dy;

5、在GameView方法中加入一个update方法,加入如下代

码。

在run函数中调用该方法。

//判断当前的触摸状态调用更新飞机位置的方法

if(touchCode==MotionEvent.ACTION_DOWN

||touchCode==MotionEvent.ACTION_MOVE){

plane.updatePlane(touch_x,touch_y);

3、绘制随机向下移动的敌机

1、加载敌机图片

2、创建一个敌机类Enemy定义如下变量

floatxy;

intenemy_speed=15;

Randomran=newRandom();

3、在其构造函数中写如下代码

1、得到加载的图片

2、设置敌机的x和y的初始坐标

x=r.nextInt(GameActivity.screenW-enemy_map.getWidth());

y=-enemy_map.getHeight();

4、定义一个绘制敌机的方法

publicvoiddrawEnemy(Canvascanvas){

canvas.drawBitmap(bitmap,x,y,null);

4、绘制多个敌机

1、定义一个存放敌机的集合

ArrayList<

Enemy>

enemyList=newArrayList<

();

2、敌机增加的定时器在update方法添加如下代码

inttime=0;

time++;

if(time%20==0){

enemyList.add(newEnemy(enyBitmap));

3、在onDraw方法中绘制多个敌机

for(inti=0;

i<

enemyList.size();

i++){

enemyList.get(i).drawEnemy(canvas);

4、在update方法中循环绘更新敌机的位置

for(inti=0;

enemyList.get(i).updateEnemy();

//判断如果敌机的坐标消失在屏幕上则移除

if(enemyList.get(i).y>

GameActivity.ScreenH+enyBitmap.getHeight()){

enemyList.remove(i);

5、碰撞爆炸效果(敌机和战机)

1、判断战机和敌机是否相撞

1、在战机和敌机中都加入一个矩形属性RectF

2、在设置初始的位置的时候都给矩形设置值

rectF_emey.top=y;

rectF_emey.bottom=y+emey_map.getHeight();

rectF_emey.left=x;

rectF_emey.right=x+emey_map.getWidth();

3、在改变位置的时候,也需要设置

4、在循环改变敌机位置的时候去判断战机和敌机的矩形是否有交集。

如果有交集的话则在爆炸的集合中添加一个爆炸类

if(enemyList.get(i).rectF_enemy.intersect(plan.rectF_plane)){

expList.add(newBaozha(expBits,enemyList.get(i).x,enemyList.get(i).y,this));

2、加载爆炸效果的图片

3、对爆炸效果的图片进行分割,放到一个Bitmap数组中

//计算每张图片的宽度

intexpW=0;

Bitmap[]expBits=newBitmap[6];

expW=map_bz.getWidth()/expBits.length;

expBits.length;

expBits[i]=Bitmap.createBitmap(map_bz,expW*i,0,expW,map_bz.getHeight());

4、定义一个爆炸类,其构造方法接收四个参数

ArrayList<

Baozha>

list;

Bitmap[]maps;

floatx,y;

intindex;

5、在爆炸类中有一个方法绘制爆炸图片

if(index<

maps.length){

canvas.drawBitmap(maps[index],x,y,null);

index++;

}else{

index=0;

list.remove(this);

6、在GameView中画出爆炸图片

//定义一个爆炸效果的集合

publicArrayList<

expList=newArrayList<

//循环画出爆炸效果

expList.size();

expList.get(i).drawBaozha(canvas);

7、在判断是否有碰撞的地方添加爆炸效果

如果有交集的话则在爆炸的集合中添加一个爆炸类

if(enemyList.get(i).rectF_enemy.intersect(plan.rectF_plane)){

expList.add(newBaozha(expBits,enemyList.get(i).x,enemyList.get(i).y,this));

enemyList.remove(i);

6、战机发射子弹

1、加载子弹图片

2、创建一个子弹类Bullet,需要的属性如下:

privateBitmapmap_bull;

privatefloatplane_width;

privatefloatx,y;

privateintspeed=15;

privateRectFrectf=newRectF();

3、在构造函数对初始化属性,以及设定x和y的值

this.x=x+(plane_width-map_bull.getWidth())/2;

this.y=y-map_bull.getHeight();

4、创建一个绘制子弹的方法

canvas.drawBitmap(map_bull,x,y,null);

5、添加一个更新子弹位置的方法

y-=speed;

6、设定一个时间间隔,添加一个子弹

if(time%5==0){

bulletList.add(newBullet(map_zd,plan.getX(),plan.getY(),plane.getWidth()));

7、在Gameview中onDraw方法中循环画子弹

添加一个放子弹的集合

Bullet>

bulletList=newArrayList<

bulletList.size();

bulletList.get(i).drawBullet(canvas);

bulletList.get(i).updateBullet();

8、判断子弹是否和敌机相撞,如果相撞则敌机爆炸

aa:

for(inti=0;

enemy_list.size();

for(intj=0;

j<

bullet_list.size();

j++){

if(enemy_list.get(i).getRectF_emey()

.intersect(bullet_list.get(j).getRectF_bull())){

baozha_list.add(newBaozha(baozha_maps,

enemy_list.get(i).getX(),

enemy_list.get(i).getY(),baozha_list));

//分别移除敌机和子弹

enemy_list.remove(i);

bullet_list.remove(j);

breakaa;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2