编程模拟“地雷游戏”在9x9方格中随机布上10个地雷按9行9列输出各格子的数,(有雷为9,无雷为0),在有相

作者&投稿:逮珊 (若有异议请与网页底部的电邮联系)
编程序模拟“地雷游戏”。~

Scanner;
class Test{
int level;
int number;
int timer=0;
private int[9][9] arr= new int[9][9];
static private char[9][9] display=new char[9][9];

static {
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
display[i][j]='+'; //初始9*9显示 +
}

Test(int level) //难度等级:1-9
{
this.level=level;
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
{
if( (int)(Math.random()*10)>level ) arr[i][j]=0;
else
}
}

Test(char ob){ //难度: a-10个雷 b-20个...h-80个
int number=0,numberTemp=0;
int tmpA,tmpB,temp;
if(ob>='a' && ob<='h')
{
number=(ob-'a'+1)*10;
this.number=number;
this.level=number/10;

for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
{
if(numberTemp>number) break;
arr[i][j]=9;
numberTemp++;
}

for(int i=0;i<9;i++) //乱数排列
for(int j=0;j<9;j++)
{
tmpA=Math.random()*9;
tmpB=Math.random()*9;
temp=arr[i][j];
arr[i][j]=arr[tmpA][tmpB];
arr[tmpA][tmpB]=temp;
}

}
else Test(5);
}

public void PrintMap(char yes,char no){ //yes是有地雷处显示字符
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
if(arr[i][j]==9) System.out.print(yes);
else System.out.print(no);
}
System.out.println();
}
}

private int findNumber(int x,int y){ //找相邻的有x个地雷
int n=0;
for(int i=x-1;i<x+2;i++)
for(int j=y-1;j<y+2;j++)
{
if(arr[i][j]==9) n++;
}
return n;
}

private void updateDisplay(int x,int y){
display[x][y]='0'+findNumber(x,y);
if(display[x][y]=='0')
{
for(int i=x-1;i<x+2;i++)
for(int j=y-1;j<y+2;j++)
{
updateDisplay(i,j);
}
}
}

private void printDisplay(){
for(int i=x-1;i<x+2;i++)
{
for(int j=y-1;j<y+2;j++)
{
System.out.print(display[i][j]);
}
System.out.println();
}
}

public boolean checkFail(int x,int y){ //检查此处是否是地雷:是返回false
if(arr[x][y]==9) return false;
else return true;
}

public boolean checkInput(int x,int y){
if(x>=0 && x<=9 && y>=0 && y<=9)
if(display[x][y]!='+')
return true;
}

public boolean checkSuccess(){ //检查是否过关( 非地雷数=显示图片数---既剩下的都是地雷)
int goodNumber=0,showNumber=0;
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
{
if(arr[i][j]==0) goodNumber++;
if(display[i][j]!='+') showNumber++;
}
if(goodNumber==showNumber) return true;
else return false;
}

public boolean inputXY(int x,int y){
timer++;
updateDisplay(x,y);
System.out.println("-----------------------"+timer+"--------------------");
printDisplay(x,y);
System.out.println("----------------------------------------------------");
}

static public void main(String[] str){
Test test=new Test('a'); //创建一个随机10个地雷的地图
Scanner scanf=new Scanner(System.in);
int x,y;
do{
x=scanf.nextInt();
y=scanf.nextInt();
if(checkInput(x,y)==false) continue;
if(checkFail(x,y)==false)
inputXY(x,y);
}while(checkSuccess(x,y));
}

}
另外,站长团上有产品团购,便宜有保证

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
int map[11][11];
const int N = 9;
void init()
{
memset(map,0,sizeof(map));
int c = 10;
int i,j;
int r;
while(c--)
{
do
{
r = rand()%81;
i = r/9;
j = r%9;
}while(map[i][j]!=0);
map[i][j]=9;
}
}
void print()
{
for(int i=0;i<N;++i)
{
for(int j=0;j<N;++j)
printf("%d",map[i][j]);
printf("
");
}
}
int main()
{
srand(time(NULL));
init();
print();

return 0;
}
这个每次执行一次 就是随机一个地雷阵
还有什么问题再问我 用G++ 编译
另外,站长团上有产品团购,便宜有保证

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
int map[11][11];
const int N = 9;
void init()
{
memset(map,0,sizeof(map));
int c = 10;
int i,j;
int r;
while(c--)
{
do
{
r = rand()%81;
i = r/9;
j = r%9;
}while(map[i][j]!=0);
map[i][j]=9;
}
}
void print()
{
for(int i=0;i<N;++i)
{
for(int j=0;j<N;++j)
printf("%d",map[i][j]);
printf("\n");
}
}
int main()
{
srand(time(NULL));
init();
print();

return 0;
}
这个每次执行一次 就是随机一个地雷阵
还有什么问题再问我 用G++ 编译


windows11地雷游戏在哪
最近有用户问到电脑上的地雷游戏在哪里,相信很多用户都很好奇这个问题,那么下面就由来向大家分享一下找到windows11地雷游戏的方法吧。方法步骤 1.找到桌面上的开始图标,打开菜单栏后点击Microsoft Store 2.进入到新页面后,在上方的搜索框内输入microsoft minesweeper 3.在显示的搜索结果内找到microsoft ...

济源市18525508195: C语言编程:编程序模拟"地雷游戏".在9*9的方格中,随机布上10个"地雷",安9行9列输出各格子的数(有雷为9,无雷为0)在有相邻地雷的格子内进一步标出相邻地雷数(最多8个) -
钟离风柴胡: 这不是 扫雷 游戏吗?只用一个文件能写完吗?建议你去 http://www.vcgood.com/forum_topics.asp?FID=22 看看,那里有许多c的代码,你可以下载自己研究研究,这里恐怕没人 花好长时间来写那个!祝你好运!

济源市18525508195: 编程序模拟“地雷游戏”. -
钟离风柴胡: Scanner; class Test{ int level; int number; int timer=0; private int[9][9] arr= new int[9][9]; static private char[9][9] display=new char[9][9]; static { for(int i=0;i<9;i++) for(int j=0;j<9;j++) display[i][j]='+'; //初始9*9显示 + } Test(int level) //难度等级:1-9 { this....

济源市18525508195: 用c语言编程序模拟“地雷游戏”. -
钟离风柴胡: 帮你写了一个 #define ROW_NUM 9 #define COL_NUM 9 #define MINE_NUM 10 #define MINE_FLAG 9 #include<stdio.h> #include<stdlib.h> #include<time.h> void InitialMine(int area[ROW_NUM][COL_NUM]) {int i,j,ii,jj;int rowIndex,colIndex;...

济源市18525508195: C语言编程,数组应用,模拟扫雷.在线等 -
钟离风柴胡: 调试通过,源程序如下:#include<stdio.h>#include<time.h>#include<stdlib.h> int map[9][9] = {0}; int result[9][9] = {0}; int mine[10][2]; bool Check(int i) { int j; for(j=0;j<i;j++) if(mine[j][0] == mine[i][0] && mine[j][1] == mine[i][0]) return true; return false; } ...

济源市18525508195: C#二维数组实验题,,感觉这题好难,,求大神!! -
钟离风柴胡: 一楼那哥们C语言都上来了!先说思路,定义二维数组,初始值为0.然后进行随机布雷,布雷的条件是如果是已经布过雷的则不能布.在布雷的同时,将周围的数组值+1.终可以布出结果.public class SaoLei {private byte[,] _BoomArea; ...

济源市18525508195: C语言编程的问题
钟离风柴胡: #include<stdio.h> #include<stdlib.h> main() { int n=1,i,j,s[11][11],x,y; clrscr(); for(i=0;i<=10;i++) for(j=0;j<=10;j++) s[i][j]=0; randomize(); while(n<=10) { x=1+random(9); y=1+random(9); if(s[x][y]!=9) {s[x][y]=9; for(i=-1;i<=1;i++) for(j=-1;j<=1;j++) if(s[x+i][y+j...

济源市18525508195: 程序设计题 -
钟离风柴胡: 开一个数组随机标明雷的位置啊,然后再循环所有的方格 计算各个方格的值就可以了

济源市18525508195: 关于C语言的学生作业问题 -
钟离风柴胡: 第一题://测试可用,已修改完整,望采纳#include#include#include#define N 10 //地雷的个数 void fun1(int (*a)[9]) { /*随机生成地雷*/ int i,j; srand((int)time(0)); int counter=0; while(counter { i=rand()%9; j=rand()%9; if(*(*(a+i)+j)==9)continue; else { *(...

济源市18525508195: 扫雷的程序
钟离风柴胡: 参照以下步骤就行了: 1.启动“扫雷”小游戏. 2.在键盘上输入“xyzzy”. 3.然后按住”shift“键大约一秒钟. 4.现在雷区里哪个是雷哪个不是雷,一目了然,当鼠标移到雷区的某个方块时,注意看电脑屏幕的最左上角,如果左上角有一个小亮点显示,证明不是雷,反之则是雷. 注意:在输入xyzzy时并没有提供输出的窗口什么的,只要打开扫雷游戏,再直接在键盘上输字母,然后按shift键就可以了. 不一定非用那个 也可以点双键 在已扫出的数字上 同时点两个鼠标键 周围可能是雷的就出现啦!! 呵呵,只能帮你这么多了!!!!! 多多谅解!!!!!! 请参考

济源市18525508195: 扫雷游戏技巧 -
钟离风柴胡: 看,看不出来就猜 数字1代表旁边有1个雷,数字2代表旁边有2个雷,以此类推~地雷是可以共用的 快速找出地雷 在已经找出地雷的数字上面 点鼠标右键+左键 或者 鼠标左键双击,不同版本

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网