未命名.jpg  

其實這裡面主要就是三個類:主類Bubble繼承于Activity,然後就是Vacuole和Sound類,分別是泡泡物件和聲音的處理。

 

Java代碼:
package game.demo;

 

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TableLayout;
import android.widget.TableRow;
import randork.game.Sound;
import randork.game.Vacuole;

 

public class Bubble extends Activity {

 

private int cellCount=7;

 

private int rowCount=9;

 

private Vacuole[] vcl=new Vacuole[cellCount * rowCount];

 

private TableRow[] rows=new TableRow[rowCount];

 

private Sound sound;

 

public void onCreate(Bundle savedInstanceState) {

 

super.onCreate(savedInstanceState);

 

setContentView(R.layout.stage);

 

sound=new Sound(this);

 

initRender();

 

}

 

public boolean onCreateOptionsMenu(Menu menu) {

 

boolean result = super.onCreateOptionsMenu(menu);

 

menu.add(0,0,0,"重玩");

 

menu.add(0,1,1,"關於...");

 

menu.add(0,2,2,"退出");

 

return result;

 

}

 

public boolean onOptionsItemSelected(MenuItem item) {

 

switch (item.getItemId()) {

 

case 0:



reset();

 

return false;

 

case 1:

 

about();

 

return false;

 

case 2:

 

destory();

 

return false;

 

default:

 

return false;

 

}

 

}

 

public void onBackPressed(){

 

destory();

 

super.onBackPressed();

 

}





/**
* 重新開始
*/
public void reset(){

 

int i,l=vcl.length;

 

for(i=0;ivcl[i].reset();

 

}

 

}



/**
* 銷毀物件,釋放資源
*/
public void destory(){

 

sound.destroy();

 

this.finish();

 

}



/**
* 初始化每一行的泡泡
*/

 

private void initRows(){

 

int i,l=rowCount;

 

TableLayout container=(TableLayout)findViewById(R.id.container2);

 

for(i=0;i

 

rows[i]=new TableRow(this);

 

container.addView(rows[i]);

 

}

 

}





/**
* 初始化內容的呈現
*/

 

private void initRender(){



int cr,i,l=vcl.length;

 

initRows();

 

for(i=0;i

 

cr=(int)Math.ceil(i/cellCount);

 

vcl[i]=new Vacuole(this,sound);

 

rows[cr].addView(vcl[i].renderer, 46, 46);

 

}

 

}




/**
* about對話方塊的定義
*/

 

private void about(){

 

Dialog dialog = new Dialog(this);

 

dialog.setContentView(R.layout.about);

 

dialog.setTitle("隨機出品");

 

dialog.show();

 

}

 

}
複製代碼
Java代碼:
package randork.game;

 

import android.content.Context;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import randork.game.Sound;

 

public class Vacuole {

 

public ImageView renderer;

 

public boolean isBombed=false;

 

private int idx=(int)Math.ceil(Math.random()*6)-1;

 

private Context context;

 

private Sound sound;




/**
* 定義點擊的事件
*/

 

private OnTouchListener mCorkyListener = new OnTouchListener() {

 

@Override
public boolean onTouch(View v, MotionEvent event) {

 

if(event.getAction()==MotionEvent.ACTION_DOWN){

 

bomb();

 

}

 

return false;

 

}

 

};




/**
* 爆炸後的泡泡圖片資源
*/

 

private int intBombImages[]={

 

R.drawable.bomb1,

 

R.drawable.bomb2,

 

R.drawable.bomb3,

 

R.drawable.bomb4,

 

R.drawable.bomb5,

 

R.drawable.bomb6

 

};

 

public Vacuole(Context c,Sound sd){

 

context=c;

 

sound=sd;

 

initRenderer();

 

}



/**
* 泡泡爆炸,會隨機地顯示一個資源中的爆炸後的圖片,並播放聲音
*/

 

public void bomb(){

 

if(isBombed){

 

return;

 

}

 

renderer.setImageResource(intBombImages[idx]);

 

sound.play();

 

isBombed=true;

 

}





/**
* 重新開始
*/

 

public void reset(){

 

isBombed=false;

 

renderer.setImageResource(R.drawable.normal);

 

}



/**
* 初始化泡泡圖形的呈現
*/

 

private void initRenderer(){

 

renderer=new ImageView(context);

 

renderer.setPadding(2, 2, 2, 2);

 

renderer.setImageResource(R.drawable.normal);

 

renderer.setOnTouchListener(mCorkyListener);



}

 

}
複製代碼
Java代碼:
package randork.game;

 

import android.content.Context;
import android.media.MediaPlayer;

 

public class Sound {

 

private MediaPlayer mPlayers[]=new MediaPlayer[6];

 

private Context context;

 

public Sound(Context c){

 

context=c;

 

initMPlayers();

 

}



/**
* 隨機播放一個爆炸的聲音
*/

 

public void play(){

 

int idx=(int)Math.ceil(Math.random()*6)-1;

 

mPlayers[idx].start();

 

}



/**
* 釋放mPlayer
*/

 

public void destroy(){

 

int i,l=mPlayers.length;

 

for(i=0;i

 

mPlayers[i].release();

 

}

 

}




/**
* 初始化播放聲音物件陣列
*/

 

private void initMPlayers(){

 

mPlayers[0]=MediaPlayer.create(context,R.raw.sound1);

 

mPlayers[1]=MediaPlayer.create(context,R.raw.sound2);

 

mPlayers[2]=MediaPlayer.create(context,R.raw.sound3);

 

mPlayers[3]=MediaPlayer.create(context,R.raw.sound4);

 

mPlayers[4]=MediaPlayer.create(context,R.raw.sound5);

 

mPlayers[5]=MediaPlayer.create(context,R.raw.sound6);

 

}

 

}
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()