扫雷是Windows自带的游戏。游戏的目标是尽快找到雷区中的所有地雷,而不许踩到地雷。如果方块上的是地雷,将输掉游戏。

如果方块上出现数字,则表示在其周围的八个方块中共有多少颗地雷。

你的任务是在已知地雷出现位置的情况下,得到各个方块中的数据。

输入描述:

数据的第一行有两个数字,m, n (0 < m, n< 100)表示游戏中雷区的范围为m×n

接下来m行每行有n个字符。*表示有地雷,.表示无地雷。

输出描述:

对于输入数据,输出结果,各方块数字间不留空格。地雷位置用*表示。

代码

import java.util.Scanner;


class Solution {

    public static void main(String[] args) {//测试
        Solution test = new Solution();
        test.maxRotateFunction();
    }


    public void maxRotateFunction() {
        int m, n;
        Scanner scan = new Scanner(System.in);
        m = scan.nextInt();
        n = scan.nextInt();

        int[][] boom = new int[m + 2][n + 2];
        for (int i = 0; i < m + 2; i++) {
            for (int j = 0; j < n + 2; j++) {//建立数组及辅助项
                boom[i][j] = 0;
            }
        }
        String des;
        for (int i = 1; i < m + 1; i++) {
            des = scan.next();
            for (int j = 1; j < n + 1; j++) {//获取炸弹位置

                if ('*' == des.charAt(j - 1)) {
                    boom[i][j] = 1;
                } else boom[i][j] = 0;
            }
        }

        for (int i = 1; i < m + 1; i++) {
            for (int j = 1; j < n + 1; j++) {//确定炸弹信息并输出
                if (boom[i][j] == 1) System.out.print("*");
                else {
                    int sum;
                    sum = boom[i - 1][j - 1] + boom[i - 1][j] + boom[i - 1][j + 1] + boom[i][j - 1] + boom[i][j + 1] + boom[i + 1][j - 1] + boom[i + 1][j] + boom[i + 1][j + 1];
                    System.out.print(sum);

                }
            }
            System.out.println();
        }


    }
}

结果展示 

 

扫雷游戏框架python 扫雷游戏java_java