#include <iostream>
#include <conio.h>
#include <windows.h>
#include <cstdlib>
#include <ctime>
#include <string>
#include <vector>
#include <fstream>
#include <cstdio>
using namespace std;

// 全局变量
int san = 100, clue = 0, day = 1, deathCount = 0;
int money = 500, courage = 50, sisterFavor = 0;
int trustOldLady = 0, ghostAnger = 0;
string playerName;
bool hasDiary = false, hasPhoto = false, hasKey = false;
bool hasLighter = false, hasFood = false, hasRadio = false, hasCard = false;
bool hasHairpin = false, hasLetter = false, hasPendant = false;
bool metGhost = false, savedGirl = false, ruleBroken = false;
bool gameWin = false, isHardMode = false, trueEnding = false;
bool visitedBasement = false, visitedRooftop = false, visitedCorridor = false;
bool visited7Floor = false, hasHiddenEnd = false;
string weather[] = {"晴天", "雨天", "雷雨天", "猩红雨夜"};
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

// 函数声明
void showTitle(string t, int c);
void waitKey();
void basementEvent();
void exploreMap();
void useItem();
void shop();
void showRules();
void diaryEvent();
void photoEvent();
void firstNight();
void meetNeighbor();
void whiteSisterEvent();
void rooftopFinal();
void randomEvent();
bool checkSanity();
void daySummary();
void saveGame();
void loadGame();
void floor7Event();
void hiddenEnding();
void ghostAngerCheck();

// 颜色
void setColor(int c) {
	SetConsoleTextAttribute(hConsole, c);
}

// 慢速打印
void slowPrint(string t, int s = 30) {
	for(char ch : t) {
		cout << ch;
		Sleep(s);
	}
}

// 标题
void showTitle(string t, int c) {
	system("cls");
	setColor(c);
	cout << "================================" << endl;
	cout << "          " << t << "          " << endl;
	cout << "================================" << endl << endl;
	setColor(7);
}

// 等待
void waitKey() {
	cout << endl << "按任意键继续...";
	getch();
}

// 存档
void saveGame() {
	ofstream out("save.txt");
	out << san << " " << clue << " " << day << " " << deathCount << " " << money << " " << courage << " " << sisterFavor << " " << trustOldLady << " " << ghostAnger << endl;
	out << hasDiary << " " << hasPhoto << " " << hasKey << " " << hasLighter << " " << hasFood << " " << hasRadio << " " << hasCard << " " << hasHairpin << " " << hasLetter << " " << hasPendant << endl;
	out << metGhost << " " << savedGirl << " " << ruleBroken << " " << gameWin << " " << isHardMode << endl;
	out << visitedBasement << " " << visitedRooftop << " " << visitedCorridor << " " << visited7Floor << " " << trueEnding << " " << hasHiddenEnd << endl;
	out << playerName << endl;
	out.close();
	showTitle("存 档 成 功", 10);
	slowPrint("游戏进度已安全保存!");
	Sleep(1000);
}

// 读档
void loadGame() {
	ifstream in("save.txt");
	if(!in) {
		showTitle("读 档 失 败", 12);
		slowPrint("未找到存档文件,请开始新游戏!");
		waitKey();
		return;
	}
	in >> san >> clue >> day >> deathCount >> money >> courage >> sisterFavor >> trustOldLady >> ghostAnger;
	in >> hasDiary >> hasPhoto >> hasKey >> hasLighter >> hasFood >> hasRadio >> hasCard >> hasHairpin >> hasLetter >> hasPendant;
	in >> metGhost >> savedGirl >> ruleBroken >> gameWin >> isHardMode;
	in >> visitedBasement >> visitedRooftop >> visitedCorridor >> visited7Floor >> trueEnding >> hasHiddenEnd;
	in >> playerName;
	in.close();

    // 强制修复脏数据,杜绝乱触发
    ruleBroken = false;
	if(ghostAnger < 0) ghostAnger = 0;
	if(ghostAnger > 100) ghostAnger = 100;

	showTitle("读 档 成 功", 10);
	slowPrint("欢迎回来," + playerName + "!");
	Sleep(1000);
}

// 规则
void showRules() {
	showTitle("公 寓 生 存 规 则", 11);
	setColor(14);
	cout << "【1】 晚上11点后绝对不要出门" << endl;
	cout << "【2】 不要回应任何红衣女子的呼唤" << endl;
	cout << "【3】 电梯禁止按7楼,不存在7楼" << endl;
	cout << "【4】 镜子出现第二人影时立刻闭眼" << endl;
	cout << "【5】 听到儿歌时必须捂住耳朵" << endl;
	cout << "【6】 不要接受陌生人的物品" << endl;
	cout << "【7】 凌晨3:33绝对不要看窗外" << endl;
	cout << "【8】 地下室禁止单独进入" << endl;
	cout << "【9】 不要相信穿白衣的女人" << endl;
	cout << "【10】 发现发卡立刻捡起,这是关键" << endl;
	setColor(7);
	cout << endl << "违反规则会触发致命惩罚!" << endl;
	waitKey();
}

// 商店
void shop() {
	showTitle("便 民 商 店", 10);
	cout << "当前金钱:" << money << "¥" << endl << endl;
	cout << "1. 打火机(100¥)- 黑暗区域必备" << endl;
	cout << "2. 压缩饼干(50¥)- 恢复15理智" << endl;
	cout << "3. 老式收音机(200¥)- 驱散鬼魂" << endl;
	cout << "4. 护身符(300¥)- 免疫一次死亡" << endl;
	cout << "5. 镇静剂(150¥)- 恢复30理智" << endl;
	cout << "6. 十字架(250¥)- 大幅降低鬼怒" << endl;
	cout << "7. 退出商店" << endl << endl;
	cout << "请选择:";
	char c = getch();
	if(c == '1' && money >= 100) {
		hasLighter = true; money -= 100;
		slowPrint("你购买了打火机!");
	} else if(c == '2' && money >= 50) {
		hasFood = true; money -= 50;
		slowPrint("你购买了压缩饼干!");
	} else if(c == '3' && money >= 200) {
		hasRadio = true; money -= 200;
		slowPrint("你购买了老式收音机!");
	} else if(c == '4' && money >= 300) {
		hasCard = true; money -= 300;
		slowPrint("你购买了护身符!");
	} else if(c == '5' && money >= 150) {
		san += 30; if(san>100)san=100; money-=150;
		slowPrint("你使用了镇静剂,理智大幅恢复!");
	} else if(c == '6' && money >= 250) {
		ghostAnger -= 30; if(ghostAnger<0)ghostAnger=0; money-=250;
		slowPrint("十字架净化了怨气,鬼怒降低!");
	} else if(c != '7') slowPrint("金钱不足!");
	waitKey();
}

// 道具
void useItem() {
	showTitle("道 具 栏", 11);
	cout << "当前持有道具:" << endl;
	if(hasFood) cout << "1. 压缩饼干(恢复15理智)" << endl;
	if(hasLighter) cout << "2. 打火机(黑暗照明)" << endl;
	if(hasRadio) cout << "3. 收音机(驱邪)" << endl;
	if(hasCard) cout << "4. 护身符(免疫死亡)" << endl;
	if(hasHairpin) cout << "5. 红色发卡(剧情关键)" << endl;
	if(hasLetter) cout << "6. 道歉信(剧情关键)" << endl;
	if(hasPendant) cout << "7. 姐姐吊坠(剧情关键)" << endl;
	cout << "8. 退出道具栏" << endl << endl;
	cout << "选择要使用的道具:";
	char c = getch();
	if(c == '1' && hasFood) {
		san += 15; if(san > 100) san = 100; hasFood = false;
		slowPrint("你吃了饼干,理智恢复了!理智+15");
	} else if(c == '2' && hasLighter) {
		slowPrint("打火机点燃,周围变得明亮!");
		courage += 10;
	} else if(c == '3' && hasRadio) {
		slowPrint("收音机发出白噪音,鬼魂被驱散!");
		metGhost = false; san += 10; ghostAnger -= 5;
	} else if(c == '4' && hasCard) {
		slowPrint("护身符发出微光,守护着你!");
	}
	waitKey();
}

// 7楼
void floor7Event() {
	visited7Floor = true;
	showTitle("禁 区 · 7 楼", 12);
	slowPrint("电梯疯狂抖动,门打开后是一片血色迷雾!\n");
	Sleep(800);
	slowPrint("这里根本不是公寓,而是阴阳交界的缝隙!\n");
	Sleep(1000);

	// 只有主动按7楼才违规
	ruleBroken = true;
	ghostAnger += 40;
	san -= 50;

	cout << "\n1. 强行前进 2. 立刻逃离" << endl;
	char ch = getch();
	if(ch == '1') {
		slowPrint("\n你被黑影拖入深渊...");
		san = 0;
	} else {
		slowPrint("\n你拼命按关门键,电梯疯狂下坠逃生!");
		courage += 15;
	}
	waitKey();
}

// 地图
void exploreMap() {
	showTitle("公 寓 地 图", 11);
	cout << "当前天气:" << weather[rand()%4] << endl << endl;
	cout << "1. 自己的房间(安全)" << endl;
	cout << "2. 公寓走廊(中等危险)" << endl;
	cout << "3. 地下室(高危险)" << endl;
	cout << "4. 顶楼(极高危险)" << endl;
	cout << "5. 电梯(危险)" << endl;
	cout << "6. 返回主菜单" << endl << endl;
	cout << "选择探索区域:";
	char c = getch();
	if(c == '1') {
		showTitle("房间", 10);
		slowPrint("你回到房间,这里是唯一安全的地方。");
		san += 5;
	} else if(c == '2') {
		visitedCorridor = true;
		showTitle("公寓走廊", 12);
		slowPrint("走廊灯光闪烁,空气中弥漫着霉味。");
		if(rand()%2 == 0) {
			slowPrint("你捡到了一张纸条!线索+1");
			clue += 1;
		} else {
			slowPrint("你听到了身后的脚步声...");
			san -= 10;
			ghostAnger += 5;
		}
	} else if(c == '3') {
		visitedBasement = true;
		basementEvent();
	} else if(c == '4') {
		visitedRooftop = true;
		if(day < 7) {
			showTitle("顶楼", 12);
			slowPrint("顶楼大门紧锁,只有第七天才能打开!");
		} else rooftopFinal();
	} else if(c == '5') {
		showTitle("电 梯", 13);
		slowPrint("电梯内部阴冷,数字跳动异常...");
		cout << "\n是否按7楼?(y/n):";
		char ch = getch();
		if(ch == 'y' || ch == 'Y') floor7Event();
		else slowPrint("\n你遵守规则,没有按下7楼。");
	}
	waitKey();
}

// 行动
void dailyAction() {
	showTitle("第" + to_string(day) + "天 - 行 动 选 择", 11);
	cout << "1. 区域探索  2. 使用道具  3. 前往商店" << endl;
	cout << "4. 查看规则  5. 保存游戏  6. 读取游戏" << endl;
	cout << endl << "请选择行动:";
	char c = getch();
	if(c == '1') exploreMap();
	else if(c == '2') useItem();
	else if(c == '3') shop();
	else if(c == '4') showRules();
	else if(c == '5') saveGame();
	else if(c == '6') loadGame();
}

// 开场
void gameStart() {
	system("cls");
	setColor(12);
	cout << "╔═════════════════════════════════╗" << endl;
	cout << "║     规 则 怪 谈 - 红 衣 女 孩     ║" << endl;
	cout << "║            完 整 版             ║" << endl;
	cout << "╚═════════════════════════════════╝" << endl << endl;
	setColor(7);

	showTitle("难 度 选 择", 11);
	cout << "1. 普通模式(理智正常消耗)" << endl;
	cout << "2. 困难模式(理智双倍消耗)" << endl;
	char c = getch();
	if(c == '2') isHardMode = true;

	showTitle("搬 家 第 一 天", 11);
	cout << "请输入你的名字:";
	cin >> playerName;
	system("cls");

	setColor(14);
	cout << "========================================" << endl;
	cout << "           2023年10月15日 雨夜           " << endl;
	cout << "========================================" << endl << endl;
	setColor(7);

	slowPrint(playerName + ",你刚租下这套月租300的廉价公寓。\n");
	Sleep(800);
	slowPrint("房东是个眼神空洞的老婆婆,临走前反复叮嘱:\n");
	Sleep(800);
	setColor(12);
	slowPrint("'一定要遵守规则,否则...永远别想离开!'\n");
	setColor(7);
	Sleep(1000);
	showRules();

	slowPrint("收拾行李时,你发现了前房客留下的遗物:\n");
	cout << "1. 破旧日记本\n";
	cout << "2. 泛黄照片\n";
	cout << "3. 生锈钥匙\n";
	cout << "选择你要带走的物品:";
	char choice = getch();
	if(choice == '1') {
		hasDiary = true; slowPrint("\n你拿起了日记本...");
	} else if(choice == '2') {
		hasPhoto = true; slowPrint("\n你拿起了照片...");
	} else if(choice == '3') {
		hasKey = true; slowPrint("\n你拿起了钥匙...");
	}
	slowPrint("\n夜深了,窗外下起了猩红的雨,噩梦即将开始...");
	Sleep(1500);
}

// 日记
void diaryEvent() {
	showTitle("日 记 本 - 亡 魂 遗 言", 14);
	slowPrint("你翻开日记本,字迹从工整变得癫狂:\n\n");
	Sleep(1000);
	setColor(12); cout << "「10月10日」" << endl; setColor(7);
	slowPrint("红衣的小琪每天都在哭,她在找姐姐小玲。");
	Sleep(800);
	setColor(12); cout << endl << "「10月11日」" << endl; setColor(7);
	slowPrint("她们因为一个发卡吵架,小琪摔坏了发卡。");
	Sleep(800);
	setColor(12); cout << endl << "「10月12日」" << endl; setColor(7);
	slowPrint("小玲失手把小琪从顶楼推了下去...");
	Sleep(800);
	setColor(12); cout << endl << "「10月13日」" << endl; setColor(7);
	slowPrint("地下室藏着小琪的遗体,钥匙在死去的房客身上。");
	Sleep(800);
	setColor(12); cout << endl << "「10月14日」" << endl; setColor(7);
	slowPrint("它来了,它知道我发现了秘密,我要死了...");
	clue += 5; san -= 5;
	cout << endl << endl << "线索+5,理智-5,当前线索:" << clue << endl;
	waitKey();
}

// 照片
void photoEvent() {
	showTitle("泛 黄 的 照 片", 14);
	slowPrint("照片上是一对可爱的姐妹,红衣小琪,白衣小玲。\n");
	Sleep(1000);
	slowPrint("照片背面用血写着:\n");
	setColor(12); slowPrint("'妹妹,对不起,我不是故意的...'");
	setColor(7); Sleep(1000);
	slowPrint("\n突然!照片上的小琪缓缓转过头,直勾勾盯着你!");
	san -= 20; clue += 3; metGhost = true; sisterFavor += 10;
	cout << endl << "理智-20,线索+3,妹妹好感度+10" << endl;
	waitKey();
}

// 第一夜
void firstNight() {
	showTitle("第 一 夜 - 噩 梦 降 临", 12);
	slowPrint("你躺在床上,雨声像婴儿的哭声一样刺耳。\n");
	Sleep(1000);
	slowPrint("梦中,你站在顶楼,红衣女孩悬在半空。\n");
	Sleep(1000);
	slowPrint("'为什么不救我...为什么所有人都抛弃我...'");
	Sleep(1000);
	cout << endl << "你猛地惊醒!时间:凌晨3:33" << endl;
	setColor(12); cout << "【规则7警告】绝对不要看窗外!" << endl; setColor(7);
	cout << endl << "1. 强行看向窗外" << endl;
	cout << "2. 闭眼默念规则" << endl;
	cout << "3. 躲进被子瑟瑟发抖" << endl;
	char choice = getch();
	if(choice == '1') {
		ruleBroken = true;
		slowPrint("\n你看到了她的脸——没有眼睛,只有黑洞!");
		san -= 45; ghostAnger += 20;
	} else if(choice == '2') {
		slowPrint("\n你遵守规则,平安度过了恐怖的一夜。");
		san += 5; courage += 5;
	} else {
		slowPrint("\n你在恐惧中熬过一夜,精神备受折磨。");
		san -= 20;
	}
	waitKey();
}

// 邻居
void meetNeighbor() {
	showTitle("第"+to_string(day)+"天 - 神 秘 房 东", 14);
	slowPrint("你在走廊遇到了房东老婆婆,她递给你一杯水。\n");
	Sleep(1000);
	slowPrint("'我是这栋楼的守护者,十年前的悲剧我亲眼目睹。'");
	Sleep(1000);
	slowPrint("'小琪含冤而死,化作地缚灵,诅咒着所有房客。'");
	Sleep(1000);
	slowPrint("'小玲愧疚一生,最后也消失在了这栋楼里。'");
	clue += 3; sisterFavor += 5; trustOldLady += 10;
	cout << endl << "线索+3,妹妹好感度+5,婆婆信任+10" << endl;
	cout << "1. 询问和解方法 2. 询问真相 3. 询问姐姐下落" << endl;
	char c = getch();
	if(c == '1') {
		slowPrint("\n'找到发卡和道歉信,她就能安息,诅咒解除。'");
		clue += 2;
	} else if(c == '2') {
		slowPrint("\n'真相就是,姐姐从未想过杀死妹妹,只是意外。'");
		sisterFavor += 10;
	} else if(c == '3') {
		slowPrint("\n'小玲的灵魂,也被困在这栋楼里赎罪。'");
		clue += 1;
	}
	waitKey();
}

// 白衣姐姐
void whiteSisterEvent() {
	showTitle("白 衣 女 人", 13);
	slowPrint("一个穿白衣的女人出现在你面前,她是小玲。\n");
	Sleep(1000);
	slowPrint("'帮帮我,我想向妹妹道歉,我真的不是故意的。'");
	Sleep(1000);
	cout << "1. 相信她 2. 拒绝她 3. 给她发卡" << endl;
	char c = getch();
	if(c == '1') {
		slowPrint("\n小玲感激地看着你,好感度大幅提升!");
		sisterFavor += 30; clue += 2;
	} else if(c == '3' && savedGirl) {
		slowPrint("\n你把发卡递给她,她泪流满面。");
		trueEnding = true; clue += 5;
	}
	waitKey();
}

// 地下室
void basementEvent() {
	showTitle("地 下 室 - 亡 魂 巢 穴", 8);
	setColor(8); cout << "阴森潮湿,腐臭扑鼻,远处传来孩童的哭声。" << endl << endl; setColor(7);
	if(!hasKey) {
		slowPrint("大门紧锁,上面刻满了孩童的抓痕,需要钥匙。");
		waitKey(); return;
	}
	if(!hasLighter) {
		slowPrint("一片漆黑,你什么都看不见,必须要有打火机!");
		waitKey(); return;
	}
	slowPrint("你用钥匙打开门,打火机照亮了黑暗。\n");
	Sleep(1000);
	slowPrint("墙壁上全是抓痕,正中央放着一个木箱。\n");
	Sleep(1000);
	cout << "1. 打开木箱 2. 搜查角落 3. 立刻逃跑" << endl;
	char choice = getch();
	if(choice == '1') {
		slowPrint("\n木箱里装着:红色发卡 + 道歉信 + 姐姐的遗物!");
		hasHairpin = true; hasLetter = true; hasPendant = true;
		Sleep(1000);
		slowPrint("\n'姐姐,对不起,我不该任性,我原谅你了。'");
		clue += 5; savedGirl = true; san += 25; sisterFavor += 20;
	} else if(choice == '2') {
		slowPrint("\n你摸到了一只冰冷的小手!");
		san -= 40; ghostAnger += 20;
	} else {
		slowPrint("\n你疯跑出去,心脏几乎炸裂。");
		courage -= 15;
	}
	waitKey();
}

// 鬼怒
void ghostAngerCheck() {
	if(ghostAnger >= 100) {
		showTitle("怨 气 爆 棚", 12);
		slowPrint("红衣女孩被彻底激怒,直接降临!");
		san -= 60;
		if(hasCard) {
			slowPrint("\n护身符保护了你!");
			hasCard = false;
			ghostAnger = 50;
		}
		ghostAnger = 70;
	}
}

// 隐藏结局
void hiddenEnding() {
	hasHiddenEnd = true;
	showTitle("隐 藏 结 局", 10);
	slowPrint("你集齐了所有真相,婆婆现身并交给你镇魂符!\n");
	Sleep(1000);
	slowPrint("姐妹俩、房东、所有亡魂一同超度!\n");
	Sleep(1000);
	setColor(10);
	cout << "\n=== 完美隐藏结局:公寓超度 ===" << endl;
	gameWin = true;
}

// 顶楼
void rooftopFinal() {
	ghostAngerCheck();
	showTitle("第7天 - 顶 楼 决 战", 12);

	if(trustOldLady >= 30 && clue >= 20 && savedGirl && trueEnding) {
		hiddenEnding();
		return;
	}

	if(!savedGirl) {
		slowPrint("红衣小琪漂浮在半空,全身滴血,面目狰狞。\n");
		Sleep(1000);
		slowPrint("'你没有救赎我,那就永远留下来陪我!'");
		if(hasCard) {
			slowPrint("\n护身符发光,救了你一命!");
			hasCard = false; san = 20;
		} else {
			san -= 999;
			setColor(12); cout << endl << "=== 坏结局:亡魂的祭品 ===" << endl;
		}
	} else if(trueEnding && sisterFavor >= 80) {
		slowPrint("你拿出发卡和道歉信,姐妹俩的灵魂同时出现。\n");
		Sleep(1000);
		slowPrint("'姐姐,我原谅你了!' '妹妹,对不起!'");
		Sleep(1000);
		slowPrint("\n两道白光相拥,诅咒彻底解除,公寓恢复平静。");
		setColor(10); cout << endl << "=== 真结局:姐妹重逢 ===" << endl;
		gameWin = true;
	} else {
		slowPrint("你递出发卡,小琪的灵魂露出了释然的笑容。\n");
		Sleep(1000);
		slowPrint("'谢谢你,我终于可以安心离开了...'");
		Sleep(1000);
		slowPrint("\n红衣身影消散,公寓的诅咒消失了。");
		setColor(10); cout << endl << "=== 好结局:灵魂救赎 ===" << endl;
		gameWin = true;
	}
	waitKey();
}

// ==============================
// 【核心修复】随机事件不再乱触发规则破坏!
// ==============================
void randomEvent() {
	vector<string> events = {
		"电梯数字疯狂跳动,停在了不存在的7楼",
		"镜子里的你对着自己诡异微笑并招手",
		"门外传来小女孩拍门:哥哥/姐姐,开门",
		"天花板滴下暗红色的血液,落在你的额头",
		"电视自动播放十年前姐妹俩的葬礼新闻",
		"耳边传来轻柔的梳头声,却空无一人",
		"墙壁渗出黑色油污,组成了:救我",
		"你的影子分裂成两个人,一红一白",
		"走廊灯光全部熄灭,红衣身影一闪而过",
		"手机自动拨号,听筒传来儿歌",
		"窗户自动打开,猩红雨水飘进房间",
		"衣柜门缓缓打开,里面站着白色人影"
	};
	int idx = rand() % events.size();
	showTitle("诡 异 事 件", 12);
	slowPrint(events[idx] + "...\n");
	Sleep(1000);
	int lose = isHardMode ? 30 : 20;
	san -= lose;
	ghostAnger += 5;
	slowPrint("理智-" + to_string(lose) + "  鬼怒+5");

	// ============= 修复 =============
	// 随机事件【绝对不再自动触发规则破坏】
	// ============= 修复 =============

	waitKey();
}

// 理智检测
bool checkSanity() {
	if(san <= 0) {
		showTitle("理 智 崩 溃", 12);
		slowPrint("你的精神彻底破碎,永远被困在了诅咒公寓...\n");
		deathCount++;
		setColor(12); cout << "死亡次数:" << deathCount << endl; setColor(7);
		cout << "重新开始游戏?(y/n):";
		if(getch() == 'y') {
			san = 100; clue = 0; day = 1; money = 500;
			courage = 50; sisterFavor = 0;
			trustOldLady = 0; ghostAnger = 0;
			hasDiary = hasPhoto = hasKey = false;
			hasLighter = hasFood = hasRadio = hasCard = false;
			hasHairpin = hasLetter = hasPendant = false;
			metGhost = savedGirl = false;
			ruleBroken = false; // 彻底清违规
			visitedBasement = visitedRooftop = visitedCorridor = false;
			visited7Floor = false;
			gameWin = false;
			trueEnding = false;
			return true;
		}
		return false;
	}
	if(san < 30) {
		setColor(12); cout << "?  警告:理智濒临崩溃  ?" << endl; setColor(7);
		Sleep(1000);
	}
	return true;
}

// 总结
void daySummary() {
	showTitle("第" + to_string(day) + "天 总 结", 10);
	cout << "【角色状态】" << endl;
	cout << "理智:" << san << "/100  线索:" << clue << "/25  鬼怒:" << ghostAnger << "/100" << endl;
	cout << "金钱:" << money << "¥  勇气:" << courage << "  好感:" << sisterFavor << "/100" << endl;
	cout << "婆婆信任:" << trustOldLady << "/30" << endl << endl;
	cout << "【关键道具】" << endl;
	if(hasHairpin) cout << "发卡 ";
	if(hasLetter) cout << "道歉信 ";
	if(hasPendant) cout << "吊坠 ";
	waitKey();
}

// 主函数
int main() {
	srand(time(0));
	CONSOLE_CURSOR_INFO cursorInfo;
	GetConsoleCursorInfo(hConsole, &cursorInfo);
	cursorInfo.bVisible = false;
	SetConsoleCursorInfo(hConsole, &cursorInfo);

	system("title 规则怪谈:红衣女孩 修复版");
	system("mode con cols=60 lines=30");

	setColor(12);
	cout << "╔═════════════════════════════════╗" << endl;
	cout << "║     规 则 怪 谈 - 红 衣 女 孩     ║" << endl;
	cout << "║            修 复 版             ║" << endl;
	cout << "╚═════════════════════════════════╝" << endl << endl;
	setColor(7);
	slowPrint("欢迎来到诅咒公寓,生存下去,揭开真相...");
	Sleep(1500);

	cout << "1. 新游戏    2. 读游戏" << endl;
	char c = getch();
	if(c == '2') loadGame();
	else gameStart();

	while(day <= 7) {
		dailyAction();
		if(day == 1) firstNight();
		else if(day == 2 && hasDiary) diaryEvent();
		else if(day == 2 && hasPhoto) photoEvent();
		else if(day == 3) meetNeighbor();
		else if(day == 4 && sisterFavor >= 50) whiteSisterEvent();
		else if(day >= 5 && day <= 6) {
			for(int i = 0; i < 2; i++) {
				randomEvent();
				ghostAngerCheck();
				if(!checkSanity()) break;
			}
		} else if(day == 7) {
			rooftopFinal(); break;
		}

		if(!checkSanity()) break;
		daySummary();
		day++;
		money += 150;
	}

	cursorInfo.bVisible = true;
	SetConsoleCursorInfo(hConsole, &cursorInfo);
	if(gameWin) {
		system("cls");
		setColor(10);
		slowPrint("恭喜你成功打破诅咒,活了下来!");
		Sleep(2000);
	}
	system("cls");
	showTitle("游 戏 结 束", 12);
	cout << "感谢游玩《规则怪谈:红衣女孩》修复版!" << endl;
	return 0;
}