#include<bits/stdc++.h>
#include<windows.h>
#include <conio.h>
using namespace std;
void hide() {
HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord;
	CONSOLE_CURSOR_INFO cursor_info = {1, 0};
	SetConsoleCursorInfo(hout, &cursor_info);
}
struct tree{ 
	bool w,w1;
	int t;
	int x,y;
}mat[40][25],we;
struct house{
	int m,x,y;
}a[60][90],ho;
const int hos=2,ii=16,iii=6,iiii=6,iiiii=7,i2=2,gzi=4,y=4;//ii物品iiii建筑iiiii道具iii设计图 i2装备 y药水
long long go,tian=1,sheng=20,dongs[ii],shec[iii]={4,6,9},shez[iii]={2,4,3},shew[iii]={3,5,8},ti=10,tlsx=10;
char map2[61][90],mapsc[37][37];//输出打印的数组 
bool czjs=false;
string name,she[iii]={"火把设计图(2木材)","熔炉设计图(4石头)","镐子设计图(不同镐子不同)(通用)","锻造锤设计图(2木材8铁锭2尼龙线)","锻造台设计图(10铁锭2石头6木材)","铁砧设计图(20铁)"}; 
string ddong[ii]={"矿泉水","面包","空矿泉水瓶","木材","火把","石头","熔炉(周围要1火把)(' '熔炼)","粗铁","铁锭","垃圾","皮革","废弃的尼龙线","血袋","钛","钛矿","钛合金锭"},mmap[7]={"森林(0.退出)","小溪","石场"};
string jianzhu[iiii]={"篝火","鱼缸","锻造台","铁砧","纺织机","制药台"},daojv[iiiii]={"捕鱼陷阱","皮衣","锻造锤","针","快烧核心","滤网","采集棒"}; 
string fish[2]={"生鱼","烤鱼(体力+7,生命+2)"};//输出fish 
string gz[gzi]={"木镐(3木)","石镐(3石)","铁镐(3铁)","钛合金搞(5钛合金2铁)"};
int gz1[gzi];
string zy[y]={"大胃袋药水(体力上限变为20点)(使用后不会立马回满)","饱腹药水(体力回满)","生命恢复药水(生命立马回满)","再生药水(每天恢复7点血)"};
int ys[y];//数量
bool yssjt[y];//设计图
int sg;//试管
int zs=0;//再生药水恢复周期
int zycl[y],sl[y]={25,2,1,1};//制药材料,制药材料数量
string zyclstr[y]={"上皮组织","鱼油","血块","人参"};
int zyf=0;//制药粉
string zysjt[y]={"25管上皮组织(1玻璃胚胎做玻璃瓶,1钛合金做采集棒)1袋制药粉","2坨鱼油1袋制药粉","1血块1袋制药粉","1人参1袋制药粉"};//制药设计图
int jianzhu1[iiii],daojv1[iiiii];
int fish1[2]={0,0},w1,yg=0;//fish数量 
string zb[i2]={"皮衣(40皮革6尼龙线)","皮帽(7皮革2木材2尼龙线)"};
bool zbbool[i2]={false,false};
char work[iii+iiii+1]={' ',' ','!','n','@','~','#','z','m','T'};//工作方块标记 
long long jian[hos]={4,6};
int gaoz[gzi],gznj[gzi]={3,5,9,18};//gznj是耐久 
int ks[3]={5,7,14};//结构体数组(方便挖矿++)
bool ljy=false,ljyts=false;
bool hg=false,w=false,js=false; //判断有没有点亮的篝火 w有没有网js有没有解锁捕鱼玩法 
bool shes[iii];
bool gh[61][90],dzt[61][90],ksrl[61][90];
int water=10; 
int qhq;//强化熔炉
int sz,blsp,blcx,blp,fwx;//sz沙子blsp玻璃碎片blcx玻璃雏形blp玻璃瓶fwx渔网x轴
bool rlqh[61][90];
bool mm=false;
int cdx,cdy,cd=false;//彩蛋
int ldlskcs=0;//炼丹炉打开次数
bool key=false,ct=false,opendoor=false;//钥匙
string mms="AKNOI";//药店金库密码
bool dt=false;//城镇中的地图
int cddj=0;//彩蛋跺脚(太上老君)
bool xd1=false,xd2=false,xd3=false;//仙丹
char cz[30][30]={                         //城镇
	'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','.','s','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','#','#','#','#','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','#','#','#','#','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','#','#','N','#','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','v','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','.','.','.','.','.','.','d','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','.','.','.','.','.','d','.','.','.','L','.','.','^','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','.','^','^','^','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','|','.','.','.','.','.','.','.','.','.','^','^','^','^','^','.','.','/','.','.','.','.','.','.','.','.','.','.','.',
	'.','|','.','.','.','.','.','.','.','.','.','#','#','#','#','#','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','|','.','.','.','.','.','.','.','.','.','#','#','#','#','#','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','#','#','#','#','#','.','.','.','.','.','.',';','.','.','.','.','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','#','#','N','#','#','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','.','.','.','}','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','=','.','.','.','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'.','.','.','.','.','.','.','.','.','.','[','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'#','#','#','N','#','#','#','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'#','#','#','#','#','#','#','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'#','#','#','#','#','#','#','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
	'#','#','#','#','#','#','#','.','.','.','.','.','.','_',' ','_','.','.','.','.','.','.','.','-','.','.','.','.','.','.'//民宿楼
};
bool bxjs=false;//保险解锁 
void csh() {//初始化数组 
	memset(map2,'.',sizeof(map2));
}
void ghbecomefalse(){
	for(int i=0;i<60;i++){ 
		for(int j=0;j<90;j++){
		 gh[i][j]=false;
		}
	}
	hg=false;
}//篝火变false 
void rlqhbecomefalse(){
	for(int i=0;i<60;i++){ 
		for(int j=0;j<90;j++){
		 rlqh[i][j]=false;
		}
	}
}
void dztbecomefalse(){
	for(int i=0;i<60;i++){ 
		for(int j=0;j<90;j++){
		 dzt[i][j]=false;
		}
	}
	hg=false;
}//锻造台变false 
void ksrlbecomefalse(){
	for(int i=0;i<60;i++){ 
		for(int j=0;j<90;j++){
		 ksrl[i][j]=false;
		}
	}
}//熔炉速度变false
void hnt(){//回南天 
	Sleep(500);
	cout<<"今天是回南天,木头有一半都发霉了\n";
	dongs[3]=dongs[3]/2;
	Sleep(2000);
	system("cls");
} 
void df(){//大风天 
	Sleep(500);
	cout<<"今天刮大风,你的篝火都熄灭了\n";
	hg=false;
	ghbecomefalse();
	Sleep(2000);
	system("cls");
} 
void lkq(){//冷空气 
	Sleep(500);
	cout<<"今天有冷空气到来,";
	if(hg==true)cout<<"不过你有温暖的篝火\n";
	else{
		cout<<"你没有取暖的东西,着凉了(血-6)"; 
		sheng-=6;
	}
	Sleep(2000);
	system("cls");
} void drt(){//冷空气 
	Sleep(500);
	cout<<"今天三日凌空(热)到来,";
	if(zbbool[1]==true)cout<<"不过你有帽子挡太阳\n";
	else{
		cout<<"你没有帽子挡太阳,中暑(血-10)"; 
		sheng-=10;
	}
	Sleep(2000);
	system("cls");
}
void tq(){//随即天气事件 
	int n=rand()%10+1;
	if(n==1){
		system("cls");
		cout<<"今天天气有所转变\n";
		n=rand()%3+1;  
		if(n==1){
			hnt();
		}if(n==2){
			lkq();
		}if(n==3){
			df();
		}
	}
}void ljytq(){//随即天气事件 
	int n=rand()%7+1;
	if(n==1){
		system("cls");
		cout<<"今天天气有所转变\n";
		n=rand()%4+1;  
		if(n==1){
			hnt();
		}if(n==2){
			lkq();
		}if(n==3){
			df();
		}if(n==4){
			drt();
		}
	}
}
void saveGame(const string& filename) {
    ofstream file(filename, ios::binary);
    if (!file) {
        cout << "存档失败!" << endl;
        return;
    }
    
    // 保存基本变量
    file.write((char*)&go, sizeof(go));
    file.write((char*)&tian, sizeof(tian));
    file.write((char*)&sheng, sizeof(sheng));
    file.write((char*)&ti, sizeof(ti));
    file.write((char*)&tlsx, sizeof(tlsx));
    file.write((char*)&czjs, sizeof(czjs));
    file.write((char*)&sg, sizeof(sg));
    file.write((char*)&zs, sizeof(zs));
    file.write((char*)&zyf, sizeof(zyf));
    file.write((char*)&w1, sizeof(w1));
    file.write((char*)&yg, sizeof(yg));
    file.write((char*)&water, sizeof(water));
    file.write((char*)&qhq, sizeof(qhq));
    file.write((char*)&sz, sizeof(sz));
    file.write((char*)&blsp, sizeof(blsp));
    file.write((char*)&blcx, sizeof(blcx));
    file.write((char*)&blp, sizeof(blp));
    file.write((char*)&fwx, sizeof(fwx));
    file.write((char*)&mm, sizeof(mm));
    file.write((char*)&cdx, sizeof(cdx));
    file.write((char*)&cdy, sizeof(cdy));
    file.write((char*)&cd, sizeof(cd));
    file.write((char*)&ldlskcs, sizeof(ldlskcs));
    file.write((char*)&key, sizeof(key));
    file.write((char*)&ct, sizeof(ct));
    file.write((char*)&opendoor, sizeof(opendoor));
    file.write((char*)&dt, sizeof(dt));
    file.write((char*)&cddj, sizeof(cddj));
    file.write((char*)&xd1, sizeof(xd1));
    file.write((char*)&xd2, sizeof(xd2));
    file.write((char*)&xd3, sizeof(xd3));
    file.write((char*)&bxjs, sizeof(bxjs));
    file.write((char*)&ljy, sizeof(ljy));
    file.write((char*)&ljyts, sizeof(ljyts));
    file.write((char*)&hg, sizeof(hg));
    file.write((char*)&w, sizeof(w));
    file.write((char*)&js, sizeof(js));
    file.write((char*)&mm, sizeof(mm));
    
    // 保存字符串(name)
    size_t nameLen = name.length();
    file.write((char*)&nameLen, sizeof(nameLen));
    file.write(name.c_str(), nameLen);
    
    // 保存数组
    file.write((char*)dongs, sizeof(dongs));
    file.write((char*)gz1, sizeof(gz1));
    file.write((char*)ys, sizeof(ys));
    file.write((char*)yssjt, sizeof(yssjt));
    file.write((char*)zycl, sizeof(zycl));
    file.write((char*)jianzhu1, sizeof(jianzhu1));
    file.write((char*)daojv1, sizeof(daojv1));
    file.write((char*)fish1, sizeof(fish1));
    file.write((char*)zbbool, sizeof(zbbool));
    file.write((char*)gaoz, sizeof(gaoz));
    file.write((char*)shes, sizeof(shes));
    file.write((char*)jian, sizeof(jian));
    
    // 保存二维数组和结构体
    for(int i = 0; i < 40; i++) {
        for(int j = 0; j < 25; j++) {
            file.write((char*)&mat[i][j], sizeof(mat[i][j]));
        }
    }
    
    for(int i = 0; i < 50; i++) {
        for(int j = 0; j < 50; j++) {
            file.write((char*)&a[i][j], sizeof(a[i][j]));
        }
    }
    
    file.write((char*)&we, sizeof(we));
    file.write((char*)&ho, sizeof(ho));
    
    file.write((char*)map2, sizeof(map2));
    file.write((char*)mapsc, sizeof(mapsc));
    file.write((char*)gh, sizeof(gh));
    file.write((char*)dzt, sizeof(dzt));
    file.write((char*)ksrl, sizeof(ksrl));
    file.write((char*)rlqh, sizeof(rlqh));
    file.write((char*)cz, sizeof(cz));
    
    cout << "游戏已保存到 " << filename << endl;
    file.close();
}

void loadGame(const string& filename) {
    ifstream file(filename, ios::binary);
    if (!file) {
        cout << "读档失败!存档文件不存在。" << endl;
        return;
    }
    
    // 读取基本变量
    file.read((char*)&go, sizeof(go));
    file.read((char*)&tian, sizeof(tian));
    file.read((char*)&sheng, sizeof(sheng));
    file.read((char*)&ti, sizeof(ti));
    file.read((char*)&tlsx, sizeof(tlsx));
    file.read((char*)&czjs, sizeof(czjs));
    file.read((char*)&sg, sizeof(sg));
    file.read((char*)&zs, sizeof(zs));
    file.read((char*)&zyf, sizeof(zyf));
    file.read((char*)&w1, sizeof(w1));
    file.read((char*)&yg, sizeof(yg));
    file.read((char*)&water, sizeof(water));
    file.read((char*)&qhq, sizeof(qhq));
    file.read((char*)&sz, sizeof(sz));
    file.read((char*)&blsp, sizeof(blsp));
    file.read((char*)&blcx, sizeof(blcx));
    file.read((char*)&blp, sizeof(blp));
    file.read((char*)&fwx, sizeof(fwx));
    file.read((char*)&mm, sizeof(mm));
    file.read((char*)&cdx, sizeof(cdx));
    file.read((char*)&cdy, sizeof(cdy));
    file.read((char*)&cd, sizeof(cd));
    file.read((char*)&ldlskcs, sizeof(ldlskcs));
    file.read((char*)&key, sizeof(key));
    file.read((char*)&ct, sizeof(ct));
    file.read((char*)&opendoor, sizeof(opendoor));
    file.read((char*)&dt, sizeof(dt));
    file.read((char*)&cddj, sizeof(cddj));
    file.read((char*)&xd1, sizeof(xd1));
    file.read((char*)&xd2, sizeof(xd2));
    file.read((char*)&xd3, sizeof(xd3));
    file.read((char*)&bxjs, sizeof(bxjs));
    file.read((char*)&ljy, sizeof(ljy));
    file.read((char*)&ljyts, sizeof(ljyts));
    file.read((char*)&hg, sizeof(hg));
    file.read((char*)&w, sizeof(w));
    file.read((char*)&js, sizeof(js));
    file.read((char*)&mm, sizeof(mm));
    
    // 读取字符串(name)
    size_t nameLen;
    file.read((char*)&nameLen, sizeof(nameLen));
    char* nameBuffer = new char[nameLen + 1];
    file.read(nameBuffer, nameLen);
    nameBuffer[nameLen] = '\0';
    name = string(nameBuffer);
    delete[] nameBuffer;
    
    // 读取数组
    file.read((char*)dongs, sizeof(dongs));
    file.read((char*)gz1, sizeof(gz1));
    file.read((char*)ys, sizeof(ys));
    file.read((char*)yssjt, sizeof(yssjt));
    file.read((char*)zycl, sizeof(zycl));
    file.read((char*)jianzhu1, sizeof(jianzhu1));
    file.read((char*)daojv1, sizeof(daojv1));
    file.read((char*)fish1, sizeof(fish1));
    file.read((char*)zbbool, sizeof(zbbool));
    file.read((char*)gaoz, sizeof(gaoz));
    file.read((char*)shes, sizeof(shes));
    file.read((char*)jian, sizeof(jian));
    
    // 读取二维数组和结构体
    for(int i = 0; i < 40; i++) {
        for(int j = 0; j < 25; j++) {
            file.read((char*)&mat[i][j], sizeof(mat[i][j]));
        }
    }
    
    for(int i = 0; i < 50; i++) {
        for(int j = 0; j < 50; j++) {
            file.read((char*)&a[i][j], sizeof(a[i][j]));
        }
    }
    
    file.read((char*)&we, sizeof(we));
    file.read((char*)&ho, sizeof(ho));
    
    file.read((char*)map2, sizeof(map2));
    file.read((char*)mapsc, sizeof(mapsc));
    file.read((char*)gh, sizeof(gh));
    file.read((char*)dzt, sizeof(dzt));
    file.read((char*)ksrl, sizeof(ksrl));
    file.read((char*)rlqh, sizeof(rlqh));
    file.read((char*)cz, sizeof(cz));
    
    cout << "游戏已从 " << filename << " 加载" << endl;
    file.close();
}
void dtck(){
	system("cls");
	if(dt==false){
		dt=true;
		cout<<"你凑近看了看,不过因为荒废了很久,上面爬满了深绿色的藤蔓\n";
		Sleep(800);
		cout<<"你用手扒开藤蔓,这个城镇的地图显现了出来\n";
		cout<<"按任意键继......";
		getch();
		system("cls");
	}
	char dtch[10][10]={
		'.','.','.','.','.','.','.','.','.','.',
		'.','.','.','.','.','.','.','.','{','}',
		'.','.','.','.','.','.','.','.','{','}',
		'.','.','.','.','.','.','.','.','.','.',
		'.','.','.','.','#','#','.','.','.','.',
		'.','.','.','.','#','#','.','.','.','.',
		'.','.','.','.','.','.','.','.','.','.',
		'.','.','.','.','.','.','.','.','.','.',
		'@','@','@','.','.','.','.','.','.','.',
		'@','@','@','.','.','.','.','.','.','.'
	};
	for(int i=0;i<10;i++){
		for(int j=0;j<10;j++){
			cout<<dtch[i][j];
		}cout<<endl;
	}
	cout<<endl;
	cout<<"@@@   ##   {}\n@@@   ##   {}\n别墅区   太上   药店\n        老'菌'\n        店\n按任意键返回.....\n";
	getch();
	system("cls");
}
void cdjr(){
	system("cls");
	string gs="地板突然裂开,你掉了下去,但并没有感受到疼痛,也没有受伤\n你起身看看周围\n周围金碧辉煌,有一种奇怪的彩光照在周围的金砖上\n前方是一个长廊,周围都是耀光\n你向前走,走到尽头\n“前方放着3颗神丹,你可以选一颗”一个很有磁性但又神圣的声音响起\n前方果然放着3颗圆球\n“第一颗可以让你每天恢复5点生命,第二颗可以让你每天体力回满,第三颗可以让你没有挖掘,熔炉烧制的时间”\n“你选那一颗?”";
	for(int i=0;i<gs.size();i++){
		cout<<gs[i];
		Sleep(40);
	}
	int xd;
	cin>>xd;
	if(xd==1)xd1=true;
	if(xd==2)xd2=true;
	if(xd==3)xd3=true;
	cout<<"当你吃下那颗仙丹后,一股奇怪的力量将你推了出去!";
	Sleep(1300);
}
void tslj(){
	int xx=12,yy=9;
	HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
	CONSOLE_SCREEN_BUFFER_INFO csbi;
	GetConsoleScreenBufferInfo(hConsole, &csbi);
	WORD saved_attributes = csbi.wAttributes;
	system("cls");
	string tsljmap[13][20]={
		"□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□",
		"□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□",
		"□","□","□","□","□","□","□","□","□","+","□","□","□","□","□","□","□","□","□","□",
		"□","□","□","□","□","□","□","□","=","=","=","□","□","□","□","□","□","□","□","□",
		"□","□","□","□","□","□","□","_","_","_","_","_","□","□","□","□","□","□","□","□",
		"□","□","□","□","□","□","(","p","!","@","#","q",")","□","□","□","□","□","□","□",
		"□","□","□","□","□","□","|","p","*","S","$","q","|","□","□","□","□","□","□","□",
		"□","□","□","□","□","□","(","p","&","^","%","q",")","□","□","□","□","□","□","□",
		"□","□","□","□","□","□","□","-","-","-","-","-","□","□","□","□","□","□","□","□",
		"□","□","□","□","□","□","□","I","□","I","□","I","□","□","□","□","□","□","□","□",
		"□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□",
		"□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□","□",
		"□","□","□","□","□","□","□","□","□","N","□","□","□","□","□","□","□","□","□","□"
	};
	if(cd==false){
		srand(time(NULL)); 
		cd=true;
		cdx=rand()%13;
		cdy=rand()%20;
		if(tsljmap[cdx][cdy]!="□"){
			while(tsljmap[cdx][cdy]!="□"){
				cdx=rand()%13;
				cdy=rand()%20;
			}
		}
	}
	for(int i=0;i<13;i++){
		for(int j=0;j<20;j++){
			if(i==xx&&j==yy)cout<<'$';
			else {
				if(tsljmap[i][j]=="□") SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
				else if(!(tsljmap[i][j]=="N"))SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN);
				cout<<tsljmap[i][j];
				SetConsoleTextAttribute(hConsole, saved_attributes);
			}
		}cout<<endl;
	}
	if(xx>=1&&xx<=11&&yy>=1&&yy<=19){
		if((tsljmap[xx][yy-1]!="□"||tsljmap[xx+1][yy]!="□"||tsljmap[xx-1][yy]!="□"||tsljmap[xx][yy+1]!="□")&&(tsljmap[xx][yy-1]!="N"&&tsljmap[xx+1][yy]!="N"&&tsljmap[xx-1][yy]!="N"&&tsljmap[xx][yy+1]!="N")){
			cout<<"o打开炼丹炉\n";
		}	
	}
	if(ldlskcs>=2&&tsljmap[xx][yy]=="□")cout<<"c跺脚\n";
	while(1){
		int jbdd=false;
		if(cddj==3){
			cddj++;
			cdjr();
			tsljmap[xx][yy]='X';
			jbdd=true;
		}
		int fh=false;
		if(kbhit()){
			int a=getch();
			if(a==72)if(xx!=0)if(tsljmap[xx-1][yy]=="□"||tsljmap[xx-1][yy]=="N"||tsljmap[xx][yy]=="N"){jbdd=true;xx--;}
			if(a==80)if(xx!=12)if(tsljmap[xx+1][yy]=="□"||tsljmap[xx+1][yy]=="N"||tsljmap[xx][yy]=="N"){jbdd=true;xx++;fh=true;}
			if(a==80)if(xx==12&&tsljmap[xx][yy]=="N"&&fh==false){system("cls");return;}
			if(a==75)if(yy!=0)if(tsljmap[xx][yy-1]=="□"||tsljmap[xx][yy-1]=="N"||tsljmap[xx][yy]=="N"){jbdd=true;yy--;}
			if(a==77)if(yy!=19)if(tsljmap[xx][yy+1]=="□"||tsljmap[xx][yy+1]=="N"||tsljmap[xx][yy]=="N"){jbdd=true;yy++;}
			if(a=='o'){
				jbdd=true;
				if(xx>=1&&xx<=11&&yy>=1&&yy<=19){
					if((tsljmap[xx][yy-1]!="□"||tsljmap[xx+1][yy]!="□"||tsljmap[xx-1][yy]!="□"||tsljmap[xx][yy+1]!="□")&&(tsljmap[xx][yy-1]!="N"&&tsljmap[xx+1][yy]!="N"&&tsljmap[xx-1][yy]!="N"&&tsljmap[xx][yy+1]!="N")){
						if(ldlskcs==0){
							ldlskcs++;
							cout<<"获得五个制药粉\n";
							zyf+=5;
						}else if(ldlskcs==1){
							cout<<"没东西了,打你注意到盖子上有一行字:\n题问有板地\n";
							ldlskcs++;
						}else{
							cout<<"是否炼制药粉(复制:1制药粉+1钛矿+1木=2制药粉)\n1是 2否\n";
							if(!(getch()=='2')){
								if(dongs[14]<1||dongs[3]<1||zyf<1){
									cout<<"材料不够\n";
								}else{
									dongs[14]-=1;dongs[3]-=1;
									zyf+=1;
									cout<<"复制成功\n";
								}
							}
						}
						cout<<"按任意键继续......";
						getch();
					}	
				}
			}
			if(a=='c'){
				if(xx==cdx&&yy==cdy){
					cout<<"咚咚咚~这块地板好像是空的……\n";
					cddj++;
				}else{
					cout<<"砰砰砰,地板没有问题(法国口音)\n";
				}
			}
		}
		if(jbdd==false)continue;
		system("cls");
		for(int i=0;i<13;i++){
			for(int j=0;j<20;j++){
				if(i==xx&&j==yy)cout<<'$';
				else {
					if(tsljmap[i][j]=="□") SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
					else if(!(tsljmap[i][j]=="N"))SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN);
					cout<<tsljmap[i][j];
					SetConsoleTextAttribute(hConsole, saved_attributes);
				}
			}cout<<endl;
		}
		if(xx>=1&&xx<=11&&yy>=1&&yy<=19){
			if((tsljmap[xx][yy-1]!="□"||tsljmap[xx+1][yy]!="□"||tsljmap[xx-1][yy]!="□"||tsljmap[xx][yy+1]!="□")&&(tsljmap[xx][yy-1]!="N"&&tsljmap[xx+1][yy]!="N"&&tsljmap[xx-1][yy]!="N"&&tsljmap[xx][yy+1]!="N")){
				cout<<"o打开炼丹炉\n";
			}	
		}
		if(ldlskcs>=2&&tsljmap[xx][yy]=="□")cout<<"c跺脚\n";
	}
}//太上老君
void ydbx(){
	char bx[10][15]={
		'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','.','.','|','-','-','-','|','.','.','.','.','.','.',
		'.','.','.','.','|',':',':',':','|','.','.','.','.','.','.',
		'.','.','.','.','|',':',':',':','|','.','.','.','.','.','.',
		'.','.','.','.','|','_','_','_','|','.','.','.','.','.','.',
		'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','.','.','.','.',' ',' ','.','.','.','.','.','.','.'
	};
	int xx=9,yy=6;
	for(int i=0;i<10;i++){
		for(int i1=0;i1<15;i1++){
			if(i==xx&&i1==yy)cout<<'$';
			else{
				cout<<bx[i][i1];
			}
		}cout<<endl;
	}
	while(1){
		bool jbdd=0;
		if(kbhit()){
			int a=getch();
			if(a==72)if(xx!=0)if(bx[xx-1][yy]=='.'){jbdd=true;xx--;}
			if(a==80)if(xx!=10)if(bx[xx+1][yy]=='.'||bx[xx+1][yy]==' '||bx[xx][yy]==' '){if(bx[xx][yy]==' '){system("cls");return;}jbdd=true;xx++;}
			if(a==75)if(yy!=0)if(bx[xx][yy-1]=='.'){jbdd=true;yy--;}
			if(a==77)if(yy!=14)if(bx[xx][yy+1]=='.'){jbdd=true;yy++;}
			if(a=='l'){
				if(!mm)cout<<"你身上并没有什么密码纸条\n";
				else cout<<"AKNOI\n任意键继续.....\n";
				getch();
				jbdd=1;
			}
			if(a=='o'){
				bool mmpd=true;
				jbdd=true;
				cout<<"输入5位大写字母密码!\n";
				string cinmm;
				char cinm;
				for(int i=0;i<5;i++){
					cin>>cinm;
					cinmm+=cinm;
				}
				for(int i=0;i<5;i++){
					if(cinmm[i]!=mms[i]){
						mmpd=false;
						cout<<"密码错误!\n";
						Sleep(500);
					}
				}
				if(mmpd==1&&bxjs==true){
					cout<<"开过了\n";
					Sleep(700);
				}
				if(mmpd==1&&bxjs==false){
					cout<<"开了,获得:生命恢复药水设计图,大胃袋设计图,饱腹药水设计图,5袋制药粉\n按任意键继续.......";
					zysjt[0]=1;
					zysjt[1]=1;
					zysjt[2]=1;
					yssjt[0]=1;
					yssjt[1]=1;
					yssjt[2]=1;
					zyf+=5;
					bxjs=true;
					getch();
				}
			}
		}
		if(jbdd==0)continue;
		system("cls");
		for(int i=0;i<10;i++){
			for(int i1=0;i1<15;i1++){
				if(i==xx&&i1==yy)cout<<'$';
				else{
					cout<<bx[i][i1];
				}
			}cout<<endl;
		}cout<<"o打开保险箱\n";
		if(mm==1)cout<<"l看看纸条\n";
	}
}//药店保险
void yd(){
	HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
	system("cls");
	int xx=18,yy=9;
	char yddt[20][20]={
		'.','.','.','.','.','.','.','.','.','O','O','.','.','.','.','.','.','.','.','0',
		'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'P','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','.','2','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','.','.','.','.','.','.','.','.','.','M','.','.','.','.','.','.','.','.',
		'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','L','.',
		'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','_','_','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','|','|','.','T','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','|','|','.','T','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','|','|','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','|','|','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',
		'.','.','|','|','.','.','.','.','.','N','.','.','.','.','.','.','.','.','.','.'
	};
	for(int i=0;i<20;i++){
		for(int i1=0;i1<20;i1++){
			if(i==xx&&i1==yy)cout<<'$';
			else if(yddt[i][i1]=='0'){
				SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY);
				cout<<'.';
				SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
			}else{
				cout<<yddt[i][i1];
			}
		}cout<<endl;
	}
	while(1){
		bool jbdd=0;
		if(kbhit()){
			int a=getch();
			if(a==72)if(xx>=0)if(yddt[xx-1][yy]=='.'||yddt[xx-1][yy]=='N'||yddt[xx-1][yy]=='0'||yddt[xx-1][yy]==' '||yddt[xx][yy]==' '){if(yddt[xx][yy]==' '){system("cls");ydbx();xx++;}jbdd=true;xx--;}
			if(a==80)if(xx!=20)if(yddt[xx+1][yy]=='.'||yddt[xx+1][yy]=='N'||yddt[xx][yy]=='N'||yddt[xx+1][yy]=='0'){if(yddt[xx][yy]=='N'){system("cls");return;}jbdd=true;xx++;}
			if(a==75)if(yy!=0)if(yddt[xx][yy-1]=='.'||yddt[xx][yy-1]=='N'||yddt[xx][yy-1]=='0'){jbdd=true;yy--;}
			if(a==77)if(yy!=19)if(yddt[xx][yy+1]=='.'||yddt[xx][yy+1]=='N'||yddt[xx][yy+1]=='0'){jbdd=true;yy++;}
			if(a=='f'){
				if((yddt[xx][yy-1]=='|'||yddt[xx+1][yy]=='|'||yddt[xx-1][yy]=='|'||yddt[xx][yy+1]=='|')&&ct==true){
					cout<<"摸过了!\n";
					key=true;
					cout<<"任意键继续.....\n";
					getch();
				}
				if((yddt[xx][yy-1]=='|'||yddt[xx+1][yy]=='|'||yddt[xx-1][yy]=='|'||yddt[xx][yy+1]=='|')&&ct==false){
					system("cls");
					jbdd=1;
					ct=true;
					cout<<"你摸到一把钥匙!\n";
					key=true;
					cout<<"任意键继续.....\n";
					getch();
				}
			}
			if(a=='o'){
				if((yddt[xx][yy-1]=='O'||yddt[xx+1][yy]=='O'||yddt[xx-1][yy]=='O'||yddt[xx][yy+1]=='O')&&opendoor==false){
					if(key==false){
						cout<<"需要一把钥匙\n";
					}
					else{
						cout<<"门慢慢开了\n";
						opendoor=true;
						for(int i=0;i<20;i++){
							if(yddt[0][i]=='O'){
								yddt[0][i]=' ';
							}
						}
					}
				}
			}
			
		}
		if (GetAsyncKeyState(VK_LBUTTON) & 0x8000){
			if(yddt[xx][yy]=='0'){
				jbdd=1;
				system("cls");
				cout<<"你动了动,发现地板是松动的,掀开看,发现一张纸(好像是打开保险柜的密码)\n纸上:AKNOI\n任意键收下.......";
				getch();
				yddt[xx][yy]='X';
				mm=true;
			}
		}	
		if(jbdd==0)continue;
		system("cls");
		for(int i=0;i<20;i++){
			for(int i1=0;i1<20;i1++){
				if(i==xx&&i1==yy)cout<<'$';
				else if(yddt[i][i1]=='0'){
					SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY);
					cout<<'.';
					SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
				}else{
					cout<<yddt[i][i1];
				}
			}cout<<endl;
		}
		if(yddt[xx][yy-1]=='|'||yddt[xx+1][yy]=='|'||yddt[xx-1][yy]=='|'||yddt[xx][yy+1]=='|'){
			cout<<"f搜索抽屉\n";
		}
		if(yddt[xx][yy-1]=='O'||yddt[xx+1][yy]=='O'||yddt[xx-1][yy]=='O'||yddt[xx][yy+1]=='O'){
			cout<<"o开门\n";
		}
		if(yddt[xx][yy]=='0'){
			cout<<"这块地板好像有点不对?左键试试\n";
		}
	}
}//药店
void msl(){
	HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
	system("cls");cout<<"你进入了这片废弃别墅区\n";
	Sleep(700);
	system("cls");
	int xx=16,yy=1;
	int rs[4][2]={
		2,2,
		6,22,
		20,12,
		24,52
	};//人参户
	char bs[30][60]={
		'#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#','V','V','V','V','V',
		'#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#','V','V','V','V','V',
		'#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#','V','V','V','V','V',
		'-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-',
		'o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o',
		'-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-',
		'#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#','V','V','V','V','V',
		'#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#','V','V','V','V','V',
		'#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#','V','V','V','V','V',
		'-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-',
		'o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o',
		'-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-',
		'#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#','V','V','V','V','V',
		'#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#','V','V','V','V','V',
		'#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#','V','V','V','V','V',
		'N','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-',
		'N','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o',
		'N','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-',
		'#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#','V','V','V','V','V',
		'#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#','V','V','V','V','V',
		'#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#','V','V','V','V','V',
		'-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-',
		'o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o',
		'-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-',
		'#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#',' ',' ',' ',' ',' ','#','#','n','#','#','V','V','V','V','V',
		'#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#','V','V','V','V','V',
		'#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#',' ',' ',' ',' ',' ','#','#','#','#','#','V','V','V','V','V',
		'-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-',
		'o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','o',
		'-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-',
	};
	for(int i=0;i<30;i++){
		for(int j=0;j<60;j++){
			if(i==xx&&j==yy){
				cout<<'$';
				continue;
			}
			if(bs[i][j]=='V')SetConsoleTextAttribute(hConsole,FOREGROUND_GREEN);
			if(bs[i][j]=='o')SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY);
			cout<<bs[i][j];
			SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);	
		}cout<<endl;
	}
	while(1){
		bool jbdd=0;
		if(kbhit()){
			int a=getch();
			if(a==72)if(xx!=0)if(bs[xx-1][yy]!='#'){jbdd=true;xx--;}
			if(a==80)if(xx!=29)if(bs[xx+1][yy]!='#'){jbdd=true;xx++;}
			if(a==75){
				if(yy==0&&bs[xx][yy]=='N'){system("cls");return;}
				if(yy!=0)if(bs[xx][yy-1]!='#'){jbdd=true;yy--;}	
			}
			if(a==77)if(yy!=59)if(bs[xx][yy+1]!='#'){jbdd=true;yy++;}
		}
		if(!jbdd)continue;
		system("cls");
		for(int i=0;i<30;i++){
			for(int j=0;j<60;j++){
				if(i==xx&&j==yy){
					cout<<'$';
					continue;
				}
				if(bs[i][j]=='V')SetConsoleTextAttribute(hConsole,FOREGROUND_GREEN);
				if(bs[i][j]=='o')SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY);
				cout<<bs[i][j];
				SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);	
			}cout<<endl;
		}
		if(bs[xx][yy]=='n'){
			cout<<"是否进去搜搜看?1yes2no\n";
			if(getch()=='1'){
				bool p=0;
				for(int i=0;i<4;i++){
					if(xx==rs[i][0]&&yy==rs[i][1]){
						string gs="你在这家中走来走去\n打开柜子时,你竟然看到了一颗密封完好没过期的\n人参\n";
						for(int j=0;j<gs.size();j++){
							cout<<gs[j];
							Sleep(35);
						}
						zycl[3]++;
						if(i==2){
							cout<<"你刚刚准备走,在角落看到一本书\n书上面好像是讲人参补气血(再生药水设计图)\n";
							yssjt[3]=1;
						}
						rs[i][0]=-10086;
						rs[i][1]=-10086;
						p=1;
						cout<<"任意键继续.....";
						getch();
						break;
					}
				}
				if(p==0){
					cout<<"因为荒废太久的原因,这家比脸还干净!\n";
					Sleep(1000);
				}
			}
		}
	}
}//民宿楼
void qwcz(){
	HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
	int xx=28,yy=14;
	for(int i=0;i<30;i++){
		for(int i1=0;i1<30;i1++){
			if(i==xx&&i1==yy)cout<<'$';
			else if(cz[i][i1]=='|'&&dt==false){
				SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN);
				cout<<'|';
				SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
			}else{
				cout<<cz[i][i1];
			}
		}
		cout<<endl;
	}cout<<"走出大门返回\n";
	bool fat=false;
	while(1){
		bool jbdd=false;
		if(fat==true){
			jbdd=true;
			fat=false;
		}
		else{
			
			
		if(kbhit()){
			int a=getch();
			if(a==72)if(xx!=0)if(cz[xx-1][yy]=='.'||cz[xx-1][yy]=='N'){jbdd=true;xx--;}
			if(a==80)if(cz[xx+1][yy]=='.'||cz[xx+1][yy]==' '||cz[xx+1][yy]=='N'){jbdd=true;xx++;if(cz[xx][yy]==' '){Sleep(1000);return;}}
			if(a==75)if(yy!=0)if(cz[xx][yy-1]=='.'||cz[xx][yy-1]=='N'){jbdd=true;yy--;}
			if(a==77)if(yy!=29)if(cz[xx][yy+1]=='.'||cz[xx][yy+1]=='N'){jbdd=true;yy++;}
			if(a=='l'&&((xx==13||xx==12||xx==14)&&(yy==2||yy==0))){
				jbdd=true;
				dtck();
			}
		}
		
		
		}
		if(jbdd==false)continue;
		system("cls");
		for(int i=0;i<30;i++){
			for(int i1=0;i1<30;i1++){
				if(i==xx&&i1==yy)cout<<'$';
				else if(cz[i][i1]=='|'&&dt==false){
					SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN);
					cout<<'|';
					SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
				}else{
					cout<<cz[i][i1];
				}
			}
			cout<<endl;
		}cout<<"走出大门返回\n";
		if((xx==13||xx==12||xx==14)&&(yy==2||yy==0)){
			if(dt==false){
				cout<<"这里有一块贴牌子,l凑近看看\n";
			}else{
				cout<<"l查看地图\n";
			}
		}
		if(cz[xx][yy]=='N'){
			cout<<"是否进去看看?1yes 其他键no";
			int sbsbsbsb=getch();
			if(sbsbsbsb=='1'){
				if(xx==16){//太上老君
					tslj();fat=true;
				}
				if(xx==26){//民宿楼
					msl();fat=true;
				}
				if(xx==5){//药店
					yd();fat=true;
				}
			}else{
				if(xx==16){
					xx++;
				}if(xx==26)xx--;
				if(xx==5)xx++;
				fat=true;
			}
		}
	}
}
int main()
{	
	int sx,sy,dx,dy;
	csh();ghbecomefalse();HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);dztbecomefalse();fish1[1]=1;
	srand(time(NULL)); 
	rlqhbecomefalse();
	memset(a,0,sizeof(a));
	we.x=0,we.y=0;
	for(int i=0;i<25;i++)
	{
		for(int j=0;j<40;j++)
		{
			int ff=rand()%3;
			if(ff==1)mat[i][j].w1=true;
			mat[i][j].w=mat[i][j].w1;
		}
	}
	for(int i=0;i<37;i++){ 
		for(int j=0;j<37;j++){
			int n=rand()%25+1;
			if(n==1){
				n=rand()%10+1;
				if(n==1){
					mapsc[i][j]='3';
				}else{
					mapsc[i][j]='2';
				}
			}
			else mapsc[i][j]='1';
		}
	}
	hide();
	cout<<"末日生存,你的名字是:";
	cin>>name;
	cout<<"欢迎"<<name<<"进入!!!!!!!!!!!!!!!!\n";Sleep(2000);
	system("cls");
	cout<<"为了游玩舒适,请调成全屏或者缩小窗口,将全部的输出调到可视范围内!!!\n按任意键开始....."; //提示 
	getch();//任意键 
	system("cls");
	cout<<"看不看游戏信息?(操作玩法)\n看回车 不看其他";
	int sb=getch();
	system("cls");
	if(sb==13){
		HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);//获取控制台颜色句柄 
		SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
		SetConsoleTextAttribute(hConsole, FOREGROUND_RED);
		cout<<"本游戏由@2022tysc1697和@2025tyoi0147共创!!!\n";
		SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
		Sleep(1000);
		cout<<"你可以建造东西,摸箱子,收集水和木头 \n";
		Sleep(1000);
		cout<<"这些符号代表:\nn:熔炉\n:火把\n.:移动的地方(地图范围)\n@:篝火";
		SetConsoleTextAttribute(hConsole, FOREGROUND_RED);
		cout<<"\n@";SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
		cout<<":点燃的篝火\n#:锻造台\n";
		SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE);
		cout<<"#";
		SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
		cout<<":可以使用的锻造台\nz:铁砧\n~:鱼缸\nm:纺织机\nT:制药台\n";
		Sleep(1000);
		cout<<"生命值上限为20,开箱子会有特殊事件\n";
		Sleep(1000);
		cout<<"篝火无法点燃?再按一下b试试\n锻造台无法使用?记得在旁边加上铁砧,给工作台一把锻造锤(按' ')\n";
		Sleep(1000);
		cout<<"小贴士:要及时收集水!~~\n";
		Sleep(1000);
		cout<<"小贴士:生命不会自动恢复,上限20。体力不会自动恢复,上线10(血袋生命+5,烤鱼生命+2体力+7,面包体力+2),水量不会自动恢复,每天-1\n";
		Sleep(1000);
		cout<<"小贴士:当进入乱纪元后(50天后)遇到特殊天气概率会增加,还会有“三日凌空”(没那么热),会中暑,所以要在50天前做出皮帽噢~\n";
		Sleep(1000);
		cout<<"小贴士:每种镐子耐久不同,可以自己探索\n";
		Sleep(1000);
		cout<<"小贴士:摸箱子有1/27概率摸出'快烧核心',可减少%50烧制时间\n";
		Sleep(1000);SetConsoleTextAttribute(hConsole, FOREGROUND_RED);
		cout<<"!!!注意!!!:在游玩过程中,干完某些事后会黑屏(没有输出),是因为清屏没处理好进入下个循环,再按一下移动键恢复正常\n";SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
		Sleep(1000);
		cout<<"按任意键开始游戏...... \n";
		getch();
		system("cls");
	}
	while(1)
	{ho.y=0;ho.x=0;//边界 
	if(ljy==true){
		ljytq();
	}else{
		tq();
	}
		if(tian>=50){
			if(ljyts==false){
				cout<<"进入乱纪元!";
				ljyts=true;
				Sleep(1000);
				system("cls");
			}
			ljy=true;
		}
			if(sheng<=0){
				cout<<"you die!!!";
				Sleep(1500);
				return 0;
			}//死亡停止 
			if(ho.y<7){
				sy=0;
			}else{
				sy=ho.y-7;
			}
			if(ho.x<10){
				sx=0;
			}else{
				sx=ho.x-10;
			}
			if(ho.y>=51){
				dy=59;
			}else{
				dy=ho.y+7;
			}
			if(ho.x>=80){
				dx=89;
			}else{
				dx=ho.x+10;
			}
			for(int i=sy;i<=dy;i++)
				{ 
					for(int j=sx;j<=dx;j++)
					{
						if(i==ho.y&&j==ho.x)cout<<"$";
						else if(map2[i][j]=='.')cout<<'.';
						else{
							if(work[int(map2[i][j]+1-'0')]=='@'){
								if(gh[i][j]==true){
									SetConsoleTextAttribute(hConsole, FOREGROUND_RED);
									cout<<'@';
									SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
								}else cout<<'@';
							}//点燃火把红色输出 
							else if(work[int(map2[i][j]+1-'0')]=='#'){
								if(dzt[i][j]==true){
									SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE);
									cout<<'#';
									SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
								}else cout<<'#';
							}//工作台联动完毕 
							else cout<<work[int(map2[i][j]+1-'0')];//改为输出数组 
						}
						
					}
					cout<<endl;
				}
				//水量 
				SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE| FOREGROUND_GREEN );
				cout<<"水量:"; 
				for(int i=0;i<water;i++){
					cout<<"Q";
				}SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY);
				for(int i=0;i<10-water;i++){
					cout<<"Q";
				}SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
				SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
				cout<<"饱食度(体力):"; 
				for(int i=0;i<ti;i++){
					cout<<"P";
				}SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY);
				for(int i=0;i<tlsx-ti;i++){
					cout<<"P";
				}SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
				cout<<endl;
				SetConsoleTextAttribute(hConsole, FOREGROUND_RED);
				cout<<"生命值:";
				for(int i=0;i<sheng;i++){
					if(i%2==0)cout<<"(";
					else cout<<")";
				}SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY);
				for(int i=sheng;i<20;i++){
					if(i%2==0)cout<<"(";
					else cout<<")";
				}SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
				cout<<endl;
				if(a[ho.y][ho.x].m==0)cout<<"你生存了"<<tian<<"天"<<"\n生命值:"<<sheng<<"\nz:出发\n1:建造\nb原地搭建一个篝火\nd喝水\n空格:使用工作方块"<<endl<<"本方块:无"<<endl;
				else {
					if(a[ho.y][ho.x].m==4||a[ho.y][ho.x].m==6){
						cout<<"你生存了"<<tian<<"天"<<"\n生命值:"<<sheng<<"\nz:出发\n1:建造\nb原地搭建一个篝火\nd喝水\n空格:使用工作方块"<<endl<<"本方块:"<<ddong[a[ho.y][ho.x].m]<<endl;
					}
					else{
						if(a[ho.y][ho.x].m==110)cout<<"你生存了"<<tian<<"天"<<"\n生命值:"<<sheng<<"\nz:出发\n1:建造\nd喝水\nb原地搭建一个篝火\n空格:使用工作方块"<<endl<<"本方块:"<<jianzhu[4]<<endl;
						else if(a[ho.y][ho.x].m==100) cout<<"你生存了"<<tian<<"天"<<"\n生命值:"<<sheng<<"\nz:出发\n1:建造\nd喝水\nb原地搭建一个篝火\n空格:使用工作方块"<<endl<<"本方块:"<<jianzhu[0]<<endl;
						else cout<<"你生存了"<<tian<<"天"<<"\n生命值:"<<sheng<<"\nz:出发\n1:建造\nd喝水\nb原地搭建一个篝火\n空格:使用工作方块"<<endl<<"本方块:"<<jianzhu[a[ho.y][ho.x].m]<<endl;
					}
				}