有一个未知错误但是大部分基本都可以玩(请高手指正)
有注释的
玩法:wasd控制指针移动,空格翻开,f插旗,p自爆,想把旗去掉就直接翻开
#include <bits/stdc++.h>
#include <windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
using namespace std;
string mines0[81]; // 平铺的雷(用于随机埋雷)
string status[9][9]; // 雷区状态(用于判断)
string outstatus[9][9]; // 显示状态(用于显示)
string out = ""; // 会在fan()函数前面注释解释
int s; // 此区域周围雷数(用于标数字)
int x = 1; // 指针坐标x
int y = 1; // 指针坐标y
int win = 0; // 0为正在游戏,1为胜利,-1为失败,-2为自爆
int mine = 0; // 剩余雷数
map<string, int> col = { // 颜色名称对应的颜色代码
{"dblue", 1},
{"dgreen", 2},
{"dteal", 3},
{"dred", 4},
{"dpink", 5},
{"yellow", 6},
{"dwhite", 7},
{"grey", 8},
{"lblue", 9},
{"lgreen", 10},
{"lteal", 11},
{"lred", 12},
{"lpink", 13},
{"lyellow", 14},
{"lwhite", 15}
};
map<string, string> codesty = { // 状态代码对应的显示图标
{"no", "□"},
{"1", " 1"},
{"2", " 2"},
{"3", " 3"},
{"4", " 4"},
{"5", " 5"},
{"6", " 6"},
{"7", " 7"},
{"8", " 8"},
{"mine", "¤"},
{"flag", " F"},
{"nfan", "■"},
{"point", "♂"}
};
map<string, string> codecol = { // 状态代码对应的颜色名称
{"no", "grey"},
{"1", "lblue"},
{"2", "dgreen"},
{"3", "lred"},
{"4", "dblue"},
{"5", "dpink"},
{"6", "lteal"},
{"7", "dteal"},
{"8", "lgreen"},
{"mine", "dred"},
{"flag", "lyellow"},
{"nfan", "lwhite"},
{"point", "dwhite"}
};
void clearbuf() { // 清屏
system("cls");
}
void color(string a) { // 设置文本颜色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), col[a]);
}
void say(int a) { // 输出 a=1正常 a=0直接把所有内部都输出
color("lwhite");
cout << " 1 2 3 4 5 6 7 8 9" <&