Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> Android編程之“捏泡泡”游戲

Android編程之“捏泡泡”游戲

編輯:初級開發

從學習搭環境到開發,雖然也遇到些讓人糾結的問題,還好都一一解決了。言歸正轉,這次寫的是一個Demo似的小應用,簡單得不能再簡單了,一共就三個類,主類Bubble繼承於Activity,然後就是Vacuole和Sound類,分別是泡泡對象和聲音的處理,類圖如下:
 

以下是具體的代碼

Bubble類

package randork.game;

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;i

vcl[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();

}

}

Vacuole類

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);

}

}

Sound類

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);

}

}

這是程序運行界面

這篇博文只是說明了一個應用,並不是講解Android開發的基本原理,Android開發的相關還是建議大家看http://developer.android.com/的(需要翻牆過去。。- -!),我這裡只是做了一個小應用,希望對一些像我這樣剛入門的同學能有一些幫助。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved