做扫雷的游戏

这个游戏是我去年做的,现在给大家看一下。

#include<bits/stdc++.h>
#include<windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
using namespace std;
double x,y;
void abc(int y,int x){
COORD c;
c.X=x;
c.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
void shubiao() {
POINT a1;HWND h=GetForegroundWindow(); GetCursorPos(&a1); ScreenToClient(h,&a1);
x=double(a1.y)/16,y=double(a1.x)/16;
return;
}
bool a[50][50],f[50][50];
int b[50][50],i,j,h,k=225,d[8][2]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}};
void dfs(int c,int g){
if(c<1||c>15||g<1||g>15)return;
if(b[c][g]==-1)return;
if(f[c][g])return;
f[c][g]=1;
a[c][g]=1;
abc(c-1,g*2-2);
printf(" %c",b[c][g]==0?' ':char(b[c][g]+48));
if(b[c][g]>0)return;
for(int o=0;o<8;o++){
dfs(c+d[o][0],g+d[o][1]);
}
}
int main()
{
srand(time(0));
for(i=1;i<=7;i++)cout<<' ';
cout<<"扫雷\n";
system("pause");
system("cls");
for(i=1;i<=25;i++){
int u=rand()%15+1,v=rand()%15+1;
while(b[u][v]==-1)u=rand()%15+1,v=rand()%15+1;
b[u][v]=-1;
}
for(i=1;i<=15;i++){
for(j=1;j<=15;j++){
if(b[i][j]==0)
for(h=0;h<8;h++)
if(b[i+d[h][0]][j+d[h][1]]==-1)b[i][j]++;
cout<<"";
}
cout<<endl;
}//初始化
while(k!=25){
if(KEY_DOWN(MOUSE_MOVED)){

shubiao();
a[int(x)+1][int(y)+1]=1;
if(b[int(x)+1][int(y)+1]==-1){
cout<<">>";
abc(int(x),int(y)*2);
cout<<"";
Sleep(100);
abc(int(x),int(y)*2);
cout<<"";
Sleep(100);
abc(int(x),int(y)*2);
cout<<"";
Sleep(100);
abc(15,32);
return 0;
}//碰到雷
else{
memset(f,0,sizeof(f));
dfs(int(x)+1,int(y)+1);
}
}
k=0;
for(i=1;i<=15;i++)
for(j=1;j<=15;j++)
if(!a[i][j])k++;
abc(15,32);
}
abc(0,0);
for(i=1;i<=15;i++){
for(j=1;j<=15;j++){
if(b[i][j]==-1)cout<<"Y";
else cout<<' ';
}
Sleep(50);
cout<<endl;
}
cout<<"成功!";
return 0;
}

 

posted @ 2022-07-22 22:09  ciciio  阅读(21)  评论(0编辑  收藏  举报