题目描述:

你玩过扫雷船吗?这个可爱的小游戏有一个我们不记得名字的操作系统。
游戏的目标是找出所有的地雷在一个MxN场内的位置。
游戏显示一个正方形中的一个数字,它告诉你在那个方块附近有多少个地雷。
每个广场最多有八个相邻的方块。
左边的4x4字段包含两个地雷,每个地雷都以“*”字符表示。
如果我们用上面描述的暗示数来表示同一个字段,
我们就会得到右边的字段:*.*..。...*100 2210 1*10 1110

输入:

输入将由任意数目的字段组成。
每个字段的第一行包含两个整数n和m(0<n,m$100),它们分别代表字段的行数和列数。
下面n行中的每一行都精确地包含m个字符,表示字段。
安全方格用'.'表示。地雷方格是'*',两者都没有引号。
第一个字段行,其中n=m=0表示输入的结尾,不应该进行处理。

输出:

对于每个字段,只在一行上打印消息字段#x:,其中x代表从1开始的字段数。
下n行应该包含带有'.'的字段。
字符替换为与该方格相邻的地雷数。字段输出之间必须有空行。

样例输入:

4 4
*...
....
.*..
....
3 5
**...
.....
.*...
0 0

样例输出:

Field #1:
*100
2210
1*10
1110Field #2:
**100
33200
1*100

参考解答:

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int line_num, column_num;line_num = sc.nextInt();column_num = sc.nextInt();String temp = sc.nextLine();int sum = 1;while (line_num != 0 && column_num != 0) {String[] str = new String[line_num];for (int i = 0; i < line_num; i++) {str[i] = sc.nextLine();}System.out.println("Field #" + (sum++) + ":");char[][] char_array = new char[line_num][column_num];for (int i = 0; i < line_num; i++) {char_array[i] = str[i].toCharArray();}count(char_array, line_num, column_num);System.out.println();line_num = sc.nextInt();column_num = sc.nextInt();temp = sc.nextLine();}}private static void count(char[][] str, int line_num, int column_num) {int[][] count = new int[line_num][column_num];for (int i = 0; i < line_num; i++) {Arrays.fill(count[i], -1);}for (int i = 0; i < line_num; i++) {for (int j = 0; j < column_num; j++) {if (str[i][j] == '.') {count[i][j] = sum(str, i, j, line_num, column_num);}}}for (int i = 0; i < line_num; i++) {for (int j = 0; j < column_num; j++) {if (str[i][j] == '*') {System.out.print("*");}else {System.out.print(count[i][j]);}}System.out.println();}}private static int sum(char[][] str, int x, int y, int line_num, int column_num) {int sum = 0;for (int i = -1; i <= 1; i++) {for (int j = -1; j <= 1; j++) {if (notOutOfArrayBounds(x + i, y + j, line_num, column_num) && str[x + i][y + j] == '*') {sum++;}}}return sum; }private static boolean notOutOfArrayBounds(int i , int j, int line_num, int column_num) {return (i >= 0 && i < line_num && j >= 0 && j < column_num);}
}

Minesweeper-Java相关推荐

  1. JAVA游戏编程之二----j2me MIDlet 手机游戏入门开发--贪吃蛇

    作者:雷神 QQ:38929568 QQ群:28048051JAVA游戏编程(满) 28047782(将满) 与前一款扫雷比较,这个游戏多了一个 类,用来显示动画,也是蛇要吃的物品类, 也有了代码包, ...

  2. Java 实现扫雷与高胜率低耗时自动扫雷 AI (下)

    上一篇博客介绍了本项目总体情况, 这一篇来介绍一下我实现的自动扫雷 AI 算法. 本 AI 胜率比网上最高胜率的 AI 差 0.5% 左右. 不过本 AI 也不是没有优势, 它运算速度很快 (强行有优 ...

  3. Android+上百实例源码分析以及开源分析+集合打包

    1.360新版特性界面源代码 实现了360新版特性界面的效果,主要涉及到Qt的一些事件处理与自定义控件.但源码好像是c++. 2.aidl跨进程调用 服务端onBind暴露,然后客户端bindServ ...

  4. android源码分析

    01_Android系统概述 02_Android系统的开发综述 03_Android的Linux内核与驱动程序 04_Android的底层库和程序 05_Android的JAVA虚拟机和JAVA环境 ...

  5. Android上百实例源码分析以及开源分析集合打包

    感谢网友banketree的收集,压缩包的内容如下: 1.360新版特性界面源代码 实现了360新版特性界面的效果,主要涉及到Qt的一些事件处理与自定义控件.但源码好像是c++. 2.aidl跨进程调 ...

  6. android 源码分析

    感谢网友banketree的收集,压缩包的内容如下: 1.360新版特性界面源代码 实现了360新版特性界面的效果,主要涉及到Qt的一些事件处理与自定义控件.但源码好像是c++. 2.aidl跨进程调 ...

  7. java版扫雷下载_Java 实现扫雷游戏(MineSweeper)

    package com.kerence.mine.data_structure; /** * 雷块类的属性和操作 * * @download:http://www.codefans.net * @au ...

  8. 利用java开发简易版扫雷游戏

    1.简介 学了几周的Java,闲来无事,写个乞丐版的扫雷,加强一下Java基础知识. 2.编写过程 编写这个游戏,一共经历了三个阶段,编写了三个版本的游戏代码. 第一版:完成了扫雷游戏的基本雏形,实现 ...

  9. 【数据结构课设】扫雷 (java实现)

    目录 一.问题描述 二.逻辑结构设计 三.存储结构设计 三.主要操作设计 四.技术难点与解决方法 五.实现与展示 六.详细代码 七.游戏内图片 一.问题描述 设计实现经典扫雷游戏,要求如下: (1) ...

  10. java小游戏之扫雷

    package game;import java.util.Random; import java.util.Scanner;public class Minesweeper {private int ...

最新文章

  1. Docker实践,来自沪江、滴滴、蘑菇街架构师的交流分享
  2. c# oracle datasource,C# 连接Oracle 数据库 示例源码下载
  3. ES6学习(新增字符串方法)
  4. 常用加密算法之非对称加密算法
  5. 10.Springcloud的Zuul
  6. HALCON 20.11:深度学习笔记(11)---目标检测
  7. SqlMapConfig.xml 的配置
  8. kettle linux下的目录怎么看_Linux系统各目录下指令解析
  9. 一个js内存泄露的好例子
  10. 2022中国边缘计算企业20强
  11. 百兆网络变压器:H81601S产品规格及建议配置的芯片型号
  12. 马哥Linux笔记整理
  13. Oracle中的空值问题
  14. 面向对象周总结1030
  15. iis服务器.webp文件无法访问的解决办法
  16. 边缘计算与深度学习综述
  17. python读取word文档中的图片_【Python 3 获取Word所有图片】
  18. Python-列表切片list[-1]、list[-1:]、list[:-1]、list[::1]、list[::-1]的区别
  19. 乌克兰基辅一世遗修道院起火 现场火光照亮夜空
  20. Ubuntu Linux 安装 GCC Compiler

热门文章

  1. 非师范生教师资格证最新政策
  2. 十个python热门项目,你知道几个
  3. ubuntu从一个单纯的系统到装上自己需要的一些软件的过程
  4. ubuntu 7.04 硬盘安装与安装后的常用软件的安装与配置 [zz]
  5. LG OLED C8电视评测:3.9mm超薄机身前置扬声
  6. [CVPR2020最佳论文详细解读] Unsupervised Learning of Probably Symmetric Deformable 3D Object
  7. 【笔记整理 - 计算机网络】
  8. button标签以及post和get方法
  9. 37岁老将魔笛告别世界杯,海信电视向传奇致敬
  10. 对java的粗浅理解