JAVA语言练习(模拟扫雷游戏)
小标 2018-07-19 来源 : 阅读 885 评论 0

摘要:本文主要向大家介绍了JAVA语言练习,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言练习,通过具体的内容向大家展示,希望对大家学习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();

        }

    }

}

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

 


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程