dos扫雷的小游戏 但这样写为什么会错,还有请指出我的不良之处(我是新学C语言的)

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int e[8][8]={{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
};
char h[8][8]={{" 123456"},
{"1******"},
{"2******"},
{"3******"},
{"4******"},
{"5******"},
{"6******"},
};
int k,i,j,s,n=30,l=0;
void slq()
{srand(time(0));
for(k=0;k<=n;)
{ i=rand()%6+1;
j=rand()%6+1;
if(e[i][j]==1)
{continue;}
else
{e[i][j]=1;
k=k+1;}
}
}
void xql()
{
for(int a=0;a<=7;a++)
{
for(int b=0;b<=7;b++)
{
printf("%c",h[a][b]);
if(b==7)
printf("\n");}
}
}
void main()
{
slq();

do
{
system("cls");
xql();
printf("请输入坐标");
scanf("%d,%d",&i,&j);
if(e[i][j]==1)
{printf("****GAMEOVER****\n");
goto loop;}
else
{s=e[i-1][j-1]+e[i][j-1]+e[i+1][j+1]+e[i-1][j]+e[i+1][j]+e[i-1][j+1]+e[i][j+1]+e[i+1][j-1];
h[i][j]=(char)(s+48);
l++;
}
}while(l<=36-n);
printf("you win\n");
loop:;
}

扫雷”概述“扫雷”游戏的目标是尽快找到雷区中的所有地雷,而不许踩到地雷。如果挖开的是地雷,您将输掉游戏。

策略与技巧:
a.如果无法判定某方块是否有雷,请用右键单击两次给它标记一个问号 (?)。以后,您可以用鼠标右键单击方块一次将该方块标记为地雷或者或用鼠标右键单击方块两次去掉标记。
b.如果某个数字方块周围的地雷全都标记完,可以指向该方块并同时点击鼠标左右键,将其周围剩下的方块挖开。如果编号方块周围地雷没有全部标记,在同时使用两个按钮单击时,其他隐藏或未标记的方块将被按下一次(即闪烁一下)。
c.寻找常见的数字组合,这通常会指示地雷的常见组合。例如,在一组未挖开的方块的边上相邻的三个数字 2-3-2 表示这三个数旁边有一排有三个地雷。

策略与技巧:
a.如果无法判定某方块是否有雷,请用右键单击两次给它标记一个问号 (?)。以后,您可以用鼠标右键单击方块一次将该方块标记为地雷或者或用鼠标右键单击方块两次去掉标记。
b.如果某个数字方块周围的地雷全都标记完,可以指向该方块并同时点击鼠标左右键,将其周围剩下的方块挖开。如果编号方块周围地雷没有全部标记,在同时使用两个按钮单击时,其他隐藏或未标记的方块将被按下一次(即闪烁一下)。
c.寻找常见的数字组合,这通常会指示地雷的常见组合。例如,在一组未挖开的方块的边上相邻的三个数字 2-3-2 表示这三个数旁边有一排有三个地雷。

扫雷玩法:
在“游戏”菜单上,单击“开局”。
要启动计时器,请单击游戏区中的任何方块。

注意:
通过单击即可挖开方块。如果挖开的是地雷,则您输掉游戏。
如果方块上出现数字,则表示在其周围的八个方块中共有多少颗地雷。
要标记您认为可能有地雷的方块,请右键单击它。
游戏区包括雷区、地雷计数器和计时器。

然后就剩下多加练习了,毕竟任何游戏都是熟能生巧的.
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-09-09
  我来帮你看下哈:
  嗯,一开始是不能编译成功,但我只修改了一处就可以了喔,就那个后面写了注释的,你自己看下哈,如果可以了不要忘记给分喔~~~

  #include<stdio.h>
  #include<stdlib.h>
  #include<time.h>
  int e[8][8]={{0,0,0,0,0,0,0,0},
  {0,0,0,0,0,0,0,0},
  {0,0,0,0,0,0,0,0},
  {0,0,0,0,0,0,0,0},
  {0,0,0,0,0,0,0,0},
  {0,0,0,0,0,0,0,0},
  {0,0,0,0,0,0,0,0},
  {0,0,0,0,0,0,0,0},
  };
  char h[8][8]={{" 123456"},
  {"1******"},
  {"2******"},
  {"3******"},
  {"4******"},
  {"5******"},
  {"6******"},
  };
  int k,i,j,s,n=30,l=0;
  void slq()
  {srand(time(0));
  for(k=0;k<=n;)
  { i=rand()%6+1;
  j=rand()%6+1;
  if(e[i][j]==1)
  {continue;}
  else
  {e[i][j]=1;
  k=k+1;}
  }
  }
  void xql()
  {
  int b,a;//就这修改了下就可以运行了,有些编译器就这么变态...
  for(a=0;a<=7;a++)
  {
  for(b=0;b<=7;b++)
  {
  printf("%c",h[a][b]);
  if(b==7)
  printf("\n");}
  }
  }
  void main()
  {
  slq();

  do
  {
  system("cls");
  xql();
  printf("请输入坐标");
  scanf("%d,%d",&i,&j);
  if(e[i][j]==1)
  {printf("****GAMEOVER****\n");
  goto loop;}
  else
  {s=e[i-1][j-1]+e[i][j-1]+e[i+1][j+1]+e[i-1][j]+e[i+1][j]+e[i-1][j+1]+e[i][j+1]+e[i+1][j-1];
  h[i][j]=(char)(s+48);
  l++;
  }
  }while(l<=36-n);
  printf("you win\n");
  loop:;
  }本回答被提问者采纳
相似回答