Java练习(模拟扫雷游戏)
2018-06-18 02:09:32来源:未知 阅读 ()
要为扫雷游戏布置地雷,扫雷游戏的扫雷面板可以用二维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(); } } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash