失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 扫雷游戏简单写法---> 随机产生地雷数

扫雷游戏简单写法---> 随机产生地雷数

时间:2022-07-31 22:40:23

相关推荐

扫雷游戏简单写法---> 随机产生地雷数

import java.util.Scanner;public class MineSweeper {public static void main(String[] args) {int x = 0,y=0;//雷区场地大小int mineNumber;//自定义雷区个数int m,n ;//随机赋值产生的行列 int a,b;//用户输入行列进行扫雷int t=0;//用来判断闯关是否成功int z=0;Scanner s=new Scanner(System.in);do {System.out.println("请输入雷区的行列");x=s.nextInt();y=s.nextInt();if(x<=0|y<=0)System.out.println("行数和列数要大于0!"); }while(x<=0|y<=0);int[][] place=new int[x][y]; //雷区场地int[] record=new int [x*y]; System.out.println("请输入地雷个数");mineNumber=s.nextInt(); if(mineNumber>x*y) {System.out.println("错误,雷数大于雷区场地数!重新输入:");mineNumber=s.nextInt();}for(int i=0;i<mineNumber;i++) while(true) {m=(int) (Math.random()*x+1)-1;//产生[m,n]随机数的公式Math.random()*(n+1-m)+mn=(int) (Math.random()*y+1)-1;//为了不让数组下标越界,随机数最大值要减1,但是我们是从0开始的,当随机数为0时会出现错误,所以要从1开始if(place[m][n]!=-1) {place[m][n]=-1;break;}}for(int i = 0;i<place.length;i++) {for(int j=0;j<place[i].length;j++)System.out.print(place[i][j]);System.out.println(); } System.out.println("开始扫雷,请输入你认为没有地雷的坐标");while(true){ a=s.nextInt();b=s.nextInt();m=a;n=b;a=a-1;b=b-1;if(place[a][b]==-1) {System.out.println("游戏结束!");return ;}else {System.out.println("无雷"); for(int i=0;i<record.length;i++) {if(record[i]==m*10+n) {System.out.println("你已经输入过"+m+" "+n); t--;z--;}}for(int i=0;i<record.length;i++) {if(record[i]!=m*10+n) record[z]=m*10+n; }z++;t++;if(t==(x*y-mineNumber)) {System.out.println("闯关成功!"); return;} System.out.println("相邻区域地雷个数为"+sum(place, a, b, x,y));}System.out.println("请继续输入");}}//计算非雷区相邻区域的雷数public static int sum(int[][] place,int a,int b,int x,int y) {int num=0;if(a>0&b>0&a<x-1&b<y-1) {if(place[a-1][b]==-1)num++;if(place[a+1][b-1]==-1)num++;if(place[a+1][b+1]==-1)num++;if(place[a-1][b+1]==-1)num++;if(place[a-1][b-1]==-1)num++;if(place[a][b-1]==-1)num++;if(place[a][b+1]==-1)num++;if(place[a+1][b]==-1)num++;}else if(a==0&b<y-1&b!=0) {if(place[a][b-1]==-1)num++;if(place[a][b+1]==-1)num++;if(place[a+1][b]==-1)num++;if(place[a+1][b-1]==-1)num++;if(place[a+1][b+1]==-1)num++;}else if(a==0&b==0) {if(place[a][b+1]==-1)num++;if(place[a+1][b]==-1)num++;if(place[a+1][b+1]==-1)num++;}else if(a==0&b==y-1) {if(place[a][b-1]==-1)num++;if(place[a+1][b-1]==-1)num++;if(place[a+1][b]==-1)num++;}else if(b==0&a!=0&a<x-1) {if(place[a-1][b]==-1)num++;if(place[a-1][b+1]==-1)num++;if(place[a][b+1]==-1)num++;if(place[a+1][b]==-1)num++;if(place[a+1][b+1]==-1)num++;}else if(a==x-1&b==0) {if(place[a-1][b]==-1)num++;if(place[a-1][b+1]==-1)num++;if(place[a][b+1]==-1)num++;}else if(a==x-1&b!=0&b<y-1) {if(place[a][b-1]==-1)num++;if(place[a][b+1]==-1)num++;if(place[a-1][b-1]==-1)num++;if(place[a-1][b]==-1)num++;if(place[a-1][b+1]==-1)num++;}else if(a==x-1&b==y-1) {if(place[a-1][b-1]==-1)num++;if(place[a-1][b]==-1)num++;if(place[a][b-1]==-1)num++;} return num;}}

如果觉得《扫雷游戏简单写法---> 随机产生地雷数》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。