#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;
}