问题标题: 闹鬼的房子,剧情文本游戏

0
0
已解决
李天昕
李天昕
初级守护
初级守护

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>

using namespace std;

void printDialogue(const string& speaker, const string& dialogue) {
    cout << speaker << ": " << dialogue << endl;
}

void printOptions(const string& option1, const string& option2, const string& option3, const string& option4) {
    cout << "1. " << option1 << endl;
    cout << "2. " << option2 << endl;
    cout << "3. " << option3 << endl;
    cout << "4. " << option4 << endl;
    cout << "请选择: ";
}
int getPlayerChoice() {
    int choice;
    cin >> choice;
    while (choice < 1 || choice > 4) {
        cout << "无效选择,请选择 1 到 4: ";
        cin >> choice;
    }
    return choice;
}

void showEnding(int endingNumber) {
    printDialogue("旁白", "你已达到结局 " + to_string(endingNumber) + "。");
    printDialogue("旁白", "感谢你的参与!");
}
bool solvePuzzle() {
    printDialogue("旁白", "你遇到了一个谜题:");
    printDialogue("旁白", "在你面前有三个箱子,一个箱子里有钥匙,另外两个箱子里有陷阱。你必须选择一个箱子打开。");
    printOptions("选择第一个箱子。", "选择第二个箱子。", "选择第三个箱子。", "试图离开,放弃开箱。");

    int choice = getPlayerChoice();
    if (choice == 2) {
        printDialogue("旁白", "你打开了第二个箱子,找到了钥匙!");
        return true;
    } else if (choice == 4) {
        printDialogue("旁白", "你决定放弃开箱,但门依然锁着,你必须找到钥匙。");
        return false;
    } else {
        printDialogue("旁白", "你打开箱子,突然一股黑烟冲出,房间瞬间陷入黑暗...");
        printDialogue("旁白", "你感到胸口一阵剧痛,失去了意识...");
        return false;
    }
}

void gameLoop() {
    srand(time(0));  
    int endingNumber = 0;

    printDialogue("旁白", "你接到了一封神秘的信件,信中只有一个地址——一座废弃的老宅。");
    printDialogue("旁白", "你的好奇心驱使你前往,然而当你到达时,天空突然乌云密布,雷声滚滚。");
    printDialogue("旁白", "尽管感到不安,你还是决定进入房子。");

    printOptions("进入前门。", "从后门潜入。", "绕到侧门,看看是否可以从窗户进去。", "在门口徘徊,考虑是否要进入。");
    int choice = getPlayerChoice();

    if (choice == 1) {
        printDialogue("旁白", "你推开前门,发出刺耳的吱呀声。里面一片漆黑,空气中弥漫着腐朽的气味。");
        printDialogue("旁白", "门在你身后猛地关上,你的心脏猛跳了一下。你拿出手电筒,照亮了前方...");
        
        printOptions("进入客厅。", "走向楼梯,看看楼上有什么。", "沿着走廊探索其他房间。", "尝试重新打开前门。");
        choice = getPlayerChoice();

        if (choice == 1) {
            printDialogue("旁白", "你进入了客厅,墙上的古老画像似乎在盯着你。");
            printDialogue("旁白", "突然,画像上的眼睛动了!你屏住呼吸,不敢相信自己的眼睛。");
            printOptions("继续观察画像。", "快速离开客厅。", "拿起手边的椅子,准备自卫。", "试图与画像对话。");
            choice = getPlayerChoice();

            if (choice == 1) {
                printDialogue("旁白", "你盯着画像,眼睛变得越来越真实,突然一只手从画像里伸了出来!");
                printDialogue("旁白", "你试图逃跑,但手已经抓住了你,拉向了画像里...");
                endingNumber = 1;
            } else if (choice == 2) {
                printDialogue("旁白", "你飞快地冲出客厅,心跳加速,听到身后传来低沉的笑声...");
                endingNumber = 2;
            } else if (choice == 3) {
                printDialogue("旁白", "你握紧椅子,眼神警惕。突然,椅子自己开始晃动,你被猛烈甩出,撞向了墙...");
                endingNumber = 3;
            } else {
                printDialogue("你", "是谁在作祟?");
                printDialogue("旁白", "房间里回荡着你的声音,画像上的嘴突然开口:'你不该来这里...' ");
                printDialogue("旁白", "你感到一阵冷风袭来,失去了知觉...");
                endingNumber = 4;
            }
        } else if (choice == 2) {
            printDialogue("旁白", "你走上楼梯,每一步都发出嘎吱声,仿佛有人在跟随你。");
            printDialogue("旁白", "楼梯尽头是一条长长的走廊,走廊尽头有一扇半开着的门。");
            printOptions("走向那扇门。", "检查走廊两侧的其他房间。", "站在原地,倾听周围的声音。", "决定下楼。");
            choice = getPlayerChoice();

            if (choice == 1) {
                printDialogue("旁白", "你慢慢走向那扇门,门后似乎有低语声。");
                printDialogue("旁白", "当你靠近时,门突然打开,一双苍白的手将你拖了进去!");
                endingNumber = 5;
            } else if (choice == 2) {
                printDialogue("旁白", "你打开一个房间的门,发现里面堆满了尘封的旧家具和玩具。");
                printDialogue("旁白", "一个破旧的玩具熊突然倒下,露出了背后的一个小门。");
                printOptions("进入小门。", "检查房间的其他地方。", "离开房间。", "将玩具熊摆回原位。");
                choice = getPlayerChoice();

                if (choice == 1) {
                    printDialogue("旁白", "你挤过小门,发现自己进入了一个狭小的密室,里面的墙壁上布满了血迹...");
                    endingNumber = 6;
                } else if (choice == 2) {
                    printDialogue("旁白", "你在房间里四处查看,发现了几本陈旧的日记,翻开第一页,突然感到一阵寒意...");
                    printDialogue("旁白", "日记中的内容逐渐模糊,仿佛字迹在流动...");
                    endingNumber = 7;
                } else if (choice == 3) {
                    printDialogue("旁白", "你离开了房间,回到了走廊。突然,你听到小门后传来低语声...");
                    endingNumber = 8;
                } else {
                    printDialogue("旁白", "你将玩具熊摆回原位,房间瞬间变得异常安静,仿佛时间停滞了一般...");
                    endingNumber = 9;
                }
            } else if (choice == 3) {
                printDialogue("旁白", "你站在原地,听到楼下传来断断续续的脚步声,还有模糊的低语...");
                endingNumber = 10;
            } else {
                printDialogue("旁白", "你决定返回楼下,但楼梯突然断裂,你摔了下去,失去了意识...");
                endingNumber = 4;
            }
        } else if (choice == 3) {
            printDialogue("旁白", "你沿着走廊走,房间的门无声地打开,寒冷的气息扑面而来...");
            printDialogue("旁白", "走廊尽头的镜子里突然映出一个陌生的身影...");
            printOptions("走近镜子查看。", "回头看看身后。", "忽视镜子,继续探索。", "尝试打破镜子。");
            choice = getPlayerChoice();

            if (choice == 1) {
                printDialogue("旁白", "你走近镜子,镜子中的影像突然变得清晰,那是你的脸,但却在微笑...");
                endingNumber = 3;
            } else if (choice == 2) {
                printDialogue("旁白", "你迅速回头,但什么都没有。再次转向镜子,影像已经消失了...");
                endingNumber = 1;
            } else if (choice == 3) {
                printDialogue("旁白", "你决定继续前进,镜子里突然传来玻璃破裂的声音,碎片四处飞溅...");
                endingNumber = 7;
            } else {
                printDialogue("旁白", "你举起手中的工具,奋力击打镜子,但镜子完好无损,只是笑声变得更加刺耳...");
                endingNumber = 6;
            }
        } else {
            printDialogue("旁白", "你试图重新打开前门,但门已经无法打开...");
            printDialogue("旁白", "你感到无形的力量阻止你离开,耳边传来低语:'留下吧...' ");
            endingNumber = 2;
        }
    } else if (choice == 2) {
        printDialogue("旁白", "你绕到后门,发现门虚掩着,门缝里漏出淡淡的光。");
        printDialogue("旁白", "你轻轻推开门,发现自己进入了一个昏暗的厨房,水槽里的水还在滴答作响...");
        printOptions("检查水槽。", "走向厨房的储物间。", "打开冰箱看看里面有什么。", "寻找厨房里的武器防身。");
        choice = getPlayerChoice();

        if (choice == 1) {
            printDialogue("旁白", "你走近水槽,水突然变成了鲜红的血液,一只惨白的手从水中伸出!");
            endingNumber = 8;
        } else if (choice == 2) {
            printDialogue("旁白", "你打开储物间的门,里面堆满了过期的罐头和腐烂的食物。");
            printOptions("翻找罐头看看是否有用。", "寻找出口。", "仔细检查储物间的角落。", "立刻离开储物间。");
            choice = getPlayerChoice();

            if (choice == 1) {
                printDialogue("旁白", "你翻找罐头,突然感到身后有冷风吹过...");
                endingNumber = 9;
            } else if (choice == 2) {
                printDialogue("旁白", "你决定尽快离开储物间,但门突然关上,储物间里的灯光也熄灭了...");
                endingNumber = 10;
            } else if (choice == 3) {
                printDialogue("旁白", "你发现了一个隐藏在角落的暗门,推开门,发现了一条通往地下的楼梯...");
                endingNumber = 5;
            } else {
                printDialogue("旁白", "你立刻离开储物间,回到了厨房,但厨房的门已经消失,四周只有冰冷的墙壁...");
                endingNumber = 6;
            }
        } else if (choice == 3) {
            printDialogue("旁白", "你打开冰箱,里面传来一阵恶臭,冰箱里堆满了腐烂的食物和一张苍白的人脸...");
            endingNumber = 4;
        } else {
            printDialogue("旁白", "你四处寻找厨房里的刀具,但它们似乎都已生锈。突然,一把刀子自己从桌子上滑了下来,直指向你...");
            endingNumber = 3;
        }
    } else if (choice == 3) {
        printDialogue("旁白", "你绕到侧门,发现侧门已经生锈,但窗户开着。你决定从窗户进入。");
        printDialogue("旁白", "你小心翼翼地爬进窗户,发现自己进入了一个布满灰尘的书房。");
        printOptions("检查书桌上的文件。", "翻看书架上的书。", "坐在椅子上休息一下。", "离开书房,继续探索。");
        choice = getPlayerChoice();

        if (choice == 1) {
            printDialogue("旁白", "你打开书桌上的文件,发现里面的内容令人毛骨悚然,似乎是一本记录着每个闯入者死亡细节的日志...");
            endingNumber = 7;
        } else if (choice == 2) {
            printDialogue("旁白", "你翻看书架上的书,发现了一本封面奇特的古老书籍。翻开第一页,书中的插图开始扭曲...");
            endingNumber = 2;
        } else if (choice == 3) {
            printDialogue("旁白", "你坐在椅子上,感到椅子异常柔软,仿佛它在慢慢吸收你的身体...");
            endingNumber = 8;
        } else {
            printDialogue("旁白", "你决定离开书房,但门口突然出现了一个黑影...");
            endingNumber = 10;
        }
    } else {
        printDialogue("旁白", "你在门口徘徊不定,犹豫着是否要进入。但不知为何,你的脚步似乎被引向了前门。");
        printDialogue("旁白", "门突然自己打开,仿佛在邀请你进入...");
        printOptions("鼓起勇气进入。", "转身离开。", "试图找到另一个入口。", "站在原地不动。");
        choice = getPlayerChoice();

        if (choice == 1) {
            printDialogue("旁白", "你鼓起勇气迈入前门,房子里的一切仿佛在等待你的到来...");
            endingNumber = 1;
        } else if (choice == 2) {
            printDialogue("旁白", "你决定转身离开,但周围的景象突然变得模糊,前方的路消失了...");
            endingNumber = 5;
        } else if (choice == 3) {
            printDialogue("旁白", "你决定绕到侧面,寻找另一个入口,但不管你怎么绕,房子的结构似乎在不断变化...");
            endingNumber = 9;
        } else {
            printDialogue("旁白", "你站在原地不动,感觉到空气中充满了压迫感,突然,门后传来一声低语...");
            endingNumber = 6;
        }
    }

    showEnding(endingNumber);
}

int main() {
    gameLoop();
    return 0;
}
 

李天昕在2024-08-18 10:09:52追加了内容

有没有工作室邀请我呀


0
0
0
李天昕
李天昕
初级守护
初级守护

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>

using namespace std;

void printDialogue(const string& speaker, const string& dialogue) {
    cout << speaker << ": " << dialogue << endl;
}

void printOptions(const string& option1, const string& option2, const string& option3, const string& option4) {
    cout << "1. " << option1 << endl;
    cout << "2. " << option2 << endl;
    cout << "3. " << option3 << endl;
    cout << "4. " << option4 << endl;
    cout << "请选择: ";
}
int getPlayerChoice() {
    int choice;
    cin >> choice;
    while (choice < 1 || choice > 4) {
        cout << "无效选择,请选择 1 到 4: ";
        cin >> choice;
    }
    return choice;
}

void showEnding(int endingNumber) {
    printDialogue("旁白", "你已达到结局 " + to_string(endingNumber) + "。");
    printDialogue("旁白", "感谢你的参与!");
}
bool solvePuzzle() {
    printDialogue("旁白", "你遇到了一个谜题:");
    printDialogue("旁白", "在你面前有三个箱子,一个箱子里有钥匙,另外两个箱子里有陷阱。你必须选择一个箱子打开。");
    printOptions("选择第一个箱子。", "选择第二个箱子。", "选择第三个箱子。", "试图离开,放弃开箱。");

    int choice = getPlayerChoice();
    if (choice == 2) {
        printDialogue("旁白", "你打开了第二个箱子,找到了钥匙!");
        return true;
    } else if (choice == 4) {
        printDialogue("旁白", "你决定放弃开箱,但门依然锁着,你必须找到钥匙。");
        return false;
    } else {
        printDialogue("旁白", "你打开箱子,突然一股黑烟冲出,房间瞬间陷入黑暗...");
        printDialogue("旁白", "你感到胸口一阵剧痛,失去了意识...");
        return false;
    }
}

void gameLoop() {
    srand(time(0));  
    int endingNumber = 0;

    printDialogue("旁白", "你接到了一封神秘的信件,信中只有一个地址——一座废弃的老宅。");
    printDialogue("旁白", "你的好奇心驱使你前往,然而当你到达时,天空突然乌云密布,雷声滚滚。");
    printDialogue("旁白", "尽管感到不安,你还是决定进入房子。");

    printOptions("进入前门。", "从后门潜入。", "绕到侧门,看看是否可以从窗户进去。", "在门口徘徊,考虑是否要进入。");
    int choice = getPlayerChoice();

    if (choice == 1) {
        printDialogue("旁白", "你推开前门,发出刺耳的吱呀声。里面一片漆黑,空气中弥漫着腐朽的气味。");
        printDialogue("旁白", "门在你身后猛地关上,你的心脏猛跳了一下。你拿出手电筒,照亮了前方...");
        
        printOptions("进入客厅。", "走向楼梯,看看楼上有什么。", "沿着走廊探索其他房间。", "尝试重新打开前门。");
        choice = getPlayerChoice();

        if (choice == 1) {
            printDialogue("旁白", "你进入了客厅,墙上的古老画像似乎在盯着你。");
            printDialogue("旁白", "突然,画像上的眼睛动了!你屏住呼吸,不敢相信自己的眼睛。");
            printOptions("继续观察画像。", "快速离开客厅。", "拿起手边的椅子,准备自卫。", "试图与画像对话。");
            choice = getPlayerChoice();

            if (choice == 1) {
                printDialogue("旁白", "你盯着画像,眼睛变得越来越真实,突然一只手从画像里伸了出来!");
                printDialogue("旁白", "你试图逃跑,但手已经抓住了你,拉向了画像里...");
                endingNumber = 1;
            } else if (choice == 2) {
                printDialogue("旁白", "你飞快地冲出客厅,心跳加速,听到身后传来低沉的笑声...");
                endingNumber = 2;
            } else if (choice == 3) {
                printDialogue("旁白", "你握紧椅子,眼神警惕。突然,椅子自己开始晃动,你被猛烈甩出,撞向了墙...");
                endingNumber = 3;
            } else {
                printDialogue("你", "是谁在作祟?");
                printDialogue("旁白", "房间里回荡着你的声音,画像上的嘴突然开口:'你不该来这里...' ");
                printDialogue("旁白", "你感到一阵冷风袭来,失去了知觉...");
                endingNumber = 4;
            }
        } else if (choice == 2) {
            printDialogue("旁白", "你走上楼梯,每一步都发出嘎吱声,仿佛有人在跟随你。");
            printDialogue("旁白", "楼梯尽头是一条长长的走廊,走廊尽头有一扇半开着的门。");
            printOptions("走向那扇门。", "检查走廊两侧的其他房间。", "站在原地,倾听周围的声音。", "决定下楼。");
            choice = getPlayerChoice();

            if (choice == 1) {
                printDialogue("旁白", "你慢慢走向那扇门,门后似乎有低语声。");
                printDialogue("旁白", "当你靠近时,门突然打开,一双苍白的手将你拖了进去!");
                endingNumber = 5;
            } else if (choice == 2) {
                printDialogue("旁白", "你打开一个房间的门,发现里面堆满了尘封的旧家具和玩具。");
                printDialogue("旁白", "一个破旧的玩具熊突然倒下,露出了背后的一个小门。");
                printOptions("进入小门。", "检查房间的其他地方。", "离开房间。", "将玩具熊摆回原位。");
                choice = getPlayerChoice();

                if (choice == 1) {
                    printDialogue("旁白", "你挤过小门,发现自己进入了一个狭小的密室,里面的墙壁上布满了血迹...");
                    endingNumber = 6;
                } else if (choice == 2) {
                    printDialogue("旁白", "你在房间里四处查看,发现了几本陈旧的日记,翻开第一页,突然感到一阵寒意...");
                    printDialogue("旁白", "日记中的内容逐渐模糊,仿佛字迹在流动...");
                    endingNumber = 7;
                } else if (choice == 3) {
                    printDialogue("旁白", "你离开了房间,回到了走廊。突然,你听到小门后传来低语声...");
                    endingNumber = 8;
                } else {
                    printDialogue("旁白", "你将玩具熊摆回原位,房间瞬间变得异常安静,仿佛时间停滞了一般...");
                    endingNumber = 9;
                }
            } else if (choice == 3) {
                printDialogue("旁白", "你站在原地,听到楼下传来断断续续的脚步声,还有模糊的低语...");
                endingNumber = 10;
            } else {
                printDialogue("旁白", "你决定返回楼下,但楼梯突然断裂,你摔了下去,失去了意识...");
                endingNumber = 4;
            }
        } else if (choice == 3) {
            printDialogue("旁白", "你沿着走廊走,房间的门无声地打开,寒冷的气息扑面而来...");
            printDialogue("旁白", "走廊尽头的镜子里突然映出一个陌生的身影...");
            printOptions("走近镜子查看。", "回头看看身后。", "忽视镜子,继续探索。", "尝试打破镜子。");
            choice = getPlayerChoice();

            if (choice == 1) {
                printDialogue("旁白", "你走近镜子,镜子中的影像突然变得清晰,那是你的脸,但却在微笑...");
                endingNumber = 3;
            } else if (choice == 2) {
                printDialogue("旁白", "你迅速回头,但什么都没有。再次转向镜子,影像已经消失了...");
                endingNumber = 1;
            } else if (choice == 3) {
                printDialogue("旁白", "你决定继续前进,镜子里突然传来玻璃破裂的声音,碎片四处飞溅...");
                endingNumber = 7;
            } else {
                printDialogue("旁白", "你举起手中的工具,奋力击打镜子,但镜子完好无损,只是笑声变得更加刺耳...");
                endingNumber = 6;
            }
        } else {
            printDialogue("旁白", "你试图重新打开前门,但门已经无法打开...");
            printDialogue("旁白", "你感到无形的力量阻止你离开,耳边传来低语:'留下吧...' ");
            endingNumber = 2;
        }
    } else if (choice == 2) {
        printDialogue("旁白", "你绕到后门,发现门虚掩着,门缝里漏出淡淡的光。");
        printDialogue("旁白", "你轻轻推开门,发现自己进入了一个昏暗的厨房,水槽里的水还在滴答作响...");
        printOptions("检查水槽。", "走向厨房的储物间。", "打开冰箱看看里面有什么。", "寻找厨房里的武器防身。");
        choice = getPlayerChoice();

        if (choice == 1) {
            printDialogue("旁白", "你走近水槽,水突然变成了鲜红的血液,一只惨白的手从水中伸出!");
            endingNumber = 8;
        } else if (choice == 2) {
            printDialogue("旁白", "你打开储物间的门,里面堆满了过期的罐头和腐烂的食物。");
            printOptions("翻找罐头看看是否有用。", "寻找出口。", "仔细检查储物间的角落。", "立刻离开储物间。");
            choice = getPlayerChoice();

            if (choice == 1) {
                printDialogue("旁白", "你翻找罐头,突然感到身后有冷风吹过...");
                endingNumber = 9;
            } else if (choice == 2) {
                printDialogue("旁白", "你决定尽快离开储物间,但门突然关上,储物间里的灯光也熄灭了...");
                endingNumber = 10;
            } else if (choice == 3) {
                printDialogue("旁白", "你发现了一个隐藏在角落的暗门,推开门,发现了一条通往地下的楼梯...");
                endingNumber = 5;
            } else {
                printDialogue("旁白", "你立刻离开储物间,回到了厨房,但厨房的门已经消失,四周只有冰冷的墙壁...");
                endingNumber = 6;
            }
        } else if (choice == 3) {
            printDialogue("旁白", "你打开冰箱,里面传来一阵恶臭,冰箱里堆满了腐烂的食物和一张苍白的人脸...");
            endingNumber = 4;
        } else {
            printDialogue("旁白", "你四处寻找厨房里的刀具,但它们似乎都已生锈。突然,一把刀子自己从桌子上滑了下来,直指向你...");
            endingNumber = 3;
        }
    } else if (choice == 3) {
        printDialogue("旁白", "你绕到侧门,发现侧门已经生锈,但窗户开着。你决定从窗户进入。");
        printDialogue("旁白", "你小心翼翼地爬进窗户,发现自己进入了一个布满灰尘的书房。");
        printOptions("检查书桌上的文件。", "翻看书架上的书。", "坐在椅子上休息一下。", "离开书房,继续探索。");
        choice = getPlayerChoice();

        if (choice == 1) {
            printDialogue("旁白", "你打开书桌上的文件,发现里面的内容令人毛骨悚然,似乎是一本记录着每个闯入者死亡细节的日志...");
            endingNumber = 7;
        } else if (choice == 2) {
            printDialogue("旁白", "你翻看书架上的书,发现了一本封面奇特的古老书籍。翻开第一页,书中的插图开始扭曲...");
            endingNumber = 2;
        } else if (choice == 3) {
            printDialogue("旁白", "你坐在椅子上,感到椅子异常柔软,仿佛它在慢慢吸收你的身体...");
            endingNumber = 8;
        } else {
            printDialogue("旁白", "你决定离开书房,但门口突然出现了一个黑影...");
            endingNumber = 10;
        }
    } else {
        printDialogue("旁白", "你在门口徘徊不定,犹豫着是否要进入。但不知为何,你的脚步似乎被引向了前门。");
        printDialogue("旁白", "门突然自己打开,仿佛在邀请你进入...");
        printOptions("鼓起勇气进入。", "转身离开。", "试图找到另一个入口。", "站在原地不动。");
        choice = getPlayerChoice();

        if (choice == 1) {
            printDialogue("旁白", "你鼓起勇气迈入前门,房子里的一切仿佛在等待你的到来...");
            endingNumber = 1;
        } else if (choice == 2) {
            printDialogue("旁白", "你决定转身离开,但周围的景象突然变得模糊,前方的路消失了...");
            endingNumber = 5;
        } else if (choice == 3) {
            printDialogue("旁白", "你决定绕到侧面,寻找另一个入口,但不管你怎么绕,房子的结构似乎在不断变化...");
            endingNumber = 9;
        } else {
            printDialogue("旁白", "你站在原地不动,感觉到空气中充满了压迫感,突然,门后传来一声低语...");
            endingNumber = 6;
        }
    }

    showEnding(endingNumber);
}

int main() {
    gameLoop();
    return 0;
}
 

我要回答