#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
#ifdef _WIN32
#include <windows.h>
#define sleep(x) Sleep(x * 1000)
#else
#include <unistd.h>
#endif
using namespace std;
string int2str(int num) {
ostringstream oss;
oss << num;
return oss.str();
}
void clearScreen() {
#ifdef _WIN32
system("cls");
#else
system("clear");
#endif
}
void slowPrint(const string& text, int speed = 50) {
for (size_t i = 0; i < text.size(); ++i) {
cout << text[i] << flush;
#ifdef _WIN32
Sleep(speed);
#else
usleep(speed * 1000);
#endif
}
cout << endl;
}
vector<int> getRandomIndexes(int total, int count) {
vector<int> indexes;
for (int i = 1; i <= total; ++i) {
indexes.push_back(i);
}
random_shuffle(indexes.begin(), indexes.end());
vector<int> result(indexes.begin(), indexes.begin() + count);
return result;
}
int randomScene() {
return rand() % 5 + 1;
}
void scene_TeacherOffice();
void scene_Airport();
void scene_WC();
void scene_Class710();
void scene_ComputerRoom();
void scene_TeacherOffice() {
clearScreen();
slowPrint("========================", 80);
slowPrint("【随机场景:老师办公室】", 100);
slowPrint("========================", 80);
sleep(1);
slowPrint("\n规则:", 70);
slowPrint("1. 晚上绝对不要碰老师的红笔。", 70);
slowPrint("2. 电话响了绝对不要接。", 70);
slowPrint("3. 不要看窗外超过3秒。", 70);
slowPrint("4. 不要翻动办公桌的抽屉。", 70);
slowPrint("5. 听到粉笔写字声不要回头。", 70);
sleep(3);
clearScreen();
slowPrint("\n【深夜 23:00】", 90);
slowPrint("办公桌上的红笔开始微微发烫,电话突然疯狂响起,窗外有黑影飘过。", 70);
slowPrint("你的选择:", 60);
slowPrint("1. 拿起红笔 / 接电话 / 看向窗外", 70);
slowPrint("2. 遵守规则,一动不动", 70);
int c;
cout << "\n选择(1/2):";
cin >> c;
if (c == 1) {
clearScreen();
slowPrint("\n【规则违反】", 120);
slowPrint("恐怖的事情接连发生...", 80);
sleep(1);
vector<int> randomIndexes = getRandomIndexes(10, 5);
vector<int>::iterator it;
for (it = randomIndexes.begin(); it != randomIndexes.end(); ++it) {
int idx = *it;
clearScreen();
slowPrint("\n【恐怖事件 " + int2str(idx) + "】", 100);
switch(idx) {
case 1: slowPrint("红笔自动在纸上写字:你也要留下来批改作业...字的颜色慢慢变成暗红色,像干涸的血", 80); break;
case 2: slowPrint("电话里传来沙哑的声音:终于找到替死鬼了...你回头,电话座机的电话线缠上了你的手腕", 80); break;
case 3: slowPrint("窗外飘进一个黑影,慢慢贴在你的背上...你想抬手,却发现手臂已经和黑影融为一体", 80); break;
case 4: slowPrint("办公室的门自动锁死,灯一盏一盏熄灭...最后只剩你面前的红笔在纸上不停写着你的名字", 80); break;
case 5: slowPrint("你发现镜子里的自己,正在对着你笑...镜子里的人慢慢走出镜面,而你被吸了进去", 80); break;
case 6: slowPrint("办公桌抽屉自动打开,里面全是写满名字的纸条,最后一张写着你的名字,还带着未干的红墨水", 80); break;
case 7: slowPrint("黑板方向传来粉笔写字声,你回头看到黑板上写满了\"留下来\",粉笔灰落在你肩头,变成黑色的灰渍", 80); break;
case 8: slowPrint("红笔突然飞起来,在你手背上写下一个数字:710...你抬头,办公室的门牌变成了710", 80); break;
case 9: slowPrint("电话听筒自己掉下来,里面传来你自己的声音:为什么不遵守规则?为什么不遵守规则?", 80); break;
case 10: slowPrint("窗外的黑影敲打着玻璃,玻璃上慢慢渗出红色的液体,你伸手去擦,液体却粘在手上甩不掉", 80); break;
}
sleep(2);
}
clearScreen();
slowPrint("\n【最终结局:你永远留在了老师办公室,成为办公桌抽屉里的一张纸条】", 100);
sleep(3);
return;
}
clearScreen();
slowPrint("\n【规则遵守】", 100);
slowPrint("你蜷缩在角落,直到窗外泛起鱼肚白。", 70);
slowPrint("清晨的阳光照进办公室,红笔恢复冰冷,电话停止了响动,你跌跌撞撞跑出办公楼,背后传来一声叹息。", 70);
slowPrint("\n【结局:存活】", 100);
sleep(2);
}
void scene_Airport() {
clearScreen();
slowPrint("========================", 80);
slowPrint("【随机场景:机场】", 100);
slowPrint("========================", 80);
sleep(1);
slowPrint("\n规则:", 70);
slowPrint("1. 不要登上凌晨 0:00 起飞的航班。", 70);
slowPrint("2. 不要和穿黑色制服的人说话。", 70);
slowPrint("3. 广播叫你名字时不要回应。", 70);
slowPrint("4. 不要碰候机厅的黑色座椅。", 70);
slowPrint("5. 不要看航班信息屏上的404航班。", 70);
sleep(3);
clearScreen();
slowPrint("\n【凌晨机场】", 90);
slowPrint("广播突然喊你的名字,黑衣人朝你走来,航班屏上404航班的字样不停闪烁。", 70);
slowPrint("1. 回应广播 / 跟随黑衣人 / 查看404航班", 70);
slowPrint("2. 低头假装没听见,远离黑色座椅", 70);
int c;
cout << "\n选择(1/2):";
cin >> c;
if (c == 1) {
clearScreen();
slowPrint("\n【规则违反】", 120);
slowPrint("恐怖的事情接连发生...", 80);
sleep(1);
vector<int> randomIndexes = getRandomIndexes(10, 5);
vector<int>::iterator it;
for (it = randomIndexes.begin(); it != randomIndexes.end(); ++it) {
int idx = *it;
clearScreen();
slowPrint("\n【恐怖事件 " + int2str(idx) + "】", 100);
switch(idx) {
case 1: slowPrint("你登上404航班,飞机滑行后永远没有起飞...机舱内的乘客慢慢转过头,都没有五官", 80); break;
case 2: slowPrint("黑衣人笑了:又一个迷路的乘客...他的脸慢慢融化,变成你熟悉的模样,却没有眼睛", 80); break;
case 3: slowPrint("广播重复你的名字,声音越来越近...最后广播喇叭里伸出一只手,抓住了你的衣角", 80); break;
case 4: slowPrint("你碰了黑色座椅,座椅慢慢陷下去,你的半个身体被吸进座椅里,无法挣脱", 80); break;
case 5: slowPrint("航班信息屏突然炸裂,碎片溅到你身上,每片碎片里都映着404的数字和你的脸", 80); break;
case 6: slowPrint("机场的灯全部熄灭,只有404航班的指示灯亮着,你朝着光亮走去,再也走不出来", 80); break;
case 7: slowPrint("黑衣人递给你一张登机牌,上面的目的地写着\"无归处\",登机口是0号", 80); break;
case 8: slowPrint("你回应广播后,所有广播同时喊你的名字,回声在机场里回荡,让你头痛欲裂", 80); break;
case 9: slowPrint("机场的自动门全部关闭,显示屏上开始播放你的过往,每个画面里都有一个黑衣人站在角落", 80); break;
case 10: slowPrint("你走到404航班登机口,发现登机口后是无尽的黑暗,有声音喊你进去:到家了...", 80); break;
}
sleep(2);
}
clearScreen();
slowPrint("\n【最终结局:迷失在午夜机场,成为机场广播里重复的名字】", 100);
sleep(3);
return;
}
clearScreen();
slowPrint("\n【规则遵守】", 100);
slowPrint("你躲在便利店的角落,直到清晨第一班航班起飞。", 70);
slowPrint("黑衣人消失在人群里,广播恢复正常,404航班的字样也消失了,你买了最早的机票离开。", 70);
slowPrint("\n【结局:存活】", 100);
sleep(2);
}
void scene_WC() {
clearScreen();
slowPrint("========================", 80);
slowPrint("【随机场景:公共厕所】", 100);
slowPrint("========================", 80);
sleep(1);
slowPrint("\n规则:", 70);
slowPrint("1. 深夜不要进最里面的隔间。", 70);
slowPrint("2. 有人敲门绝对不要开。", 70);
slowPrint("3. 不要看隔间底部的缝隙。", 70);
slowPrint("4. 不要用隔间里的红色洗手液。", 70);
slowPrint("5. 听到水流声不要去关水龙头。", 70);
sleep(3);
clearScreen();
slowPrint("\n【深夜厕所】", 90);
slowPrint("隔间外传来缓慢的敲门声,底部有东西在看你,洗手台的水龙头自动流出红色的水。", 70);
slowPrint("1. 开门 / 低头看缝隙 / 去关水龙头", 70);
slowPrint("2. 屏住呼吸不动,远离红色洗手液", 70);
int c;
cout << "\n选择(1/2):";
cin >> c;
if (c == 1) {
clearScreen();
slowPrint("\n【规则违反】", 120);
slowPrint("恐怖的事情接连发生...", 80);
sleep(1);
vector<int> randomIndexes = getRandomIndexes(10, 5);
vector<int>::iterator it;
for (it = randomIndexes.begin(); it != randomIndexes.end(); ++it) {
int idx = *it;
clearScreen();
slowPrint("\n【恐怖事件 " + int2str(idx) + "】", 100);
switch(idx) {
case 1: slowPrint("门外什么都没有,但你的肩膀多了一只冰冷的手...你抬头,镜子里的人正举着红色洗手液朝你笑", 80); break;
case 2: slowPrint("你看到一双没有脚的腿悬在半空...腿上的裤子慢慢变成你今天穿的款式,红色的水滴落在你脚边", 80); break;
case 3: slowPrint("隔间门自动打开,黑暗中有人盯着你...对方的脸和你一模一样,只是嘴角裂到了耳根", 80); break;
case 4: slowPrint("你去关水龙头,手被红色的水粘住...水流顺着你的手臂往上爬,慢慢包裹住你的整只手", 80); break;
case 5: slowPrint("红色洗手液自动挤出,在洗手台上写着\"进来陪我\",字迹慢慢渗进台面,又从你脚下冒出来", 80); break;
case 6: slowPrint("你低头看缝隙,看到无数双眼睛正盯着你...眼睛慢慢从缝隙里挤进来,掉在地上发出啪嗒声", 80); break;
case 7: slowPrint("敲门声越来越急,隔间的锁自己弹开...你想跑,却发现门怎么也推不开,缝隙里开始渗红色的水", 80); break;
case 8: slowPrint("水龙头流出的不是水,是头发...头发缠上你的脚踝,把你往洗手台的方向拉", 80); break;
case 9: slowPrint("你开门的瞬间,所有隔间的门都开了...每个隔间里都站着一个背对你的人,异口同声说:终于有人来了", 80); break;
case 10: slowPrint("镜子里的你慢慢转过身,手里拿着红色洗手液...它把洗手液涂在玻璃上,玻璃开始融化,朝你扑来", 80); break;
}
sleep(2);
}
clearScreen();
slowPrint("\n【最终结局:被困在厕所,成为隔间里永远敲门的存在】", 100);
sleep(3);
return;
}
clearScreen();
slowPrint("\n【规则遵守】", 100);
slowPrint("你捂住耳朵蜷缩在角落,直到外面传来晨练的声音。", 70);
slowPrint("敲门声停了,红色的水变回清澈,你推开门,厕所恢复了正常,仿佛什么都没发生过。", 70);
slowPrint("\n【结局:存活】", 100);
sleep(2);
}
void scene_Class710() {
clearScreen();
slowPrint("========================", 80);
slowPrint("【随机场景:710教室】", 100);
slowPrint("========================", 80);
sleep(1);
slowPrint("\n规则:", 70);
slowPrint("1. 晚自习后不要留在教室。", 70);
slowPrint("2. 不要回答黑板前的人影。", 70);
slowPrint("3. 关灯后不要睁眼。", 70);
slowPrint("4. 不要坐最后一排的座位。", 70);
slowPrint("5. 不要捡掉在地上的作业本。", 70);
sleep(3);
clearScreen();
slowPrint("\n【深夜 710 教室】", 90);
slowPrint("黑板前站着一个人影,缓缓回头,最后一排的椅子自己晃动,地上有本写着你名字的作业本。", 70);
slowPrint("1. 说话回应 / 睁眼查看 / 去捡作业本", 70);
slowPrint("2. 闭眼不动,远离最后一排", 70);
int c;
cout << "\n选择(1/2):";
cin >> c;
if (c == 1) {
clearScreen();
slowPrint("\n【规则违反】", 120);
slowPrint("恐怖的事情接连发生...", 80);
sleep(1);
vector<int> randomIndexes = getRandomIndexes(10, 5);
vector<int>::iterator it;
for (it = randomIndexes.begin(); it != randomIndexes.end(); ++it) {
int idx = *it;
clearScreen();
slowPrint("\n【恐怖事件 " + int2str(idx) + "】", 100);
switch(idx) {
case 1: slowPrint("人影靠近:你也留下陪我吧...它的脸慢慢模糊,变成你小学班主任的样子,手里拿着你的不及格作业本", 80); break;
case 2: slowPrint("教室门被锁死,灯全部熄灭...只有黑板上的粉笔字在发光:710教室,缺一个学生", 80); break;
case 3: slowPrint("你捡起作业本,上面的名字慢慢变成别人的,你的名字出现在黑板的黑名单里", 80); break;
case 4: slowPrint("最后一排的椅子自动移到你身后...你坐下的瞬间,椅子和你粘在一起,怎么也站不起来", 80); break;
case 5: slowPrint("你睁眼的瞬间,所有课桌都朝你移来...课桌上的书本翻开,全是空白页,只有你的名字写在页眉", 80); break;
case 6: slowPrint("黑板擦飞起来,擦去了所有字迹,只留下你的名字...粉笔自动在你名字旁写着:永久留级", 80); break;
case 7: slowPrint("人影走到你面前,递给你一支粉笔...你接过的瞬间,手指变成了粉笔的颜色,慢慢开始碎裂", 80); break;
case 8: slowPrint("作业本里掉出一张照片,是你小时候在710教室的照片,但你从未去过这个教室", 80); break;
case 9: slowPrint("教室的窗户全部封死,墙壁开始渗墨水...墨水在地上汇成710的数字,慢慢朝你流来", 80); break;
case 10: slowPrint("你回应人影后,教室里响起无数人的读书声...但除了你和人影,空无一人,读书声全是你的声音", 80); break;
}
sleep(2);
}
clearScreen();
slowPrint("\n【最终结局:成为710教室的一部分,永远坐在最后一排的空座位上】", 100);
sleep(3);
return;
}
clearScreen();
slowPrint("\n【规则遵守】", 100);
slowPrint("你闭着眼睛数时间,直到听到学校保安巡逻的声音。", 70);
slowPrint("睁眼时,人影消失了,作业本也不见了,最后一排的椅子恢复原位,你悄悄溜出教室。", 70);
slowPrint("\n【结局:存活】", 100);
sleep(2);
}
void scene_ComputerRoom() {
clearScreen();
slowPrint("========================", 80);
slowPrint("【随机场景:电脑室】", 100);
slowPrint("========================", 80);
sleep(1);
slowPrint("\n规则:", 70);
slowPrint("1. 不要打开编号404的电脑。", 70);
slowPrint("2. 电脑自动开机不要看屏幕。", 70);
slowPrint("3. 不要接陌生人递来的U盘。", 70);
slowPrint("4. 不要点击弹出的404弹窗。", 70);
slowPrint("5. 听到键盘敲击声不要回头。", 70);
sleep(3);
clearScreen();
slowPrint("\n【深夜电脑室】", 90);
slowPrint("404号电脑自动亮起,屏幕映出人脸,有人在你身后递来一个黑色U盘,键盘自己开始敲击。", 70);
slowPrint("1. 查看404电脑屏幕 / 接U盘 / 回头看键盘", 70);
slowPrint("2. 立刻转身离开,远离404电脑", 70);
int c;
cout << "\n选择(1/2):";
cin >> c;
if (c == 1) {
clearScreen();
slowPrint("\n【规则违反】", 120);
slowPrint("恐怖的事情接连发生...", 80);
sleep(1);
vector<int> randomIndexes = getRandomIndexes(10, 5);
vector<int>::iterator it;
for (it = randomIndexes.begin(); it != randomIndexes.end(); ++it) {
int idx = *it;
clearScreen();
slowPrint("\n【恐怖事件 " + int2str(idx) + "】", 100);
switch(idx) {
case 1: slowPrint("屏幕里的手伸出来抓住了你...你的手臂慢慢变得透明,和屏幕里的光影融为一体", 80); break;
case 2: slowPrint("所有电脑同时显示你的名字...名字后面跟着一行字:已标记,即将格式化", 80); break;
case 3: slowPrint("你接过U盘,U盘瞬间发烫...插在404电脑上后,所有电脑开始播放你的隐私,声音开到最大", 80); break;
case 4: slowPrint("404弹窗无法关闭,铺满了所有屏幕...弹窗里的叉号变成你的脸,朝你做着诡异的笑容", 80); break;
case 5: slowPrint("你回头看键盘,发现没有手在敲击...但键盘自己打出了一串数字:710404,正是你的生日", 80); break;
case 6: slowPrint("404电脑的屏幕开始融化...液体流到地上,形成一个黑洞,有声音从里面喊你的名字", 80); break;
case 7: slowPrint("U盘里的文件自动打开,全是你的照片...每张照片里的你都少了一只眼睛,最后一张照片里没有你", 80); break;
case 8: slowPrint("电脑室的门自动锁死,屏幕亮度调到最大...强光刺得你睁不开眼,再睁眼时,你出现在所有屏幕里", 80); break;
case 9: slowPrint("键盘敲击出的字符慢慢变成红色...字符组成一句话:欢迎来到数字监狱,编号404", 80); break;
case 10: slowPrint("你触碰404电脑的瞬间,所有电脑的鼠标都朝你移动...鼠标指针变成箭头,扎进你的皮肤里", 80); break;
}
sleep(2);
}
clearScreen();
slowPrint("\n【最终结局:被吸入电脑世界,成为404弹窗里永远无法关闭的影像】", 100);
sleep(3);
return;
}
clearScreen();
slowPrint("\n【规则遵守】", 100);
slowPrint("你快步走出电脑室,直到看到教学楼的大门。", 70);
slowPrint("身后传来电脑关机的声音,再回头,电脑室的灯已经熄灭,仿佛从未亮过。", 70);
slowPrint("\n【结局:存活】", 100);
sleep(2);
}
int main() {
srand((unsigned)time(NULL));
clearScreen();
slowPrint("==============================", 80);
slowPrint("【随机规则怪谈:开始游戏】", 100);
slowPrint("==============================", 80);
slowPrint("\n提示:遵守规则才能活下去...", 80);
sleep(2);
int scene = randomScene();
switch(scene) {
case 1: scene_TeacherOffice(); break;
case 2: scene_Airport(); break;
case 3: scene_WC(); break;
case 4: scene_Class710(); break;
case 5: scene_ComputerRoom(); break;
}
clearScreen();
slowPrint("========================", 100);
slowPrint("游戏结束", 120);
slowPrint("========================", 100);
slowPrint("\n是否要再次挑战?(输入1继续,其他键退出)", 80);
int retry;
cin >> retry;
if (retry == 1) {
main();
}
clearScreen();
return 0;
}