您好,登錄后才能下訂單哦!
利用Android開發(fā)一個掃雷小游戲?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
具體內(nèi)容如下
先看效果圖:
初始游戲界面:
翻開塊和標(biāo)記塊界面:
游戲結(jié)束界面:
菜單界面:
更換難度界面:
查看游戲記錄界面:
代碼分析
Block.java
這部分代碼實現(xiàn)的是游戲界面的板塊
設(shè)置四個變量來記錄當(dāng)前塊是否被翻開,當(dāng)前塊是否是地雷,是否把當(dāng)前快標(biāo)記為地雷(也就是插旗子),當(dāng)前塊周圍的地雷數(shù)量。
關(guān)鍵部分代碼:
//設(shè)置翻開狀態(tài) public void setNumberOfSurroundingMines(int number) { this.setBackgroundResource(R.drawable.selected);//設(shè)置翻開背景圖 updateNumber(number);//設(shè)置周圍雷數(shù) } //添加雷塊標(biāo)識 public void setMineIcon() { this.setBackgroundResource(R.drawable.dl); } //添加標(biāo)記標(biāo)識 public void setFlagIcon(boolean enabled) { if (!enabled) { this.setBackgroundResource(R.drawable.hq); } else { this.setTextColor(Color.BLACK); } } //清除所有標(biāo)記 public void clearAllIcons() { this.setText(""); this.setTextColor(R.drawable.unselected); } private void setBoldFont() { this.setTypeface(null, Typeface.BOLD); } //翻開方塊 public void OpenBlock() { if (!isCovered) { return; } isCovered = false; //如果為雷設(shè)置地雷標(biāo)識 if (hasMine()) { setMineIcon(); } else { setNumberOfSurroundingMines(numberOfMinesInSurrounding);//根據(jù)周圍雷數(shù)設(shè)置翻開狀態(tài)及顯示數(shù)字 } }
LevelActivity
這部分把玩家選擇的難度easy或hard傳遞給MenuActivity
package com.example.saolei; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; public class LevelActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_level); } /*根據(jù)不同難度返回相應(yīng)參數(shù)*/ public void Easy(View view) { Intent data = new Intent(); data.putExtra("result", "easy"); setResult(2, data); finish(); } public void Hard(View view) { Intent data = new Intent(); data.putExtra("result", "hard"); setResult(2, data); finish(); } public void Return(View view) { Intent data = new Intent(); data.putExtra("result", ""); setResult(2, data); finish(); } }
MenuActivity
這部分是菜單頁面,包括難度選擇和游戲記錄的查看
這里接收難度選擇界面?zhèn)骰氐膮?shù)并將其傳回主界面處理
package com.example.saolei; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; public class MenuActivity extends AppCompatActivity { String t = "easy"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_menu); } @Override //接收難度界面?zhèn)骰氐膮?shù)并將其傳回主界面處理 protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == 2) { Intent level = new Intent(); t = data.getStringExtra("result"); level.putExtra("result", t); setResult(1, data); finish(); } } //點擊新游戲按鈕,將結(jié)果傳回主界面 public void NewGame(View view) { Intent data = new Intent(); data.putExtra("result", "newgame"); setResult(1, data); finish(); } //點擊改變難度按鈕,啟動難度選擇界面 public void ChangeLevel(View view) { Intent level = new Intent(MenuActivity.this, LevelActivity.class); startActivityForResult(level, 2); } //點擊游戲記錄按鈕,顯示記錄 public void Record(View view) { String filename = getExternalCacheDir().getAbsolutePath() + "/gamerecord.txt";//文件路徑 File file = new File(filename); Scanner inputStream = null; FileInputStream fis = null; BufferedReader br = null; String str; String message = " " + "級別" + " " + "勝負" + " " + "時間\n"; //若文件不存在,顯示暫無記錄 if (!file.exists()) { new AlertDialog.Builder(this) .setMessage("暫無記錄!") .setNegativeButton("確定", null) .create().show(); } else { try { //讀取文件記錄并生成對話框顯示 inputStream = new Scanner(new FileInputStream(filename)); int i = 1; fis = new FileInputStream(filename); br = new BufferedReader(new InputStreamReader(fis)); while ((str = br.readLine()) != null) { message = message + (i + ". " + str + "\n"); i++; } new AlertDialog.Builder(this) .setMessage(message) .setNegativeButton("確定", null) .create().show(); fis.close(); br.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { inputStream.close(); } } } //點擊返回按鈕,回傳結(jié)果到主界面 public void Return1(View view) { Intent data = new Intent(); data.putExtra("result", "start"); setResult(1, data); finish(); } }
關(guān)于利用Android開發(fā)一個掃雷小游戲問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。