一个简单的扫雷程序(c++可编译)

有一个未知错误但是大部分基本都可以玩(请高手指正)

有注释的

玩法: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" <&
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值