听说发布自编游戏可以刷阅读量。。。
我*这么玄学的吗,那我也试一试~~
希望不要被老师骂不正经。。。
《扫雷》这款游戏大家都听说过吧,就是很益智的一个游戏。
我用C++编写了一个《扫雷》的代码,有编译器的可以copy下来玩玩~
#include<conio.h>
#include<bits/stdc++.h>
#include<windows.h>
#include<ctime>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)//KEY_DOWN(MOUSE_MOVED)
using namespace std;//GetCursorPos(&p)
//SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
//GetAsyncKeyState('W') & 0x8000
double x,y;
void gt(int y,int x){
COORD c;
c.X=x;
c.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
void getAddofMouse() {
/**/POINT pt;HWND h=GetForegroundWindow(); GetCursorPos(&pt); ScreenToClient(h,&pt);
/**/x=double(pt.y)/16,y=double(pt.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;
gt(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++)printf("\n");
for(i=1;i<=7;i++)printf(" ");
printf("新版扫雷\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]++;
printf("■");
}
printf("\n");
}
while(k!=25){
if(KEY_DOWN(MOUSE_MOVED)){
getAddofMouse();
//gt(16,0);
//printf("%d %d ",int(x),int(y));
a[int(x)+1][int(y)+1]=1;
if(b[int(x)+1][int(y)+1]==-1){
printf(">>");
gt(int(x),int(y)*2);
printf("·");
Sleep(100);
gt(int(x),int(y)*2);
printf("●");
Sleep(100);
gt(int(x),int(y)*2);
printf("○");
Sleep(100);
gt(15,32);
return 0;
}
else{
memset(f,0,sizeof(f));
//printf("------");
dfs(int(x)+1,int(y)+1);
}
}
//gt(16,0);
//printf("%d %d ",int(x),int(y));
k=0;
for(i=1;i<=15;i++)
for(j=1;j<=15;j++)
if(!a[i][j])k++;
gt(15,32);
}
gt(0,0);
for(i=1;i<=15;i++){
for(j=1;j<=15;j++){
if(b[i][j]==-1)printf("¥");
else printf(" ");
}
Sleep(50);
printf("\n");
}
printf("成功!!");
return 0;
}
运行: