Android--小遊戲

GitHub:https://github.com/vinieo/game

功能描述

  「猜小球」是一個簡單的愉悅身心的小遊戲,它的功能結構如圖a-1所示。java

構建開發環境

在開發本遊戲時,首先須要下載安裝Android SDK 4.3,設置系統屬性環境變量,啓動Eclipse,建立和配置AVD模擬器,建立Android應用程序。android

準備資源

在實現本遊戲前,首先須要準備遊戲中所需的圖片資源,包括遊戲背景圖片、圖標、默認顯示的杯子、有小球的杯子和沒有小球的杯子5張圖片,如圖a-2所示。把它們放置在項目根目錄的res/drawable-mdpi文件夾中。git

              

  background.png    cup_default.png cup_ok.png   cup_sorry.png       ic_launcher.pnggithub

以後系統將自動在gen目錄下的com.example_game包中的R.java文件中添加對應的圖片和id。打開R.java文件,能夠看到下面圖片id。數組

public static final int background=0x7f020000;

public static final int cup_default=0x7f020001;

public static final int cup_ok=0x7f020002;

public static final int cup_sorry=0x7f020003;

public static final int ic_launcher=0x7f020004;

業務流程

當玩家開始遊戲時,屏幕將顯示3個杯子,單擊其中的任意一個杯子,程序判斷該杯子中是否有小球,而且打開杯子顯示結果,有小球顯示猜對了,沒有則顯示猜錯了詢問是否再玩一次,此時可經過單擊「再玩一次」按鈕從新開始遊戲。具體系統流程如圖a-3所示。dom

實現過程this

實現遊戲規則的代碼所有編寫在主活動的MainActivity中:spa

(1)  在主活動MainActivity中,定義一個保存所有圖片ID的數組、3個ImageView類型的對象和一個TextView類型的對象。具體代碼以下:調試

//顯示結果
private TextView text; 
// ImageView組件
private ImageView pic0;  
private ImageView pic1;  
private ImageView pic2;  
//定義一個保存所有圖片ID的數組
int[] imageIds = new int[]{R.drawable.cup_ok,
R.drawable.cup_sorry,R.drawable.cup_sorry};

(2)  編寫一個無返回值的方法replay(),用於隨機指定小球所在的杯子。具體代碼以下:code

public void replay() {    
        for (int i = 0; i < 3; i++) {  
// 將數組元素i保存到臨時變量中
            int temp = imageIds[i];  
// 生成2之內的隨機整數
            int index = (int) (Math.random() * 2);  
// 將隨機數指定的數組元素的內容賦給數組元素i  
            imageIds[i] = imageIds[index]; 
// 將臨時變量的值賦值給隨機數組指定的那個數組元素  
            imageIds[index] = temp; 
        }  
}

(3)  編寫Drawable資源對應的XML文件button_state.xml,用於設置當鼠標按下時顯示的圖片,以及鼠標沒有按下時顯示的圖片。具體代碼以下:

//獲取ImageView組件
pic0 = (ImageView) findViewById(R.id.pic0);  
pic1 = (ImageView) findViewById(R.id.pic1); 
pic2 = (ImageView) findViewById(R.id.pic2);
//獲取TextView組件
text = (TextView) findViewById(R.id.text);  
//開局先將杯子順序打亂
replay();

(4)  爲3個顯示杯子的ImageView組件添加單擊事件監聽器,用於將杯子打開,並顯示猜猜看的結果。具體代碼以下:

//爲杯子添加單擊事件監聽
pic0.setOnClickListener(this);  
pic1.setOnClickListener(this);  
pic2.setOnClickListener(this);

(5)  編寫onClick()方法,用於顯示打開的杯子,並顯示判斷結果。具體代碼以下:

public void onClick(View view) {  
        switch (view.getId()) {  
            //設置已打亂順序的杯子圖片
case R.id.pic0:  
      pic0.setImageDrawable(getResources().getDrawable(imageIds[0]));
      pic1.setImageDrawable(getResources().getDrawable(imageIds[1]));
      pic2.setImageDrawable(getResources().getDrawable(imageIds[2])); //判斷是否猜中有小球的杯子           if (imageIds[0] == R.drawable.cup_ok) { text.setText("恭喜你,猜對了,祝你幸福!"); } else text.setText("很抱歉,猜錯了,要不要再試一次?"); break; case R.id.pic1:
             pic0.setImageDrawable(getResources().getDrawable(imageIds[0]));
             pic1.setImageDrawable(getResources().getDrawable(imageIds[1]));
             pic2.setImageDrawable(getResources().getDrawable(imageIds[2])); if (imageIds[1] == R.drawable.cup_ok) { text.setText("恭喜你,猜對了,祝你幸福!"); } else text.setText("很抱歉,猜錯了,要不要再試一次?"); break; case R.id.pic2:
    pic0.setImageDrawable(getResources().getDrawable(imageIds[0]));
           pic1.setImageDrawable(getResources().getDrawable(imageIds[1]));              pic2.setImageDrawable(getResources().getDrawable(imageIds[2])); if (imageIds[2] == R.drawable.cup_ok) { text.setText("恭喜你,猜對了,祝你幸福!"); } else text.setText("很抱歉,猜錯了,要不要再試一次?"); break; case R.id.butplay: replay(); default: break; } }

(6)  獲取「再玩一次」按鈕,併爲該按鈕添加單擊事件監聽器。在其單擊事件中,將標題和3個ImageView的圖像恢復爲默認值。具體代碼以下:

//獲取「再玩一次」按鈕
Button butplay = (Button) findViewById(R.id.butplay); 
//爲「再玩一次」按鈕添加事件監聽器
butplay.setOnClickListener(this);  

public void replay() {  
//點擊再玩一次,恢復原有標題和杯子圖片  
  text.setText(R.string.cup);
  pic0.setImageDrawable(getResources().getDrawable(R.drawable.cup_default));
  pic1.setImageDrawable(getResources().getDrawable(R.drawable.cup_default));
  pic2.setImageDrawable(getResources().getDrawable(R.drawable.cup_default)); }
(7)  在AndroidManifest.xml中設置activity讓遊戲橫屏顯示。具體代碼以下:
android:screenOrientation="landscape"

運行調試

項目開發完成後,就能夠在模擬器中運行該項目了。成功運行後將顯示如圖a-4遊戲主界面。單擊其中的任意一個杯子,將打開杯子顯示裏面是否有小球,根據單擊的杯子裏面是否有小球顯示對應的結果。

圖a-4

例如單擊中間的杯子,若是小球在這個杯子裏,將顯示如圖a-5所示的運行結果;不然,將顯示如圖a-6所示的效果。單擊「再玩一次」按鈕,從新開始遊戲。

            

圖a-5                                 圖a-6

參考文獻

[1]李文琴,李翠霞編著.Android開發與實踐.2014.8.

相關文章
相關標籤/搜索