Java练习(模拟扫雷游戏)

要为扫雷游戏布置地雷,扫雷游戏的扫雷面板可以用二维int数组表示。如某位置为地雷,则该位置用数字-1表示,
如该位置不是地雷,则暂时用数字0表示。
编写程序完成在该二维数组中随机布雷的操作,程序读入3个参数:布雷面板的行数(r),列数(c),布置的地雷个数(n),
且要满足0<n<r*c*0.75(即布置地雷的最大密度为75%),程序运行后将n个地雷随机地布置在r*c的二维数组,布置完成后进行扫雷游戏。

import java.util.*;

public class Minesweeper {
    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        //输入行和列
        int r = Integer.parseInt(scn.nextLine());
        int c = Integer.parseInt(scn.nextLine());
        if(r<2 || c<2)
        {
            System.out.println("输入的行列无效。");
            return;
        }
        //定义一个二维数组来布雷
        int[][] a = new int[r][c];
        Random rnd = new Random();
        //随机给出雷的个数
        int n = rnd.nextInt((int)(r*c*0.75));
        System.out.println("雷的个数:"+n);
        while(n>0)
        {
            //随机的布雷,随机产生雷所在行和列
            int rr = rnd.nextInt(r);
            int cc = rnd.nextInt(c);
            if(a[rr][cc]!=-1)
            {
                a[rr][cc]=-1;
                n--;
            }
        }
        //扫雷
        for(int i=0;i<r;i++)
        {
            for(int j=0;j<c;j++)
            {
                int lei=0;
                if(a[i][j] == 0)
                {
                    if(i-1>=0 && j-1>=0 && a[i-1][j-1]==-1)
                        lei++;
                    if(i-1>=0 && a[i-1][j]==-1)
                        lei++;
                    if(j<c-1)
                    {
                        if(i-1>=0 && a[i-1][j+1]==-1)
                            lei++;
                        if(a[i][j+1]==-1)
                            lei++;
                    }
                    if(j-1>=0 && a[i][j-1]==-1)
                        lei++;
                    if(i<r-1)
                    {
                        if(j-1>=0 && a[i+1][j-1]==-1)
                            lei++;
                        if(a[i+1][j]==-1)
                            lei++;
                    }
                    if(i<r-1 && j<c-1)
                    {
                        if(i+1>=1 && j+1>=1 && a[i+1][j+1]==-1)
                            lei++;
                    }
                    a[i][j]=lei;
                }
            }
        }
        //输出
        for(int i=0;i<r;i++)
        {
            for(int j=0;j<c;j++)
            {
                System.out.print(a[i][j]+"\t");
            }
            System.out.println();
        }
    }
}

原文地址:https://www.cnblogs.com/roadlandscape/p/8799261.html

时间: 2024-08-30 04:53:57

Java练习(模拟扫雷游戏)的相关文章

java swing开发扫雷游戏源代码

原文:java swing开发扫雷游戏源代码 源代码下载地址:http://www.zuidaima.com/share/1550463547886592.htm java 扫雷 游戏源码 源代码截图:

java 简单的扫雷游戏

//扫雷游戏 package Bible001; import javax.swing.*; import java.awt.event.*; import java.awt.*; public class Mine extends MouseAdapter { private JFrame mainFrame; private int[][] data; private JButton[][] buttons; private JButton startJB; private Label l;

模拟扫雷游戏

game_main from game_map import map from game_intro import intro class Engine(object): def __init__(self): self.moves = {} self.count = 0 self.h_step = 0 self.v_step = 0 def play(self): print("You're now in (%s, %s)" % (self.h_step, self.v_step))

javascript模拟Windows系统下的扫雷游戏

javascript模拟Windows系统下的扫雷游戏. 说好的一周一篇随笔的,这才第三周就延迟交作业了,深深的自责中... 先玩一把 demo 很久以前写的 当时都没写注释的 刚加上了 (尼玛,好多自己都不认识了 ... ) 不足的敌方就是本来想写个游戏排名的统计的,等有空了再加上(好像每次都这么说 然后就等好久好久...) 还有就是没有实现:点击第一个格子不能是雷的功能 刚才在手机端 打开了下这篇文章 排版完全乱了... <style> ul{padding:0;list-style:no

java扫雷游戏源代码下载

原文:java扫雷游戏源代码下载 源代码下载地址:http://www.zuidaima.com/share/1550463791090688.htm 用java做的一个扫雷游戏,大家可以看看里面的算法.

Java Swing扫雷游戏demo分享

好多年前写过简略的扫雷游戏,模拟windows的. 后来由于多次搬迁环境,弄丢了,遗憾不已啊. 于是趁着这两年还在编程的道路上,趁热再次编写了一次,同时也扩展了功能,更接近windows的扫雷. 此次重写是用Javaswing实现的(eclipse开发),考虑到各位看客可能大部分是Android岗位,于是我着重注意了功能结构化的处理,使游戏核心算法与UI分离,使用回调交互,便于迁移到android环境. 本人对swing不是很熟练,一直以来用swing做项目的人很少,学习资料也少,所有的这些都是

2015扫雷游戏

题目描述 Description 扫雷游戏是一款十分经典的单机小游戏. 在 n 行 m 列的雷区中有一些格子含有地雷(称之为地雷格) ,其他格子不含地雷(称之为非地雷格) .玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格. 游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格.现在给出n行m列的雷区中的地雷分布, 要求计算出每个非地雷格周围的地雷格数.注:一个格子的周围格子包括其上.下.左.右.左上.右上.左下.右下八个方向上与之直接相邻的格子. 输入描述 

Java Chaos Game 噪声游戏两则

Java Chaos Game噪声游戏两则 [简介] 最近一直在读<深奥的简洁>,里面有一章介绍了几种使用噪声产生分形图的方法,感觉很有意思,于是尝试使用计算机模拟了一下,效果还不错(噪声法比传统迭代法在编程上好实现一些,后来发现这类算法还不少,搜索chaos game可以找到更多). 本篇程序源文件及其依赖jar包已经打包,可以到这里GitHub下载. [Sierpinski三角形的噪声产生法] 在这些噪声游戏中,Sierpinski(谢尔宾斯基)三角形的生成规则可谓是最简单的: 1.在平面

Noip(pj)2015 t2 扫雷游戏

题目描述 扫雷游戏是一款十分经典的单机小游戏.在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格).玩家翻开一个非地雷格时,该格将会出现一个数字--提示周围格子中有多少个是地雷格.游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格. 现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数. 注:一个格子的周围格子包括其上.下.左.右.左上.右上.左下.右下八个方向上与之直接相邻的格子. 输入输出格式 输入格式: 输入文件第一行是用一个