android平台俄罗斯方块游戏完整代码.docx

上传人:b****4 文档编号:4380425 上传时间:2022-12-01 格式:DOCX 页数:37 大小:257.58KB
下载 相关 举报
android平台俄罗斯方块游戏完整代码.docx_第1页
第1页 / 共37页
android平台俄罗斯方块游戏完整代码.docx_第2页
第2页 / 共37页
android平台俄罗斯方块游戏完整代码.docx_第3页
第3页 / 共37页
android平台俄罗斯方块游戏完整代码.docx_第4页
第4页 / 共37页
android平台俄罗斯方块游戏完整代码.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

android平台俄罗斯方块游戏完整代码.docx

《android平台俄罗斯方块游戏完整代码.docx》由会员分享,可在线阅读,更多相关《android平台俄罗斯方块游戏完整代码.docx(37页珍藏版)》请在冰豆网上搜索。

android平台俄罗斯方块游戏完整代码.docx

android平台俄罗斯方块游戏完整代码

整个游戏我分为10个java文件:

先是俄罗斯方块的形状存储statefang.java,代码如下:

packagecom.example.eluosifangkuai;publicclassstatefang{//方块的逻辑类publicstaticint[][][]state=newi

整个游戏我分为10个java文件:

先是俄罗斯方块的形状存储statefang.java,代码如下:

packagecom.example.eluosifangkuai;

publicclassstatefang{//方块的逻辑类

publicstaticint[][][]state=newint[][][]{

 {//I

 {0,0,1,0},{0,0,1,0},{0,0,1,0},{0,0,1,0}},{//I1

 {0,0,0,0},{0,0,0,0},{0,0,0,0},{1,1,1,1}},{//I2

 {0,0,1,0},{0,0,1,0},{0,0,1,0},{0,0,1,0}},{//I3

 {0,0,0,0},{0,0,0,0},{0,0,0,0},{1,1,1,1}},{//I4

 {0,0,0,0},{0,0,0,0},{0,1,1,0},{0,1,1,0}},{//O5

 {0,0,0,0},{0,0,0,0},{0,1,1,0},{0,1,1,0}},{//O6

 {0,0,0,0},{0,0,0,0},{0,1,1,0},{0,1,1,0}},{//O7

 {0,0,0,0},{0,0,0,0},{0,1,1,0},{0,1,1,0}},{//O8

 {0,0,0,0},{0,1,0,0},{0,1,0,0},{0,1,1,0}},{//L9

 {0,0,0,0},{0,0,0,0},{1,1,1,0},{1,0,0,0}},{//L10

 {0,0,0,0},{0,1,1,0},{0,0,1,0},{0,0,1,0}},{//L11

 {0,0,0,0},{0,0,0,0},{0,0,1,0},{1,1,1,0}},{//L12

 {0,0,0,0},{0,0,1,0},{0,0,1,0},{0,1,1,0}},{//J13

 {0,0,0,0},{0,0,0,0},{1,0,0,0},{1,1,1,0}},{//J14

 {0,0,0,0},{0,1,1,0},{0,1,0,0},{0,1,0,0}},{//J15

 {0,0,0,0},{0,0,0,0},{1,1,1,0},{0,0,1,0}},{//J16

 {0,0,0,0},{0,0,0,0},{0,1,0,0},{1,1,1,0}},{//T17

 {0,0,0,0},{0,0,1,0},{0,1,1,0},{0,0,1,0}},{//T18

 {0,0,0,0},{0,0,0,0},{1,1,1,0},{0,1,0,0}},{//T19 

 {0,0,0,0},{1,0,0,0},{1,1,0,0},{1,0,0,0}},{//T20

 {0,0,0,0},{0,0,0,0},{0,1,1,0},{1,1,0,0}},{//S21

 {0,0,0,0},{0,1,0,0},{0,1,1,0},{0,0,1,0}},{//S22

 {0,0,0,0},{0,0,0,0},{0,1,1,0},{1,1,0,0}},{//S23

 {0,0,0,0},{0,1,0,0},{0,1,1,0},{0,0,1,0}},{//Z24

 {0,0,0,0},{0,0,0,0},{1,1,0,0},{0,1,1,0}},{//Z25

 {0,0,0,0},{0,0,1,0},{0,1,1,0},{0,1,0,0}},{//Z26

 {0,0,0,0},{0,0,0,0},{1,1,0,0},{0,1,1,0}},{//Z27

 {0,0,0,0},{0,0,1,0},{0,1,1,0},{0,1,0,0}}//28

 

};

}

我们当然还要编写音乐播放类,资源播放类了等等。

我把所有的图片资源编写在一个类里面,叫做GameResources.java,具体代码如下:

packagecom.example.eluosifangkuai;

importandroid.content.Context;

importandroid.content.res.Resources;

importandroid.graphics.Bitmap;

importandroid.graphics.Canvas;

importandroid.graphics.Bitmap.Config;

importandroid.graphics.Paint;

importandroid.graphics.drawable.Drawable;

publicclassGameResources{

Resourcesm_Resources;//资源类

Canvasm_Canvas; //画布

Bitmapm_Bitmaphc=null;//缓冲位图

Bitmapm_Bitmap01=null;//图像位图

Bitmap[]m_Bitmaps=newBitmap[8];//精灵位图

Bitmapscore;//分数位图

BitmapPlay; //开始位图

BitmapLevel;

publicGameResources(Contextcontext)//初始化装载位图

{

 m_Resources=context.getResources();

for(inti=0;i<7;i++)

{

 m_Bitmaps[i]=createImage(m_Resources.getDrawable(R.drawable.cube_960_011+i),18,18);

}

m_Bitmap01=createImage(m_Resources.getDrawable(R.drawable.bgcatcher),320,480);

m_Bitmaps[7]=createImage(m_Resources.getDrawable(R.drawable.main11),320,402);

score=createImage(m_Resources.getDrawable(R.drawable.score),87,150);

Play=createImage(m_Resources.getDrawable(R.drawable.b7),320,480);

Level=createImage(m_Resources.getDrawable(R.drawable.levelup),139,88);

m_Bitmaphc=Bitmap.createBitmap(320,480,Config.ARGB_8888);

m_Canvas=newCanvas(m_Bitmaphc);

bitmapB();

}

publicvoidbitmapB()

{

 Paintm_Paint=newPaint();

 m_Paint.setAntiAlias(true);

 m_Paint.setAlpha(220);

 m_Canvas.drawBitmap(m_Bitmap01,0,0,null);  

}

publicstaticBitmapcreateImage(Drawabletile,intw,inth){//双缓冲加载位图资源

 Bitmapbitmap=Bitmap.createBitmap(w,h,Bitmap.Config.ARGB_8888);

 Canvascanvas=newCanvas(bitmap);

 tile.setBounds(0,0,w,h);

 tile.draw(canvas);

 returnbitmap;

}

}

音乐播放类,MusicPlay.java具体代码如下:

packagecom.example.eluosifangkuai;

importjava.util.HashMap;

importjava.util.Map;

importandroid.content.Context;

importandroid.media.AudioManager;

importandroid.media.MediaPlayer;

importandroid.media.SoundPool;

publicclassMusicPlay{

publicstaticMediaPlayerm_MediaPlay;//背景播放器

publicstaticMediaPlayerm_MenuPlay;

publicstaticSoundPoolsoundPool;//声明音效播放器

publicMediaPlayerm_FastDown;

 

privatestaticbooleanmusicSwitch=true;//音乐开关

privatestaticbooleansoundSwitch=true;//音效开关

privatestaticMapsoundMap;//音效资源id与加载过后的音源id的映射关系表

privatestaticContextcontext;

 

publicstaticvoidinItMusicPlay(Contextc){

 context=c;

 }

publicstaticvoidinItMenuMusicPlay(Contextc){

 context=c;

 }

 //初始化背景播放器

publicstaticvoidBgMediaplayer()

{

 m_MediaPlay=MediaPlayer.create(context,R.raw.gamebg);

 m_MediaPlay.setLooping(true);

}

publicstaticvoidmenuMusic()

{

 m_MenuPlay=MediaPlayer.create(context,R.raw.menubg);

 m_MenuPlay.setLooping(true);

}

 publicstaticvoidpauseMusic()

 {

 if(m_MediaPlay.isPlaying())

 {

  m_MediaPlay.pause();

 }

}

 publicstaticvoidpauseMenuMusic()

 {

 if(m_MenuPlay.isPlaying())

 {

  m_MenuPlay.pause();

 }

}

 publicstaticvoidstartMusic(){

 if(musicSwitch){

 m_MediaPlay.start();

 }

}

 publicstaticvoidstartMenuMusic(){

 if(musicSwitch){

 m_MenuPlay.start();

 }

}

 publicstaticvoidreleaseMusic(){

 if(m_MediaPlay!

=null){

 m_MediaPlay.release();

 }

}

 publicstaticvoidreleaseMenuMusic(){

 if(m_MenuPlay!

=null)

 {

 m_MenuPlay.release();

 }

}

//设置音乐开关

publicstaticvoidsetMusicSwitch(booleanmusicSwitch){

 MusicPlay.musicSwitch=musicSwitch;

 if(MusicPlay.musicSwitch){

 m_MediaPlay.start();

 }

 else{

 m_MediaPlay.stop();

 }

}

publicstaticvoidinItSound()

{

 soundPool=newSoundPool(8,AudioManager.STREAM_MUSIC,0);

 soundMap=newHashMap();

 //将音效资源加入soundPool,并做成soundMap映射

 soundMap.put(R.raw.action,soundPool.load(context,R.raw.action,1));

 soundMap.put(R.raw.fastdown,soundPool.load(context,R.raw.fastdown,1));

 soundMap.put(R.raw.rotation,soundPool.load(context,R.raw.rotation,1));

 soundMap.put(R.raw.down,soundPool.load(context,R.raw.down,1));

 soundMap.put(R.raw.delete1,soundPool.load(context,R.raw.delete1,1));

 soundMap.put(R.raw.delete2,soundPool.load(context,R.raw.delete2,1));

 soundMap.put(R.raw.delete3,soundPool.load(context,R.raw.delete3,1));

 soundMap.put(R.raw.delete4,soundPool.load(context,R.raw.delete4,1));

}

  publicstaticintplaySound(intresId,intloop)

  {

 

 if(!

soundSwitch){

 return0;

 }

 

 IntegersoundId=soundMap.get(resId);

   if(soundId!

=null)

   {

   returnsoundPool.play(soundId,1,1,1,loop,1);

   }

   else

   {

   return0;

   }

  }

  publicstaticvoidreleaseSound(){

 if(soundPool!

=null){

  soundPool.release();

 }

 }

}

另外我还编写了一个图片按钮类,名为ImageButton.java具体代码如下:

packagecom.example.eluosifangkuai;

importjava.io.InputStream;

importandroid.content.Context;

importandroid.graphics.Bitmap;

importandroid.graphics.BitmapFactory;

importandroid.graphics.Canvas;

importandroid.graphics.Paint;

publicclassImageButton{

  //按钮图片

  privateBitmapmBitButton=null;

  

  //图片绘制的XY坐标

  privateintmPosX=0;

  privateintmPosY=0;

  //图片绘制的宽高

  privateintmWidth=0;

  privateintmHeight=0;

 

  publicImageButton(Contextcontext,intframeBitmapID,intx,inty){

 mBitButton=ReadBitMap(context,frameBitmapID);

 mPosX=x;

 mPosY=y;

 mWidth=mBitButton.getWidth();

 mHeight=mBitButton.getHeight();

  }

  //绘制图片按钮

  publicvoidDrawImageButton(Canvascanvas,Paintpaint){

 canvas.drawBitmap(mBitButton,mPosX,mPosY,paint);

  }

  

  

 //判断是否点中图片按钮

  publicbooleanIsClick(intx,inty){

 booleanisClick=false;

 if(x>=mPosX&&x<=mPosX+mWidth&&y>=mPosY

 &&y<=mPosY+mHeight){

  isClick=true;

 }

 returnisClick;

  }

  

  

  //读取图片资源

  

  publicBitmapReadBitMap(Contextcontext,intresId){

 BitmapFactory.Optionsopt=newBitmapFactory.Options();

 opt.inPreferredConfig=Bitmap.Config.RGB_565;

 opt.inPurgeable=true;

 opt.inInputShareable=true;

 

 //获取资源图片

 

 InputStreamis=context.getResources().openRawResource(resId);

 returnBitmapFactory.decodeStream(is,null,opt);

 

  }

}

下面是显示开始图片按钮MenuView.java,代码如下:

packagecom.example.eluosifangkuai;

importandroid.content.Context;

importandroid.graphics.Canvas;

importandroid.view.View;

publicclassMenuViewextendsView{

 ImageButtonm_ImageButton_Play;//开始播放按钮

 ImageButtonm_ImageButton_Play_a;

 ImageButtonm_bg; //背景图片

publicMenuView(Contextcontext){//初始化工作

 super(context);

 m_bg=newImageButton(context,R.drawable.b7,0,0);

 m_ImageButton_Play=newImageButton(context,R.drawable.play,62,136);

 m_ImageButton_Play_a=newImageButton(context,R.drawable.play1,62,136);

}

 publicvoidonDraw(Canvascanvas)//画布中显示位图

 {

 m_bg.DrawImageButton(canvas,null);

 m_ImageButton_Play.DrawImageButton(canvas,null);

 

 }

}

还有一个启动活动类,MainActivity.java代码为:

packagecom.example.eluosifangkuai;

importandroid.os.Bundle;

importandroid.os.Handler;

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.util.Log;

importandroid.view.Window;

importandroid.view.WindowManager;

publicclassMainActivityextendsActivity{

 privatestaticfinalintGOTO_MAIN_ACTIVITY=0;//发送消息参数

 privateHandlermHandler=newHandler(){ //消息推送类

   publ

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

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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1