#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <ctime>
using namespace std;
int main(){
int c=0,yes=0;
char t[100]={
'*','*','*','*','*','*','*','*','*','*',
'9','9','9','9','9','9','9','9','9','9',
'9','9','9','9','9','9','9','9','9','9',
'9','9','9','9','9','9','9','9','9','9',
'9','9','9','9','9','9','9','9','9','9',
'9','9','9','9','9','9','9','9','9','9',
'9','9','9','9','9','9','9','9','9','9',
'9','9','9','9','9','9','9','9','9','9',
'9','9','9','9','9','9','9','9','9','9',
'9','9','9','9','9','9','9','9','9','9'
};
char a[12][12]{
'9','9','9','9','9','9','9','9','9','9',
'9','9','9','9','9','9','9','9','9','9',
'9','9','9','9','9','9','9','9','9','9',
'9','9','9','9','9','9','9','9','9','9',
'9','9','9','9','9','9','9','9','9','9',
'9','9','9','9','9','9','9','9','9','9',
'9','9','9','9','9','9','9','9','9','9',
'9','9','9','9','9','9','9','9','9','9',
'9','9','9','9','9','9','9','9','9','9',
'9','9','9','9','9','9','9','9','9','9'
};
char b[11][11]{
'#','#','#','#','#','#','#','#','#','#','#',
'#','#','#','#','#','#','#','#','#','#','#',
'#','#','#','#','#','#','#','#','#','#','#',
'#','#','#','#','#','#','#','#','#','#','#',
'#','#','#','#','#','#','#','#','#','#','#',
'#','#','#','#','#','#','#','#','#','#','#',
'#','#','#','#','#','#','#','#','#','#','#',
'#','#','#','#','#','#','#','#','#','#','#',
'#','#','#','#','#','#','#','#','#','#','#',
'#','#','#','#','#','#','#','#','#','#','#',
};
char z;
int i,j,s,l=0,x,y;//前期准备
srand(time(NULL));
for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
s=rand()%90+1;
a[i][j]=t[s];
if(l>=9)a[i][j]='9';
if(a[i][j]=='0')l++;//这里不知道怎样控制雷的个数,想要9个雷
}
}//分配雷
for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
if(a[i][j]=='9'){
a[i][j]='0';
if(a[i-1][j-1]=='*')a[i][j]+=1;
if(a[i-1][j]=='*')a[i][j]+=1;
if(a[i-1][j+1]=='*')a[i][j]+=1;
if(a[i][j-1]=='*')a[i][j]+=1;
if(a[i][j+1]=='*')a[i][j]+=1;
if(a[i+1][j-1]=='*')a[i][j]+=1;
if(a[i+1][j]=='*')a[i][j]+=1;
if(a[i+1][j+1]=='*')a[i][j]+=1;
if(a[i][j]=='0')a[i][j]=' ';
}
}
}//数字分配
while(true){//开始游戏
if(c>=9)break;//不知怎样算赢
Sleep(1000);
system("cls");
for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
cout<<b[i][j];
}
cout<<endl;
}
cin>>z>>x>>y;//输入操作符z,'y'代表是雷,'n'代表不是雷
if(z=='n'){
if(a[x][y]!='*'){//如果真的不是雷
if(a[x-1][y-1]!='*'&&a[x-1][y]!='*'&&a[x-1][y+1]!='*'&&a[x][y-1]!='*'){
if(a[x][y+1]!='*'&&a[x+1][y-1]!='*'&&a[x+1][y]!='*'&&a[x+1][y+1]!='*'){
b[x][y]=a[x][y];
b[x-1][y-1]=a[x-1][y-1];
b[x-1][y]=a[x-1][y];
b[x-1][y+1]=a[x-1][y+1];
b[x][y-1]=a[x][y-1];
b[x][y+1]=a[x][y+1];
b[x+1][y-1]=a[x+1][y-1];
b[x+1][y]=a[x+1][y];
b[x+1][y+1]=a[x+1][y+1];
}//这里也不会,只能单个格子或周围的一圈显示
else{
b[x][y]=a[x][y];
}
}
else{
b[x][y]=a[x][y];
}
}
else{
cout<<"你输了"<<endl;
for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
cout<<a[i][j];
}
cout<<endl;
}
return 0;
}//这里没问题
}
else if(z=='y'){
b[x][y]='$';
c++;
}
}
for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
if(b[i][j]=='$'){//如果正确标记雷,那么增加正确标记的
yes++;
}
}
}
if(yes>=5){//这里有问题,前面说无法控制雷的个数,所以挑了个5来,只要正确的雷大于5就可以获胜
cout<<"你赢了"<<endl;
for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
cout<<a[i][j];
}
cout<<endl;
}
}
return 0;
}
另附扫雷游戏规则
1.玩家可以选择简单(10乘10的格子)、中等(40乘40格子)、困难(90乘100的格子)三种模式,简单10个雷,中等20个雷,困难99个雷。
2.玩家可以选择标记雷或者点开地块,如果点开的地块下面是雷,游戏失败。
3.获胜条件:所有雷都被标记。失败条件:错误标记雷或者点开地块下面是雷。
4.点开格子如何显示:这个被点开的格子周围一圈是否有雷,如果是那么只显示被点开的格子,如果不是,周围一圈及点开格子显示,再次判断,这外围8个格子依次作为中心点,如果外围有雷,则判断下1个中心点,如果有,则下一个中心点,否则显示,然后将中心点旁边的8个依次作为中心点判断……直到没有旁边没有雷的中心点为止。
再另:在Windows的开始键里有个游戏,点击它,里面自带扫雷游戏。
再再另:写到这里我已经累了,体谅一下吧!!!
再再再另:没想到您还能看下去,必须是dev-c++代码!(我对浪费您时间感到抱歉)
再再再再另:有回必关