前言
windows一直有自带小游戏,其中一个便是扫雷。扫雷是一个十分经典的游戏,学会了这个代码怎么写,你也会做一些题了——比如连通块,片区面积,等等。
关于扫雷
作者的扫雷,共
1095行,
28619个字符,
3个函数,
内存2.9MB。
测试环境:
Windows7,
c++编译器5.11
创作此代码历经3个月,104次测试,少量bug,暂时没找到问题。#不影响使用#
代码分解
(完整代码放在篇尾,如果实在复制地恼火,点击下面链接免费下载cpp文件)
(文件正在审核中)
文件的开头
#include<conio.h>
#include<stdlib.h>
#include<windows.h>
#include<bits/stdc++.h>
using namespace std;
int again=0,hang,lie,lei,jsq,sjhang,sjlie,cj[40][40],i,j,k,ms=0,sum=0,lose=0;
char tmp[40][40],play[40][40],input;
函数3个,分别指:
空格查找模块
修改模式模块
主函数。
void space(int i,int j);
void moshi();
int main()
前面是菜单和初始化:
int main()
{
HANDLE consolehwnd;//创建句柄
consolehwnd=GetStdHandle(STD_OUTPUT_HANDLE);//实例化句柄
srand(time(NULL));
while(again==0)
{
system("cls");//20
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_BLUE);
cout<<"welcome to minesweeper!\n初级:10X10,10个雷:1\n中级:16X16,40个雷:2\n高级:16X30,99个雷:3\n自定义:其它数字\n";
cin>>jsq;
if(jsq==1)hang=10,lie=10,lei=10;
else if(jsq==2)hang=16,lie=16,lei=40;
else if(jsq==3)hang=16,lie=30,lei=99;
else
{
system("cls");
cout<<"行数:";
cin>>hang;
cout<<"列数:";
cin>>lie;
cout<<"雷数:";
cin>>lei;
if(hang<9)hang=9;
if(hang>24)hang=24;
if(lie<9)lie=9;
if(lie>30)lie=30;
if(lei>688)lei=688;
if(lei<10)lei=10;
if(lei<hang*lie/72)lei=hang*lie/72;
if(lei>hang*lie*9/10)lei=hang*lie*9/10;//变量的准备
}
cout<<"开启开局作弊?开:1,关:0\n";
cin>>jsq;
cout<<"------------------------------\n";
for(i=0; i<hang+1; ++i)//22
{
for(j=0; j<lie+1; ++j)
{
tmp[i][j]='0';
}
}//初始化地图为0
for(i=0; i<lei; ++i)//39
{
sjhang=rand()%hang+1,sjlie=rand()%lie+1;
while(tmp[sjhang][sjlie]=='*')
{
sjhang=rand()%hang+1,sjlie=rand()%lie+1;
}
tmp[sjhang][sjlie]='*';
}//随机设置雷
for(i=1; i<=hang; ++i) //54
{
for(j=1; j<=lie; ++j)
{
if(tmp[i ][j ]=='*')continue;
if(tmp[i-1][j-1]=='*')tmp[i][j]++;
if(tmp[i-1][j ]=='*')tmp[i][j]++;
if(tmp[i-1][j+1]=='*')tmp[i][j]++;
if(tmp[i ][j+1]=='*')tmp[i][j]++;
if(tmp[i+1][j+1]=='*')tmp[i][j]++;
if(tmp[i+1][j ]=='*')tmp[i][j]++;
if(tmp[i+1][j-1]=='*')tmp[i][j]++;
if(tmp[i ][j-1]=='*')tmp[i][j]++;
}
}//数字
for(i=1; i<=hang; ++i) //69
{
for(j=1; j<=lie; ++j)
{
if(tmp[i][j]=='0')
{
tmp[i][j]=' ';
}
}
}//空格
for(i=1; i<=hang; ++i)
{
for(j=1; j<=lie; ++j)
{
play[i][j]=(char)30;
}
}
//begin
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_GREEN);
cout<<"正在准备棋盘.";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
if(jsq==1)
{
cout<<"\n正在进行作弊.";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
sjhang=rand()%hang+1,sjlie=rand()%lie+1;
jsq=0;
while(tmp[sjhang][sjlie]!=' '&&jsq<hang*lie)
{
sjhang=rand()%hang+1,sjlie=rand()%lie+1;
jsq++;
}
while(tmp[sjhang][sjlie]=='*')
{
sjhang=rand()%hang+1,sjlie=rand()%lie+1;
jsq++;
}
play[sjhang][sjlie]=tmp[sjhang][sjlie];
if(jsq<hang*lie||jsq==hang*lie)
space(sjhang,sjlie);
}
100行。
判断是否胜利和输入板块:
while(jsq!=lei)
{
system("cls");
jsq=0,sum=0;
for(i=0; i<=hang; ++i)//484
{
if(i==0)
{
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
cout<<' ';
for(k=0; k<=lie; ++k)
{
if(k<10)cout<<k<<' ';
else cout<<k;
}
cout<<'\n';
continue;
}
for(j=0; j<=lie; ++j)
{
if(j==0)
{
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
cout<<setw(2)<<i<<' ';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
continue;
}
if(play[i][j]==(char)30||play[i][j]==(char)19)jsq++;
if(play[i][j]==(char)30||play[i][j]==' ')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]==(char)19)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
if(play[i][j]=='1')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
if(play[i][j]=='2')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
if(play[i][j]=='3')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
if(play[i][j]=='4')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
if(play[i][j]=='5')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='6')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]=='7')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='8')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
cout<<play[i][j]<<' ';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
cout<<'\n';
}//输出
if(jsq==lei)//501
{
Sleep(1000);
system("cls");
for(i=1; i<=hang; ++i)
{
for(j=1; j<=lie; ++j)
{
if(tmp[i][j]=='*')
{
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
play[i][j]='*';
}
else
{
if(play[i][j]==(char)30||play[i][j]==' ')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]==(char)19)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
if(play[i][j]=='1')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
if(play[i][j]=='2')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
if(play[i][j]=='3')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
if(play[i][j]=='4')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
if(play[i][j]=='5')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='6')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]=='7')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='8')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
}
cout<<play[i][j]<<' ';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
cout<<'\n';
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
cout<<"You win.\nagain:0\n";
cin>>again;
continue;
}//胜利条件
sjhang=0,sjlie=0,ms=0,lose=0,sum=0;
cout<<"当前模式:开方块模式\n";
cout<<"行数:(切换模式请按A。)";
while(sjhang%10==0)
{
input=getch();
if(input=='A'||input=='a')
{
ms=1;
moshi();
break;
}
if(input=='/')
{
if(sjhang!=0)
{
cout<<'\n';
break;
}
else continue;
}
if(input=='0')
{
sjhang+=10;
cout<<"+10";
}
if(input=='1')
{
sjhang+=1;
cout<<"+1\n";
}
if(input=='2')
{
sjhang+=2;
cout<<"+2\n";
}
if(input=='3')
{
sjhang+=3;
cout<<"+3\n";
}
if(input=='4')
{
sjhang+=4;
cout<<"+4\n";
}
if(input=='5')
{
sjhang+=5;
cout<<"+5\n";
}
if(input=='6')
{
sjhang+=6;
cout<<"+6\n";
}
if(input=='7')
{
sjhang+=7;
cout<<"+7\n";
}
if(input=='8')
{
sjhang+=8;
cout<<"+8\n";
}
if(input=='9')
{
sjhang+=9;
cout<<"+9\n";
}
}
if(ms==1)
continue;
while(sjhang>hang)
{
cout<<"无效的输入!请重新输入!\n行数:";
sjhang=0;
while(sjhang%10==0)
{
input=getch();
if(input=='/')
{
if(sjhang!=0)
{
cout<<'\n';
break;
}
else continue;
}
if(input=='0')
{
sjhang+=10;
cout<<"+10";
}
if(input=='1')
{
sjhang+=1;
cout<<"+1\n";
}
if(input=='2')
{
sjhang+=2;
cout<<"+2\n";
}
if(input=='3')
{
sjhang+=3;
cout<<"+3\n";
}
if(input=='4')
{
sjhang+=4;
cout<<"+4\n";
}
if(input=='5')
{
sjhang+=5;
cout<<"+5\n";
}
if(input=='6')
{
sjhang+=6;
cout<<"+6\n";
}
if(input=='7')
{
sjhang+=7;
cout<<"+7\n";
}
if(input=='8')
{
sjhang+=8;
cout<<"+8\n";
}
if(input=='9')
{
sjhang+=9;
cout<<"+9\n";
}
}
}
cout<<"列数:";
while(sjlie%10==0)
{
input=getch();
if(input=='/')
{
if(sjlie!=0)
{
cout<<'\n';
break;
}
else continue;
}
if(input=='0')
{
sjlie+=10;
cout<<"+10";
}
if(input=='1')
{
sjlie+=1;
cout<<"+1\n";
}
if(input=='2')
{
sjlie+=2;
cout<<"+2\n";
}
if(input=='3')
{
sjlie+=3;
cout<<"+3\n";
}
if(input=='4')
{
sjlie+=4;
cout<<"+4\n";
}
if(input=='5')
{
sjlie+=5;
cout<<"+5\n";
}
if(input=='6')
{
sjlie+=6;
cout<<"+6\n";
}
if(input=='7')
{
sjlie+=7;
cout<<"+7\n";
}
if(input=='8')
{
sjlie+=8;
cout<<"+8\n";
}
if(input=='9')
{
sjlie+=9;
cout<<"+9\n";
}
}
while(sjlie>lie)
{
cout<<"无效的输入!请重新输入!\n列数:";
sjlie=0;
while(sjlie%10==0)
{
input=getch();
if(input=='/')
{
if(sjlie!=0)
{
cout<<'\n';
break;
}
else continue;
}
if(input=='0')
{
sjlie+=10;
cout<<"+10";
}
if(input=='1')
{
sjlie+=1;
cout<<"+1\n";
}
if(input=='2')
{
sjlie+=2;
cout<<"+2\n";
}
if(input=='3')
{
sjlie+=3;
cout<<"+3\n";
}
if(input=='4')
{
sjlie+=4;
cout<<"+4\n";
}
if(input=='5')
{
sjlie+=5;
cout<<"+5\n";
}
if(input=='6')
{
sjlie+=6;
cout<<"+6\n";
}
if(input=='7')
{
sjlie+=7;
cout<<"+7\n";
}
if(input=='8')
{
sjlie+=8;
cout<<"+8\n";
}
if(input=='9')
{
sjlie+=9;
cout<<"+9\n";
}
}
}
490行。
判断是否失败和空格处理板块:
if(play[sjhang][sjlie]==' ')//开前为space
{
system("cls");
cout<<"无效的输入!";
Sleep(1000);
continue;
}
else if(play[sjhang][sjlie]==(char)30||play[sjhang][sjlie]==(char)19)//开前为未开或者是标的雷
{
play[sjhang][sjlie]=tmp[sjhang][sjlie];//赋值
if(play[sjhang][sjlie]=='*')//799
{
system("cls");
for(i=1; i<=hang; ++i)
{
for(j=1; j<=lie; ++j)
{
if(tmp[i][j]=='*')
{
if(i==sjhang&&j==sjlie)
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
else
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_BLUE);
}
else
{
if(tmp[i][j]==' ')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(tmp[i][j]==(char)19)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
if(tmp[i][j]=='1')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
if(tmp[i][j]=='2')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
if(tmp[i][j]=='3')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
if(tmp[i][j]=='4')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
if(tmp[i][j]=='5')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
if(tmp[i][j]=='6')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(tmp[i][j]=='7')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
if(tmp[i][j]=='8')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
}
cout<<tmp[i][j]<<' ';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
cout<<'\n';
}
Sleep(1000);
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_BLUE);
cout<<"You lose.\nagain?:0\n";
cin>>again;
break;
}//踩到了雷
else if(play[sjhang][sjlie]==' ')//806
{
space(sjhang,sjlie);
for(i=0; i<=hang+1; ++i)
for(j=0; j<=lie+1; ++j)
cj[i][j]=0;
}//踩到了空格
}
else if(play[sjhang][sjlie]!=' '&&play[sjhang][sjlie]!=(char)19&&play[sjhang][sjlie]!=(char)30)//开前为数字
{
jsq=(int)play[sjhang][sjlie]-48;
if(tmp[sjhang-1][sjlie-1]=='*'&&play[sjhang-1][sjlie-1]==(char)19)sum++;
if(tmp[sjhang-1][sjlie ]=='*'&&play[sjhang-1][sjlie ]==(char)19)sum++;
if(tmp[sjhang-1][sjlie+1]=='*'&&play[sjhang-1][sjlie+1]==(char)19)sum++;
if(tmp[sjhang ][sjlie+1]=='*'&&play[sjhang ][sjlie+1]==(char)19)sum++;
if(tmp[sjhang+1][sjlie+1]=='*'&&play[sjhang+1][sjlie+1]==(char)19)sum++;
if(tmp[sjhang+1][sjlie ]=='*'&&play[sjhang+1][sjlie ]==(char)19)sum++;
if(tmp[sjhang+1][sjlie-1]=='*'&&play[sjhang+1][sjlie-1]==(char)19)sum++;
if(tmp[sjhang ][sjlie-1]=='*'&&play[sjhang ][sjlie-1]==(char)19)sum++;
if(tmp[sjhang-1][sjlie-1]!='*'&&play[sjhang-1][sjlie-1]==(char)19)
{
play[sjhang-1][sjlie-1]='X';
lose++;
}
if(tmp[sjhang-1][sjlie ]!='*'&&play[sjhang-1][sjlie ]==(char)19)
{
play[sjhang-1][sjlie ]='X';
lose++;
}
if(tmp[sjhang-1][sjlie+1]!='*'&&play[sjhang-1][sjlie+1]==(char)19)
{
play[sjhang-1][sjlie+1]='X';
lose++;
}
if(tmp[sjhang ][sjlie+1]!='*'&&play[sjhang ][sjlie+1]==(char)19)
{
play[sjhang ][sjlie+1]='X';
lose++;
}
if(tmp[sjhang+1][sjlie+1]!='*'&&play[sjhang+1][sjlie+1]==(char)19)
{
play[sjhang+1][sjlie+1]='X';
lose++;
}
if(tmp[sjhang+1][sjlie ]!='*'&&play[sjhang+1][sjlie ]==(char)19)
{
play[sjhang+1][sjlie ]='X';
lose++;
}
if(tmp[sjhang+1][sjlie-1]!='*'&&play[sjhang+1][sjlie-1]==(char)19)
{
play[sjhang+1][sjlie-1]='X';
lose++;
}
if(tmp[sjhang ][sjlie-1]!='*'&&play[sjhang ][sjlie-1]==(char)19)
{
play[sjhang ][sjlie-1]='X';
lose++;
}
if(sum==jsq&&lose==0)
{
if(play[sjhang-1][sjlie-1]!=(char)19&&play[sjhang-1][sjlie-1]!=' ')
{
play[sjhang-1][sjlie-1]=tmp[sjhang-1][sjlie-1];
if(play[sjhang-1][sjlie-1]==' ')space(sjhang-1,sjlie-1);
}
if(play[sjhang-1][sjlie ]!=(char)19&&play[sjhang-1][sjlie ]!=' ')
{
play[sjhang-1][sjlie ]=tmp[sjhang-1][sjlie ];
if(play[sjhang-1][sjlie ]==' ')space(sjhang-1,sjlie );
}
if(play[sjhang-1][sjlie+1]!=(char)19&&play[sjhang-1][sjlie+1]!=' ')
{
play[sjhang-1][sjlie+1]=tmp[sjhang-1][sjlie+1];
if(play[sjhang-1][sjlie+1]==' ')space(sjhang-1,sjlie+1);
}
if(play[sjhang ][sjlie+1]!=(char)19&&play[sjhang ][sjlie+1]!=' ')
{
play[sjhang ][sjlie+1]=tmp[sjhang ][sjlie+1];
if(play[sjhang ][sjlie+1]==' ')space(sjhang ,sjlie+1);
}
if(play[sjhang+1][sjlie+1]!=(char)19&&play[sjhang+1][sjlie+1]!=' ')
{
play[sjhang+1][sjlie+1]=tmp[sjhang+1][sjlie+1];
if(play[sjhang+1][sjlie+1]==' ')space(sjhang+1,sjlie+1);
}
if(play[sjhang+1][sjlie ]!=(char)19&&play[sjhang+1][sjlie ]!=' ')
{
play[sjhang+1][sjlie ]=tmp[sjhang+1][sjlie ];
if(play[sjhang+1][sjlie ]==' ')space(sjhang+1,sjlie );
}
if(play[sjhang+1][sjlie-1]!=(char)19&&play[sjhang+1][sjlie-1]!=' ')
{
play[sjhang+1][sjlie-1]=tmp[sjhang+1][sjlie-1];
if(play[sjhang+1][sjlie-1]==' ')space(sjhang+1,sjlie-1);
}
if(play[sjhang ][sjlie-1]!=(char)19&&play[sjhang ][sjlie-1]!=' ')
{
play[sjhang ][sjlie-1]=tmp[sjhang ][sjlie-1];
if(play[sjhang ][sjlie-1]==' ')space(sjhang ,sjlie-1);
}
}
else if(lose>0)
{
system("cls");
for(i=1; i<=hang; ++i)
{
for(j=1; j<=lie; ++j)
{
if(play[i][j]=='*')
{
if(i==sjhang&&j==sjlie)
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
else
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_BLUE);
}
else if(play[i][j]=='X')
{
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_GREEN);
}
else
{
if(play[i][j]==(char)30||play[i][j]==' ')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]==(char)19)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
if(play[i][j]=='1')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
if(play[i][j]=='2')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
if(play[i][j]=='3')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
if(play[i][j]=='4')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
if(play[i][j]=='5')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='6')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]=='7')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='8')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
}
cout<<play[i][j]<<' ';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
cout<<'\n';
}
Sleep(1000);
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_BLUE);
cout<<"You lose.\nagain?:0\n";
cin>>again;
break;
}
else if(sum<jsq)
{
system("cls");
cout<<"条件不满足!";
Sleep(1000);
continue;
}
}
}
}
return 0;
}
主函数完了。
700行。
两个函数:
void moshi()
{
HANDLE consolehwnd;//创建句柄
consolehwnd=GetStdHandle(STD_OUTPUT_HANDLE);//实例化句柄
system("cls");
jsq=0;
for(i=0; i<=hang; ++i)
{
if(i==0)
{
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
cout<<' ';
for(k=0; k<=lie; ++k)
{
if(k<10)cout<<k<<' ';
else cout<<k;
}
cout<<'\n';
continue;
}
for(j=0; j<=lie; ++j)
{
if(j==0)
{
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
cout<<setw(2)<<i<<' ';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
continue;
}
if(play[i][j]==(char)30||play[i][j]==(char)19)jsq++;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]=='1')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
if(play[i][j]=='2')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
if(play[i][j]=='3')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
if(play[i][j]=='4')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
if(play[i][j]=='5')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='6')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]=='7')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='8')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]==(char)19)SetConsoleTextAttribute(consolehwnd,FOREGROUND_RED);
cout<<play[i][j]<<' ';
}
cout<<'\n';
}
sjhang=0,sjlie=0;
cout<<"当前模式:标雷模式\n";
cout<<"行数:";
while(sjhang%10==0)
{
input=getch();
if(input=='/')
{
if(sjhang!=0)
{
cout<<'\n';
break;
}
else continue;
}
if(input=='0')
{
sjhang+=10;
cout<<"+10";
}
if(input=='1')
{
sjhang+=1;
cout<<"+1\n";
}
if(input=='2')
{
sjhang+=2;
cout<<"+2\n";
}
if(input=='3')
{
sjhang+=3;
cout<<"+3\n";
}
if(input=='4')
{
sjhang+=4;
cout<<"+4\n";
}
if(input=='5')
{
sjhang+=5;
cout<<"+5\n";
}
if(input=='6')
{
sjhang+=6;
cout<<"+6\n";
}
if(input=='7')
{
sjhang+=7;
cout<<"+7\n";
}
if(input=='8')
{
sjhang+=8;
cout<<"+8\n";
}
if(input=='9')
{
sjhang+=9;
cout<<"+9\n";
}
}
while(sjhang>hang)
{
cout<<"无效的输入!请重新输入!\n行数:";
while(sjhang%10==0)
{
input=getch();
if(input=='/')
{
if(sjhang!=0)
{
cout<<'\n';
break;
}
else continue;
}
if(input=='0')
{
sjhang+=10;
cout<<"+10";
}
if(input=='1')
{
sjhang+=1;
cout<<"+1\n";
}
if(input=='2')
{
sjhang+=2;
cout<<"+2\n";
}
if(input=='3')
{
sjhang+=3;
cout<<"+3\n";
}
if(input=='4')
{
sjhang+=4;
cout<<"+4\n";
}
if(input=='5')
{
sjhang+=5;
cout<<"+5\n";
}
if(input=='6')
{
sjhang+=6;
cout<<"+6\n";
}
if(input=='7')
{
sjhang+=7;
cout<<"+7\n";
}
if(input=='8')
{
sjhang+=8;
cout<<"+8\n";
}
if(input=='9')
{
sjhang+=9;
cout<<"+9\n";
}
}
}
cout<<"列数:";
while(sjlie%10==0)
{
input=getch();
if(input=='/')
{
if(sjlie!=0)
{
cout<<'\n';
break;
}
else continue;
}
if(input=='0')
{
sjlie+=10;
cout<<"+10";
}
if(input=='1')
{
sjlie+=1;
cout<<"+1\n";
}
if(input=='2')
{
sjlie+=2;
cout<<"+2\n";
}
if(input=='3')
{
sjlie+=3;
cout<<"+3\n";
}
if(input=='4')
{
sjlie+=4;
cout<<"+4\n";
}
if(input=='5')
{
sjlie+=5;
cout<<"+5\n";
}
if(input=='6')
{
sjlie+=6;
cout<<"+6\n";
}
if(input=='7')
{
sjlie+=7;
cout<<"+7\n";
}
if(input=='8')
{
sjlie+=8;
cout<<"+8\n";
}
if(input=='9')
{
sjlie+=9;
cout<<"+9\n";
}
}
while(sjlie>lie)
{
cout<<"无效的输入!请重新输入!\n列数:";
while(sjlie%10==0)
{
input=getch();
if(input=='/')
{
if(sjlie!=0)
{
cout<<'\n';
break;
}
else continue;
}
if(input=='0')
{
sjlie+=10;
cout<<"+10";
}
if(input=='1')
{
sjlie+=1;
cout<<"+1\n";
}
if(input=='2')
{
sjlie+=2;
cout<<"+2\n";
}
if(input=='3')
{
sjlie+=3;
cout<<"+3\n";
}
if(input=='4')
{
sjlie+=4;
cout<<"+4\n";
}
if(input=='5')
{
sjlie+=5;
cout<<"+5\n";
}
if(input=='6')
{
sjlie+=6;
cout<<"+6\n";
}
if(input=='7')
{
sjlie+=7;
cout<<"+7\n";
}
if(input=='8')
{
sjlie+=8;
cout<<"+8\n";
}
if(input=='9')
{
sjlie+=9;
cout<<"+9\n";
}
}
}
if(play[sjhang][sjlie]==' ')
{
system("cls");
cout<<"无效的输入!";
Sleep(1000);
moshi();
}
play[sjhang][sjlie]=(char)19;
}
void space(int i,int j)
{
HANDLE consolehwnd;//创建句柄
consolehwnd=GetStdHandle(STD_OUTPUT_HANDLE);//实例化句柄
system("cls");
for(int l=0; l<=hang; ++l)
{
if(l==0)
{
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
cout<<' ';
for(k=0; k<=lie; ++k)
{
if(k<10)cout<<k<<' ';
else cout<<k;
}
cout<<'\n';
continue;
}
for(int m=0; m<=lie; ++m)
{
if(m==0)
{
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
cout<<setw(2)<<l<<' ';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
continue;
}
if(play[i][j]==(char)30||play[i][j]==(char)19)jsq++;
if(play[i][j]==(char)30||play[i][j]==' ')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]==(char)19)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
if(play[i][j]=='1')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
if(play[i][j]=='2')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
if(play[i][j]=='3')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
if(play[i][j]=='4')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
if(play[i][j]=='5')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='6')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]=='7')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='8')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
cout<<play[i][j]<<' ';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
cout<<'\n';
}
cj[i][j]=1;
play[i-1][j-1]=tmp[i-1][j-1],play[i-1][j]=tmp[i-1][j],play[i-1][j+1]=tmp[i-1][j+1],play[i][j+1]=tmp[i][j+1],play[i+1][j+1]=tmp[i+1][j+1],play[i+1][j]=tmp[i+1][j],play[i+1][j-1]=tmp[i+1][j-1],play[i][j-1]=tmp[i][j-1];
if(i>=1&&j>=1&&i<=hang&&j<=lie)
{
if(cj[i-1][j-1]==0&&tmp[i-1][j-1]==' ')
{
space(i-1,j-1);
}
if(cj[i-1][j]==0&&tmp[i-1][j]==' ')
{
space(i-1,j);
}
if(cj[i-1][j+1]==0&&tmp[i-1][j+1]==' ')
{
space(i-1,j+1);
}
if(cj[i][j+1]==0&&tmp[i][j+1]==' ')
{
space(i,j+1);
}
if(cj[i+1][j+1]==0&&tmp[i+1][j+1]==' ')
{
space(i+1,j+1);
}
if(cj[i+1][j]==0&&tmp[i+1][j]==' ')
{
space(i+1,j);
}
if(cj[i+1][j-1]==0&&tmp[i+1][j-1]==' ')
{
space(i+1,j-1);
}
if(cj[i][j-1]==0&&tmp[i][j-1]==' ')
{
space(i,j-1);
}
}
}
1100行,完美收工。
完整代码
免复制:(网址还没放上来)
#include<conio.h>
#include<stdlib.h>
#include<windows.h>
#include<bits/stdc++.h>
using namespace std;
int again=0,hang,lie,lei,jsq,sjhang,sjlie,cj[40][40],i,j,k,ms=0,sum=0,lose=0;
char tmp[40][40],play[40][40],input;
void space(int i,int j);
void moshi();
int main()
{
HANDLE consolehwnd;//创建句柄
consolehwnd=GetStdHandle(STD_OUTPUT_HANDLE);//实例化句柄
srand(time(NULL));
while(again==0)
{
system("cls");//20
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_BLUE);
cout<<"welcome to minesweeper!\n初级:10X10,10个雷:1\n中级:16X16,40个雷:2\n高级:16X30,99个雷:3\n自定义:其它数字\n";
cin>>jsq;
if(jsq==1)hang=10,lie=10,lei=10;
else if(jsq==2)hang=16,lie=16,lei=40;
else if(jsq==3)hang=16,lie=30,lei=99;
else
{
system("cls");
cout<<"行数:";
cin>>hang;
cout<<"列数:";
cin>>lie;
cout<<"雷数:";
cin>>lei;
if(hang<9)hang=9;
if(hang>24)hang=24;
if(lie<9)lie=9;
if(lie>30)lie=30;
if(lei>688)lei=688;
if(lei<10)lei=10;
if(lei<hang*lie/72)lei=hang*lie/72;
if(lei>hang*lie*9/10)lei=hang*lie*9/10;//变量的准备
}
cout<<"开启开局作弊?开:1,关:0\n";
cin>>jsq;
cout<<"------------------------------\n";
for(i=0; i<hang+1; ++i)//22
{
for(j=0; j<lie+1; ++j)
{
tmp[i][j]='0';
}
}//初始化地图为0
for(i=0; i<lei; ++i)//39
{
sjhang=rand()%hang+1,sjlie=rand()%lie+1;
while(tmp[sjhang][sjlie]=='*')
{
sjhang=rand()%hang+1,sjlie=rand()%lie+1;
}
tmp[sjhang][sjlie]='*';
}//随机设置雷
for(i=1; i<=hang; ++i) //54
{
for(j=1; j<=lie; ++j)
{
if(tmp[i ][j ]=='*')continue;
if(tmp[i-1][j-1]=='*')tmp[i][j]++;
if(tmp[i-1][j ]=='*')tmp[i][j]++;
if(tmp[i-1][j+1]=='*')tmp[i][j]++;
if(tmp[i ][j+1]=='*')tmp[i][j]++;
if(tmp[i+1][j+1]=='*')tmp[i][j]++;
if(tmp[i+1][j ]=='*')tmp[i][j]++;
if(tmp[i+1][j-1]=='*')tmp[i][j]++;
if(tmp[i ][j-1]=='*')tmp[i][j]++;
}
}//数字
for(i=1; i<=hang; ++i) //69
{
for(j=1; j<=lie; ++j)
{
if(tmp[i][j]=='0')
{
tmp[i][j]=' ';
}
}
}//空格
for(i=1; i<=hang; ++i)
{
for(j=1; j<=lie; ++j)
{
play[i][j]=(char)30;
}
}
//begin
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_GREEN);
cout<<"正在准备棋盘.";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
if(jsq==1)
{
cout<<"\n正在进行作弊.";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
cout<<".";
Sleep(1000/3);
sjhang=rand()%hang+1,sjlie=rand()%lie+1;
jsq=0;
while(tmp[sjhang][sjlie]!=' '&&jsq<hang*lie)
{
sjhang=rand()%hang+1,sjlie=rand()%lie+1;
jsq++;
}
while(tmp[sjhang][sjlie]=='*')
{
sjhang=rand()%hang+1,sjlie=rand()%lie+1;
jsq++;
}
play[sjhang][sjlie]=tmp[sjhang][sjlie];
if(jsq<hang*lie||jsq==hang*lie)
space(sjhang,sjlie);
}
while(jsq!=lei)
{
system("cls");
jsq=0,sum=0;
for(i=0; i<=hang; ++i)//484
{
if(i==0)
{
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
cout<<' ';
for(k=0; k<=lie; ++k)
{
if(k<10)cout<<k<<' ';
else cout<<k;
}
cout<<'\n';
continue;
}
for(j=0; j<=lie; ++j)
{
if(j==0)
{
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
cout<<setw(2)<<i<<' ';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
continue;
}
if(play[i][j]==(char)30||play[i][j]==(char)19)jsq++;
if(play[i][j]==(char)30||play[i][j]==' ')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]==(char)19)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
if(play[i][j]=='1')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
if(play[i][j]=='2')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
if(play[i][j]=='3')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
if(play[i][j]=='4')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
if(play[i][j]=='5')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='6')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]=='7')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='8')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
cout<<play[i][j]<<' ';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
cout<<'\n';
}//输出
if(jsq==lei)//501
{
Sleep(1000);
system("cls");
for(i=1; i<=hang; ++i)
{
for(j=1; j<=lie; ++j)
{
if(tmp[i][j]=='*')
{
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
play[i][j]='*';
}
else
{
if(play[i][j]==(char)30||play[i][j]==' ')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]==(char)19)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
if(play[i][j]=='1')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
if(play[i][j]=='2')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
if(play[i][j]=='3')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
if(play[i][j]=='4')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
if(play[i][j]=='5')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='6')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]=='7')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='8')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
}
cout<<play[i][j]<<' ';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
cout<<'\n';
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
cout<<"You win.\nagain:0\n";
cin>>again;
continue;
}//胜利条件
sjhang=0,sjlie=0,ms=0,lose=0,sum=0;
cout<<"当前模式:开方块模式\n";
cout<<"行数:(切换模式请按A。)";
while(sjhang%10==0)
{
input=getch();
if(input=='A'||input=='a')
{
ms=1;
moshi();
break;
}
if(input=='/')
{
if(sjhang!=0)
{
cout<<'\n';
break;
}
else continue;
}
if(input=='0')
{
sjhang+=10;
cout<<"+10";
}
if(input=='1')
{
sjhang+=1;
cout<<"+1\n";
}
if(input=='2')
{
sjhang+=2;
cout<<"+2\n";
}
if(input=='3')
{
sjhang+=3;
cout<<"+3\n";
}
if(input=='4')
{
sjhang+=4;
cout<<"+4\n";
}
if(input=='5')
{
sjhang+=5;
cout<<"+5\n";
}
if(input=='6')
{
sjhang+=6;
cout<<"+6\n";
}
if(input=='7')
{
sjhang+=7;
cout<<"+7\n";
}
if(input=='8')
{
sjhang+=8;
cout<<"+8\n";
}
if(input=='9')
{
sjhang+=9;
cout<<"+9\n";
}
}
if(ms==1)
continue;
while(sjhang>hang)
{
cout<<"无效的输入!请重新输入!\n行数:";
sjhang=0;
while(sjhang%10==0)
{
input=getch();
if(input=='/')
{
if(sjhang!=0)
{
cout<<'\n';
break;
}
else continue;
}
if(input=='0')
{
sjhang+=10;
cout<<"+10";
}
if(input=='1')
{
sjhang+=1;
cout<<"+1\n";
}
if(input=='2')
{
sjhang+=2;
cout<<"+2\n";
}
if(input=='3')
{
sjhang+=3;
cout<<"+3\n";
}
if(input=='4')
{
sjhang+=4;
cout<<"+4\n";
}
if(input=='5')
{
sjhang+=5;
cout<<"+5\n";
}
if(input=='6')
{
sjhang+=6;
cout<<"+6\n";
}
if(input=='7')
{
sjhang+=7;
cout<<"+7\n";
}
if(input=='8')
{
sjhang+=8;
cout<<"+8\n";
}
if(input=='9')
{
sjhang+=9;
cout<<"+9\n";
}
}
}
cout<<"列数:";
while(sjlie%10==0)
{
input=getch();
if(input=='/')
{
if(sjlie!=0)
{
cout<<'\n';
break;
}
else continue;
}
if(input=='0')
{
sjlie+=10;
cout<<"+10";
}
if(input=='1')
{
sjlie+=1;
cout<<"+1\n";
}
if(input=='2')
{
sjlie+=2;
cout<<"+2\n";
}
if(input=='3')
{
sjlie+=3;
cout<<"+3\n";
}
if(input=='4')
{
sjlie+=4;
cout<<"+4\n";
}
if(input=='5')
{
sjlie+=5;
cout<<"+5\n";
}
if(input=='6')
{
sjlie+=6;
cout<<"+6\n";
}
if(input=='7')
{
sjlie+=7;
cout<<"+7\n";
}
if(input=='8')
{
sjlie+=8;
cout<<"+8\n";
}
if(input=='9')
{
sjlie+=9;
cout<<"+9\n";
}
}
while(sjlie>lie)
{
cout<<"无效的输入!请重新输入!\n列数:";
sjlie=0;
while(sjlie%10==0)
{
input=getch();
if(input=='/')
{
if(sjlie!=0)
{
cout<<'\n';
break;
}
else continue;
}
if(input=='0')
{
sjlie+=10;
cout<<"+10";
}
if(input=='1')
{
sjlie+=1;
cout<<"+1\n";
}
if(input=='2')
{
sjlie+=2;
cout<<"+2\n";
}
if(input=='3')
{
sjlie+=3;
cout<<"+3\n";
}
if(input=='4')
{
sjlie+=4;
cout<<"+4\n";
}
if(input=='5')
{
sjlie+=5;
cout<<"+5\n";
}
if(input=='6')
{
sjlie+=6;
cout<<"+6\n";
}
if(input=='7')
{
sjlie+=7;
cout<<"+7\n";
}
if(input=='8')
{
sjlie+=8;
cout<<"+8\n";
}
if(input=='9')
{
sjlie+=9;
cout<<"+9\n";
}
}
}
if(play[sjhang][sjlie]==' ')//开前为space
{
system("cls");
cout<<"无效的输入!";
Sleep(1000);
continue;
}
else if(play[sjhang][sjlie]==(char)30||play[sjhang][sjlie]==(char)19)//开前为未开或者是标的雷
{
play[sjhang][sjlie]=tmp[sjhang][sjlie];//赋值
if(play[sjhang][sjlie]=='*')//799
{
system("cls");
for(i=1; i<=hang; ++i)
{
for(j=1; j<=lie; ++j)
{
if(tmp[i][j]=='*')
{
if(i==sjhang&&j==sjlie)
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
else
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_BLUE);
}
else
{
if(tmp[i][j]==' ')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(tmp[i][j]==(char)19)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
if(tmp[i][j]=='1')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
if(tmp[i][j]=='2')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
if(tmp[i][j]=='3')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
if(tmp[i][j]=='4')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
if(tmp[i][j]=='5')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
if(tmp[i][j]=='6')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(tmp[i][j]=='7')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
if(tmp[i][j]=='8')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
}
cout<<tmp[i][j]<<' ';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
cout<<'\n';
}
Sleep(1000);
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_BLUE);
cout<<"You lose.\nagain?:0\n";
cin>>again;
break;
}//踩到了雷
else if(play[sjhang][sjlie]==' ')//806
{
space(sjhang,sjlie);
for(i=0; i<=hang+1; ++i)
for(j=0; j<=lie+1; ++j)
cj[i][j]=0;
}//踩到了空格
}
else if(play[sjhang][sjlie]!=' '&&play[sjhang][sjlie]!=(char)19&&play[sjhang][sjlie]!=(char)30)//开前为数字
{
jsq=(int)play[sjhang][sjlie]-48;
if(tmp[sjhang-1][sjlie-1]=='*'&&play[sjhang-1][sjlie-1]==(char)19)sum++;
if(tmp[sjhang-1][sjlie ]=='*'&&play[sjhang-1][sjlie ]==(char)19)sum++;
if(tmp[sjhang-1][sjlie+1]=='*'&&play[sjhang-1][sjlie+1]==(char)19)sum++;
if(tmp[sjhang ][sjlie+1]=='*'&&play[sjhang ][sjlie+1]==(char)19)sum++;
if(tmp[sjhang+1][sjlie+1]=='*'&&play[sjhang+1][sjlie+1]==(char)19)sum++;
if(tmp[sjhang+1][sjlie ]=='*'&&play[sjhang+1][sjlie ]==(char)19)sum++;
if(tmp[sjhang+1][sjlie-1]=='*'&&play[sjhang+1][sjlie-1]==(char)19)sum++;
if(tmp[sjhang ][sjlie-1]=='*'&&play[sjhang ][sjlie-1]==(char)19)sum++;
if(tmp[sjhang-1][sjlie-1]!='*'&&play[sjhang-1][sjlie-1]==(char)19)
{
play[sjhang-1][sjlie-1]='X';
lose++;
}
if(tmp[sjhang-1][sjlie ]!='*'&&play[sjhang-1][sjlie ]==(char)19)
{
play[sjhang-1][sjlie ]='X';
lose++;
}
if(tmp[sjhang-1][sjlie+1]!='*'&&play[sjhang-1][sjlie+1]==(char)19)
{
play[sjhang-1][sjlie+1]='X';
lose++;
}
if(tmp[sjhang ][sjlie+1]!='*'&&play[sjhang ][sjlie+1]==(char)19)
{
play[sjhang ][sjlie+1]='X';
lose++;
}
if(tmp[sjhang+1][sjlie+1]!='*'&&play[sjhang+1][sjlie+1]==(char)19)
{
play[sjhang+1][sjlie+1]='X';
lose++;
}
if(tmp[sjhang+1][sjlie ]!='*'&&play[sjhang+1][sjlie ]==(char)19)
{
play[sjhang+1][sjlie ]='X';
lose++;
}
if(tmp[sjhang+1][sjlie-1]!='*'&&play[sjhang+1][sjlie-1]==(char)19)
{
play[sjhang+1][sjlie-1]='X';
lose++;
}
if(tmp[sjhang ][sjlie-1]!='*'&&play[sjhang ][sjlie-1]==(char)19)
{
play[sjhang ][sjlie-1]='X';
lose++;
}
if(sum==jsq&&lose==0)
{
if(play[sjhang-1][sjlie-1]!=(char)19&&play[sjhang-1][sjlie-1]!=' ')
{
play[sjhang-1][sjlie-1]=tmp[sjhang-1][sjlie-1];
if(play[sjhang-1][sjlie-1]==' ')space(sjhang-1,sjlie-1);
}
if(play[sjhang-1][sjlie ]!=(char)19&&play[sjhang-1][sjlie ]!=' ')
{
play[sjhang-1][sjlie ]=tmp[sjhang-1][sjlie ];
if(play[sjhang-1][sjlie ]==' ')space(sjhang-1,sjlie );
}
if(play[sjhang-1][sjlie+1]!=(char)19&&play[sjhang-1][sjlie+1]!=' ')
{
play[sjhang-1][sjlie+1]=tmp[sjhang-1][sjlie+1];
if(play[sjhang-1][sjlie+1]==' ')space(sjhang-1,sjlie+1);
}
if(play[sjhang ][sjlie+1]!=(char)19&&play[sjhang ][sjlie+1]!=' ')
{
play[sjhang ][sjlie+1]=tmp[sjhang ][sjlie+1];
if(play[sjhang ][sjlie+1]==' ')space(sjhang ,sjlie+1);
}
if(play[sjhang+1][sjlie+1]!=(char)19&&play[sjhang+1][sjlie+1]!=' ')
{
play[sjhang+1][sjlie+1]=tmp[sjhang+1][sjlie+1];
if(play[sjhang+1][sjlie+1]==' ')space(sjhang+1,sjlie+1);
}
if(play[sjhang+1][sjlie ]!=(char)19&&play[sjhang+1][sjlie ]!=' ')
{
play[sjhang+1][sjlie ]=tmp[sjhang+1][sjlie ];
if(play[sjhang+1][sjlie ]==' ')space(sjhang+1,sjlie );
}
if(play[sjhang+1][sjlie-1]!=(char)19&&play[sjhang+1][sjlie-1]!=' ')
{
play[sjhang+1][sjlie-1]=tmp[sjhang+1][sjlie-1];
if(play[sjhang+1][sjlie-1]==' ')space(sjhang+1,sjlie-1);
}
if(play[sjhang ][sjlie-1]!=(char)19&&play[sjhang ][sjlie-1]!=' ')
{
play[sjhang ][sjlie-1]=tmp[sjhang ][sjlie-1];
if(play[sjhang ][sjlie-1]==' ')space(sjhang ,sjlie-1);
}
}
else if(lose>0)
{
system("cls");
for(i=1; i<=hang; ++i)
{
for(j=1; j<=lie; ++j)
{
if(play[i][j]=='*')
{
if(i==sjhang&&j==sjlie)
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
else
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_BLUE);
}
else if(play[i][j]=='X')
{
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_GREEN);
}
else
{
if(play[i][j]==(char)30||play[i][j]==' ')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]==(char)19)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
if(play[i][j]=='1')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
if(play[i][j]=='2')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
if(play[i][j]=='3')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
if(play[i][j]=='4')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
if(play[i][j]=='5')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='6')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]=='7')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='8')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
}
cout<<play[i][j]<<' ';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
cout<<'\n';
}
Sleep(1000);
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_BLUE);
cout<<"You lose.\nagain?:0\n";
cin>>again;
break;
}
else if(sum<jsq)
{
system("cls");
cout<<"条件不满足!";
Sleep(1000);
continue;
}
}
}
}
return 0;
}
void moshi()
{
HANDLE consolehwnd;//创建句柄
consolehwnd=GetStdHandle(STD_OUTPUT_HANDLE);//实例化句柄
system("cls");
jsq=0;
for(i=0; i<=hang; ++i)
{
if(i==0)
{
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
cout<<' ';
for(k=0; k<=lie; ++k)
{
if(k<10)cout<<k<<' ';
else cout<<k;
}
cout<<'\n';
continue;
}
for(j=0; j<=lie; ++j)
{
if(j==0)
{
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
cout<<setw(2)<<i<<' ';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
continue;
}
if(play[i][j]==(char)30||play[i][j]==(char)19)jsq++;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]=='1')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
if(play[i][j]=='2')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
if(play[i][j]=='3')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
if(play[i][j]=='4')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
if(play[i][j]=='5')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='6')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]=='7')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='8')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]==(char)19)SetConsoleTextAttribute(consolehwnd,FOREGROUND_RED);
cout<<play[i][j]<<' ';
}
cout<<'\n';
}
sjhang=0,sjlie=0;
cout<<"当前模式:标雷模式\n";
cout<<"行数:";
while(sjhang%10==0)
{
input=getch();
if(input=='/')
{
if(sjhang!=0)
{
cout<<'\n';
break;
}
else continue;
}
if(input=='0')
{
sjhang+=10;
cout<<"+10";
}
if(input=='1')
{
sjhang+=1;
cout<<"+1\n";
}
if(input=='2')
{
sjhang+=2;
cout<<"+2\n";
}
if(input=='3')
{
sjhang+=3;
cout<<"+3\n";
}
if(input=='4')
{
sjhang+=4;
cout<<"+4\n";
}
if(input=='5')
{
sjhang+=5;
cout<<"+5\n";
}
if(input=='6')
{
sjhang+=6;
cout<<"+6\n";
}
if(input=='7')
{
sjhang+=7;
cout<<"+7\n";
}
if(input=='8')
{
sjhang+=8;
cout<<"+8\n";
}
if(input=='9')
{
sjhang+=9;
cout<<"+9\n";
}
}
while(sjhang>hang)
{
cout<<"无效的输入!请重新输入!\n行数:";
while(sjhang%10==0)
{
input=getch();
if(input=='/')
{
if(sjhang!=0)
{
cout<<'\n';
break;
}
else continue;
}
if(input=='0')
{
sjhang+=10;
cout<<"+10";
}
if(input=='1')
{
sjhang+=1;
cout<<"+1\n";
}
if(input=='2')
{
sjhang+=2;
cout<<"+2\n";
}
if(input=='3')
{
sjhang+=3;
cout<<"+3\n";
}
if(input=='4')
{
sjhang+=4;
cout<<"+4\n";
}
if(input=='5')
{
sjhang+=5;
cout<<"+5\n";
}
if(input=='6')
{
sjhang+=6;
cout<<"+6\n";
}
if(input=='7')
{
sjhang+=7;
cout<<"+7\n";
}
if(input=='8')
{
sjhang+=8;
cout<<"+8\n";
}
if(input=='9')
{
sjhang+=9;
cout<<"+9\n";
}
}
}
cout<<"列数:";
while(sjlie%10==0)
{
input=getch();
if(input=='/')
{
if(sjlie!=0)
{
cout<<'\n';
break;
}
else continue;
}
if(input=='0')
{
sjlie+=10;
cout<<"+10";
}
if(input=='1')
{
sjlie+=1;
cout<<"+1\n";
}
if(input=='2')
{
sjlie+=2;
cout<<"+2\n";
}
if(input=='3')
{
sjlie+=3;
cout<<"+3\n";
}
if(input=='4')
{
sjlie+=4;
cout<<"+4\n";
}
if(input=='5')
{
sjlie+=5;
cout<<"+5\n";
}
if(input=='6')
{
sjlie+=6;
cout<<"+6\n";
}
if(input=='7')
{
sjlie+=7;
cout<<"+7\n";
}
if(input=='8')
{
sjlie+=8;
cout<<"+8\n";
}
if(input=='9')
{
sjlie+=9;
cout<<"+9\n";
}
}
while(sjlie>lie)
{
cout<<"无效的输入!请重新输入!\n列数:";
while(sjlie%10==0)
{
input=getch();
if(input=='/')
{
if(sjlie!=0)
{
cout<<'\n';
break;
}
else continue;
}
if(input=='0')
{
sjlie+=10;
cout<<"+10";
}
if(input=='1')
{
sjlie+=1;
cout<<"+1\n";
}
if(input=='2')
{
sjlie+=2;
cout<<"+2\n";
}
if(input=='3')
{
sjlie+=3;
cout<<"+3\n";
}
if(input=='4')
{
sjlie+=4;
cout<<"+4\n";
}
if(input=='5')
{
sjlie+=5;
cout<<"+5\n";
}
if(input=='6')
{
sjlie+=6;
cout<<"+6\n";
}
if(input=='7')
{
sjlie+=7;
cout<<"+7\n";
}
if(input=='8')
{
sjlie+=8;
cout<<"+8\n";
}
if(input=='9')
{
sjlie+=9;
cout<<"+9\n";
}
}
}
if(play[sjhang][sjlie]==' ')
{
system("cls");
cout<<"无效的输入!";
Sleep(1000);
moshi();
}
play[sjhang][sjlie]=(char)19;
}
void space(int i,int j)
{
HANDLE consolehwnd;//创建句柄
consolehwnd=GetStdHandle(STD_OUTPUT_HANDLE);//实例化句柄
system("cls");
for(int l=0; l<=hang; ++l)
{
if(l==0)
{
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
cout<<' ';
for(k=0; k<=lie; ++k)
{
if(k<10)cout<<k<<' ';
else cout<<k;
}
cout<<'\n';
continue;
}
for(int m=0; m<=lie; ++m)
{
if(m==0)
{
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_RED);
cout<<setw(2)<<l<<' ';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
continue;
}
if(play[i][j]==(char)30||play[i][j]==(char)19)jsq++;
if(play[i][j]==(char)30||play[i][j]==' ')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]==(char)19)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
if(play[i][j]=='1')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
if(play[i][j]=='2')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
if(play[i][j]=='3')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
if(play[i][j]=='4')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
if(play[i][j]=='5')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='6')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(play[i][j]=='7')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
if(play[i][j]=='8')SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
cout<<play[i][j]<<' ';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
cout<<'\n';
}
cj[i][j]=1;
play[i-1][j-1]=tmp[i-1][j-1],play[i-1][j]=tmp[i-1][j],play[i-1][j+1]=tmp[i-1][j+1],play[i][j+1]=tmp[i][j+1],play[i+1][j+1]=tmp[i+1][j+1],play[i+1][j]=tmp[i+1][j],play[i+1][j-1]=tmp[i+1][j-1],play[i][j-1]=tmp[i][j-1];
if(i>=1&&j>=1&&i<=hang&&j<=lie)
{
if(cj[i-1][j-1]==0&&tmp[i-1][j-1]==' ')
{
space(i-1,j-1);
}
if(cj[i-1][j]==0&&tmp[i-1][j]==' ')
{
space(i-1,j);
}
if(cj[i-1][j+1]==0&&tmp[i-1][j+1]==' ')
{
space(i-1,j+1);
}
if(cj[i][j+1]==0&&tmp[i][j+1]==' ')
{
space(i,j+1);
}
if(cj[i+1][j+1]==0&&tmp[i+1][j+1]==' ')
{
space(i+1,j+1);
}
if(cj[i+1][j]==0&&tmp[i+1][j]==' ')
{
space(i+1,j);
}
if(cj[i+1][j-1]==0&&tmp[i+1][j-1]==' ')
{
space(i+1,j-1);
}
if(cj[i][j-1]==0&&tmp[i][j-1]==' ')
{
space(i,j-1);
}
}
}
后记
全身心打造c++游戏,全免费。
|