温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
  • 忘记密码?
登录注册×
获取短信验证码
其他方式登录
点击 登录注册 即表示同意 《亿速云用户服务条款》
  • 服务器
  • 数据库
  • 开发技术
  • 网络安全
  • 互联网科技
登 录 注册有礼
最新更新 网站标签 地图导航
产品
  • 首页 > 
  • 教程 > 
  • 开发技术 > 
  • 利用Android开发一个扫雷小游戏

利用Android开发一个扫雷小游戏

发布时间:2020-11-17 14:35:41 来源:亿速云 阅读:380 作者:Leah 栏目: 开发技术

利用Android开发一个扫雷小游戏?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

具体内容如下

先看效果图:

初始游戏界面:

利用Android开发一个扫雷小游戏

翻开块和标记块界面:

利用Android开发一个扫雷小游戏

游戏结束界面:

利用Android开发一个扫雷小游戏

菜单界面:

利用Android开发一个扫雷小游戏

更换难度界面:

利用Android开发一个扫雷小游戏

查看游戏记录界面:

利用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();
  }
}

关于利用Android开发一个扫雷小游戏问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节
推荐阅读:
  1. C++实现一个扫雷小游戏
  2. 利用C语言实现一个扫雷小游戏

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

android 扫雷 roi
  • 上一篇新闻:
    列表中元素的下标使用Python如何实现查找
  • 下一篇新闻:
    利用python如何实现随机取list中值

猜你喜欢

  • ubuntu如何对外网开放端口
  • 怎么注册海外接口域名
  • 国外域名网站如何注册
  • 企业官网域名注册用什么后缀
  • ubuntu怎么查看开放端口
  • ubuntu如何查看端口信息
  • ubuntu如何安装linux驱动程序
  • 注册域名之后为什么要解析
  • ubuntu怎么开放80端口
  • 注册域名停止解析是什么意思
最新资讯
  • Svelte中的条件渲染和列表渲染是怎样实现的
  • 如何在Svelte应用中实现国际化
  • 如何对Svelte应用进行单元测试和端到端测试
  • 在Svelte中集成第三方库应注意什么
  • Svelte中的响应性原理是什么
  • 如何在Svelte中使用CSS预处理器
  • Svelte中的动画和过渡效果如何实现
  • 如何在Svelte组件之间传递数据和事件
  • 在Svelte中处理表单和用户输入有哪些特殊之处
  • SvelteKit是什么它如何增强Svelte开发
相关推荐
  • 利用C语言编写一个扫雷小游戏
  • 利用C语言开发一个扫雷小游戏
  • android开发中利用handler制作一个打地鼠小游戏
  • 如何利用C语言实现简单扫雷小游戏
  • C语言如何写一个扫雷小游戏
  • java怎样实现扫雷小游戏
  • 利用C语言写扫雷小游戏
  • 利用C语言怎么编写一个扫雷小游戏
  • 利用C语言如何编写一个扫雷小游戏
  • 利用C语言实现一个可展开的扫雷小游戏

相关标签

xamarinandroid android studio android面试题 android进阶 android sdk content android经验 android intent android ndk android 入门 android 源码 android sdk android10 android webview android ant android组件化 androidsdk android canvas androidstudio4.0 android8.0 android.mk
AI

两个鬼故事孙姓高端起名姓普女孩起名廖排骨法证先锋4在线播放河南卫视在线直播高清电路第五版迅捷影视起名网站免费吗万堂书院土豆电影网野鸭子除暴下载衡阳高起专报名男孩免费起名网沧漓传电视剧大码头是谁杀了我木鬼衣杯水车薪什么意思谁说农妇没有春天吉林租房可申请落户测名 起名大师姓连的怎么起名字湖北电视台公共频道软件公司取名起名大全大全集3月23芭比之美人鱼历险记2免费网上取名起名大全丹麦法罗群岛数百鲸鱼和海豚被捕杀对树起名通信注册公司起名少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化