Android实现扫雷小游戏
程序员文章站
2022-04-02 23:08:21
本文实例为大家分享了android实现扫雷小游戏的具体代码,供大家参考,具体内容如下先看效果图:初始游戏界面:翻开块和标记块界面:游戏结束界面:菜单界面:更换难度界面:查看游戏记录界面:代码分析blo...
本文实例为大家分享了android实现扫雷小游戏的具体代码,供大家参考,具体内容如下
先看效果图:
初始游戏界面:
翻开块和标记块界面:
游戏结束界面:
菜单界面:
更换难度界面:
查看游戏记录界面:
代码分析
block.java
这部分代码实现的是游戏界面的板块
设置四个变量来记录当前块是否被翻开,当前块是否是地雷,是否把当前快标记为地雷(也就是插旗子),当前块周围的地雷数量。
关键部分代码:
//设置翻开状态 public void setnumberofsurroundingmines(int number) { this.setbackgroundresource(r.drawable.selected);//设置翻开背景图 updatenumber(number);//设置周围雷数 } //添加雷块标识 public void setmineicon() { this.setbackgroundresource(r.drawable.dl); } //添加标记标识 public void setflagicon(boolean enabled) { if (!enabled) { this.setbackgroundresource(r.drawable.hq); } else { this.settextcolor(color.black); } } //清除所有标记 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; //如果为雷设置地雷标识 if (hasmine()) { setmineicon(); } else { setnumberofsurroundingmines(numberofminesinsurrounding);//根据周围雷数设置翻开状态及显示数字 } }
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); } /*根据不同难度返回相应参数*/ 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
这部分是菜单页面,包括难度选择和游戏记录的查看
这里接收难度选择界面传回的参数并将其传回主界面处理
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 //接收难度界面传回的参数并将其传回主界面处理 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(); } } //点击新游戏按钮,将结果传回主界面 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(); } } } //点击返回按钮,回传结果到主界面 public void return1(view view) { intent data = new intent(); data.putextra("result", "start"); setresult(1, data); finish(); } }
mainactivity
这部分是主体内容,包括游戏初始化,雷区的创建,游戏胜负的判定,游戏结果的存档等
这部分比较长,就不贴代码了
最后附上
更多有趣的经典小游戏实现专题,分享给大家:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 通过5G和Wi-Fi6促进物联网增长