#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
#include <windows.h> // Windows 控制台颜色(Linux/mac请删除此行)
using namespace std;
// 游戏角色状态
struct Player {
int fear = 0; // 恐惧值(满100死亡)
int level = 0; // 当前楼层
bool escaped = false;// 是否逃脱
bool dead = false; // 是否死亡
};
// 设置控制台文字颜色 (Windows专用)
void setColor(int color) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
}
// 重置颜色为白色
void resetColor() {
setColor(7);
}
// 打印后室LOGO
void printLogo() {
setColor(6);
cout << "\n=====================================\n";
cout << " 后 室 THE BACKROOMS\n";
cout << "=====================================\n";
resetColor();
}
// 显示当前楼层描述
void showLevel(int level) {
setColor(4);
cout << "\n【当前楼层:Level " << level << "】\n";
resetColor();
switch(level) {
case 0:
cout << "一片无尽的黄色潮湿地毯,荧光灯嗡嗡作响,空气潮湿发霉...\n";
break;
case 1:
cout << "废弃的工业仓库,黑暗的走廊,金属墙壁冰冷刺骨...\n";
break;
case 2:
cout << "狭窄的管道迷宫,蒸汽嘶嘶作响,到处都是生锈的金属...\n";
break;
default:
cout << "无尽的黑暗,你不知道自己在哪里...\n";
break;
}
}
// 随机触发恐怖事件
void randomEvent(Player &p) {
int event = rand() % 5;
setColor(12);
switch(event) {
case 0:
cout << "\n【异响】远处传来模糊的低语声... 恐惧值+10\n";
p.fear += 10;
break;
case 1:
cout << "\n【幻觉】墙壁开始扭曲,你感到头晕目眩... 恐惧值+15\n";
p.fear += 15;
break;
case 2:
cout << "\n【实体】听到急促的脚步声正在靠近!... 恐惧值+20\n";
p.fear += 20;
break;
case 3:
cout << "\n【安全】你发现了一处相对安静的角落,精神平复了一些... 恐惧值-5\n";
p.fear -= 5;
if(p.fear < 0) p.fear = 0;
break;
default:
cout << "\n【寂静】只有无尽的安静,这种安静更让人恐惧... 恐惧值+5\n";
p.fear += 5;
break;
}
resetColor();
}
// 检查状态
void checkStatus(Player &p) {
// 恐惧值上限
if(p.fear >= 100) {
setColor(4);
cout << "\n=====================================\n";
cout << " 你被恐惧吞噬,精神彻底崩溃!\n";
cout << " 游戏结束\n";
cout << "=====================================\n";
resetColor();
p.dead = true;
return;
}
// 楼层通关
if(p.level >= 3) {
setColor(10);
cout << "\n=====================================\n";
cout << " 你找到了出口!成功逃离后室!\n";
cout << " 你赢了!\n";
cout << "=====================================\n";
resetColor();
p.escaped = true;
return;
}
}
// 显示状态面板
void showPanel(Player &p) {
setColor(11);
cout << "\n-------------------------\n";
cout << "恐惧值:" << p.fear << "/100\n";
cout << "状态:" << (p.fear > 70 ? "极度恐慌" : (p.fear > 40 ? "不安" : "平静")) << "\n";
cout << "-------------------------\n";
resetColor();
}
// 游戏主逻辑
void startGame() {
Player p;
char move;
while(!p.dead && !p.escaped) {
showLevel(p.level);
showPanel(p);
// 玩家操作
cout << "\n请选择行动 (W-前进 S-后退 A-左拐 D-右拐 Q-退出):";
cin >> move;
if(move == 'Q' || move == 'q') {
cout << "\n你放弃了探索...\n";
break;
}
// 随机前进楼层
int randMove = rand() % 3;
if(randMove == 0) {
p.level++;
setColor(14);
cout << "\n你穿过了一道无形的屏障,来到了更深的楼层!\n";
resetColor();
}
// 触发事件
randomEvent(p);
// 检查状态
checkStatus(p);
}
}
int main() {
srand(time(0)); // 随机数种子
system("mode con cols=50 lines=20"); // 调整窗口大小
SetConsoleTitleA("后室 The Backrooms - C++游戏"); // 设置窗口标题
printLogo();
setColor(14);
cout << "欢迎来到后室,一旦误入,很难逃离...\n";
cout << "你的目标:找到出口,不要让恐惧值满格!\n";
resetColor();
cout << "\n开始游戏?(Y/N):";
char start;
cin >> start;
if(start == 'Y' || start == 'y') {
startGame();
} else {
cout << "\n你选择了留在现实世界...\n";
}
return 0;
}