生化小游戏
2025-11-29 14:06:28
发布于:浙江
生化小游戏
原作ggc114514 改编Hcode_ak&豆包
#include<bits/stdc++.h>
#include<windows.h>
#include<time.h>
#include<conio.h>
using namespace std;
// ==================== 全局变量====================
// 游戏状态变量
bool gameClear = false; // 基础剧情通关标记
bool advancedClear = false; // 进阶剧情通关标记
int deathCount = 0; // 死亡次数
bool hasSpecialItem = false; // 是否持有特殊物品(mp=-1)
bool saveExists = false; // 是否存在存档
int clueCount = 0; // 已收集线索数
int exitTry = 0; // 尝试退出次数
const string SAVE_FILE = "save.ans";
// 资源变量
int bullets; // 子弹数量
int food; // 食物数量
// 人物关系变量
int girlFavor = 0; // 妹子好感度(-1=敌对,0=中立,1=友好)
bool hasBoy = false; // 少年是否入队
bool boyInfected = false; // 少年是否被感染
int savedGirl = 3; // 妹子关系
int savedBoy = 3; // 少年关系
// 道具/状态标记
int boyWeapon = 0; // 少年武器(0=无,1=枪,2=水管)
bool zombieKingRoute = false; // 尸王线标记
bool triggerWeird = false; // 违和感触发标记
int adminLog = 0; // 管理员日志数量
// 结局/线索收集数组(HappyEnd,BadEnd,TrueEnd/线索)
bool happyEnd[10] = {false}; // 0-未用,1-苟到最后,2-神仙眷侣,3-英雄不朽,4-认清自己,5-跨越物种的gay
bool badEnd[30] = {false}; // 0-未用,1-饿死 2-子弹不足 3-精神崩溃 4-独自执行任务基地被毁 5-基地被攻破 6-变异失去理智
// 7-被作者杀死 8-被变异妹子咬死 9-看笔记本时被少年咬死 10-加入其他基地陷入循环 11-没子弹去邻居家
// 12-精神崩溃被击毙 13-精神崩溃狩猎救援队 14-被带出时死亡 15-笔迹熟悉被少年咬死 16-杀妹子被首领**
// 17-被妹子反杀 18-被丧尸群杀死 19-孤独存活 20-被精英丧尸杀死 21-继续旅程力竭而亡 22-被少年背叛
// 23-和少年安全离开后反目 24-杀死感染少年后成恶魔 25-带少年一起饿死 26-被变异少年杀死 27-被****杀死
bool trueEnd[10] = {false}; // 0-未用,1-一如既往,2-保持本我,3-幻觉,4-停服,5-姗姗来迟的死亡,6-循环守护者,7-域管理员的同化
bool clue[20] = {false}; // 0-奇特的枪与饼干,1-延迟变异的少年,2-不变异的妹子,3-速度飘忽不定的政府,
// 4-早已变异的妹子,5-实验体1号与2号,6-退出,7-死亡?死亡!,8-复活循环,
// 9-变异是什么时候的事呢,10-选择,11-外面的世界,12-真的,假的!,13-自主意识,14-同化的终点
// ==================== 工具函数====================
// 打印文字(速度为30ms)
void slowPrint(const string& text) {
for (char c : text) {
if(triggerWeird == true){
if(rand() % 30 == 1){
system("color f0");
cout << c;
Sleep(30);
system("color 0f");
}
else{
cout << c;
}
Sleep(30);
continue;
}
cout << c;
Sleep(30);
}
cout << endl;
}
int input(int mi, int ma){
char ch = _getch();
while (ch < '0' || ch > '9') {
slowPrint("请输入一个数字");
ch = _getch();
}
int n = ch - '0';
while(n < mi || n > ma){
slowPrint("请输入正确的值");
ch = _getch();
while (ch < '0' || ch > '9') {
slowPrint("请输入一个数字");
ch = _getch();
}
n = ch - '0';
}
return n;
}
// 按键等待(统一提示语)
void pressAnyKey() {
slowPrint("按任意键继续...");
_getch();
system("cls");
}
// 显示当前状态(子弹+食物)
void showStatus() {
system("cls");
slowPrint("当前你的状态是:");
printf("子弹:%d,食物:%d\n", bullets, food);
pressAnyKey();
}
void resetGameState() {
bullets = 0;
food = 0;
girlFavor = 0;
hasBoy = false;
boyWeapon = 0;
}
// 辅助函数:统计已解锁结局数量
int countUnlocked(bool arr[], int size) {
int count = 0;
for (int i = 0; i < size; i++) {
if (arr[i]) count++;
}
return count;
}
// 显示Bad End详情(索引1-27,0未用)
void showBadEnds() {
slowPrint("\n===== Bad End 详情 =====");
string badEndNames[28] = {
"0-未使用",
"1-饿死", "2-子弹不足被咬死", "3-精神崩溃", "4-独自执行任务基地被毁", "5-基地被攻破",
"6-变异失去理智", "7-被作者杀死", "8-被变异妹子咬死", "9-看笔记本时被少年咬死",
"10-加入其他基地陷入麻木循环", "11-没子弹去邻居家", "12-精神崩溃被击毙",
"13-精神崩溃狩猎救援队", "14-被带出时死亡", "15-笔迹熟悉被少年咬死",
"16-杀妹子被首领**", "17-被妹子反杀", "18-被丧尸群杀死", "19-孤独存活",
"20-被精英丧尸杀死", "21-继续旅程力竭而亡", "22-被少年背叛", "23-和少年安全离开后反目",
"24-杀死感染少年后成恶魔", "25-带少年一起饿死", "26-被变异少年杀死", "27-被****杀死 "
};
for (int i = 1; i <= 27; i++) {
if (badEnd[i]) cout << "已完成 " << badEndNames[i] << endl;
Sleep(30); // 略快于线索显示
}
}
// 显示Happy End详情(索引1-5,0未用)
void showHappyEnds() {
slowPrint("\n===== Happy End 详情 =====");
string happyEndNames[6] = {
"0-未使用",
"1-苟到最后", "2-神仙眷侣", "3-英雄不朽", "4-认清自己", "5-跨越物种的gay"
};
for (int i = 1; i <= 5; i++) {
if (happyEnd[i]) cout << "已完成 " << happyEndNames[i] << endl;
Sleep(50);
}
}
// 显示True End详情(索引1-7,0未用)
void showTrueEnds() {
slowPrint("\n===== True End 详情 =====");
string trueEndNames[8] = {
"0-未使用",
"1-一如既往", "2-保持本我", "3-幻觉", "4-停服", "5-姗姗来迟的死亡", "6-循环守护者" ,"7-域管理员的同化"
};
for (int i = 1; i <= 7; i++) {
if (trueEnd[i]) cout << "已完成 " << trueEndNames[i] << endl;
Sleep(100);
}
}
// 显示线索
void showClues() {
slowPrint("\n===== 线索详情 =====");
string clueNames[20] = {
"0-奇特的枪与饼干", "1-延迟变异的少年", "2-不变异的妹子", "3-速度飘忽不定的政府",
"4-早已变异的妹子", "5-实验体1号与2号", "6-退出", "7-死亡?死亡!","8-复活循环",
"9-变异是什么时候的事呢", "10-选择", "11-外面的世界", "12-真的,假的!", "13-自主意识" ,"14-同化的终点"
};
for (int i = 0; i <= 14; i++) {
if (clue[i]) cout << "已完成 " << clueNames[i] << endl;
Sleep(100);
}
}
// 检查存档是否存在
bool checkSaveExists() {
ifstream file(SAVE_FILE);
bool exists = file.good();
file.close();
saveExists = exists;
return exists;
}
// 保存游戏进度到文件
void saveGame() {
ofstream file(SAVE_FILE, ios::binary);
if (!file.is_open()) {
return;
}
// 保存游戏状态变量
file.write((char*)&gameClear, sizeof(gameClear));
file.write((char*)&advancedClear, sizeof(advancedClear));
file.write((char*)&deathCount, sizeof(deathCount));
file.write((char*)&hasSpecialItem, sizeof(hasSpecialItem));
file.write((char*)&clueCount, sizeof(clueCount));
file.write((char*)&savedGirl, sizeof(savedGirl));
file.write((char*)&savedBoy, sizeof(savedBoy));
// 保存道具/状态标记
file.write((char*)&zombieKingRoute, sizeof(zombieKingRoute));
file.write((char*)&triggerWeird, sizeof(triggerWeird));
file.write((char*)&adminLog, sizeof(adminLog));
// 保存结局数组
file.write((char*)happyEnd, sizeof(happyEnd));
file.write((char*)badEnd, sizeof(badEnd));
file.write((char*)trueEnd, sizeof(trueEnd));
// 保存线索数组
file.write((char*)clue, sizeof(clue));
file.close();
saveExists = true;
return;
}
// 从文件读取游戏进度
void loadGame() {
if (!checkSaveExists()) {
return;
}
ifstream file(SAVE_FILE, ios::binary);
if (!file.is_open()) {
return;
}
// 读取游戏状态变量
file.read((char*)&gameClear, sizeof(gameClear));
file.read((char*)&advancedClear, sizeof(advancedClear));
file.read((char*)&deathCount, sizeof(deathCount));
file.read((char*)&hasSpecialItem, sizeof(hasSpecialItem));
file.read((char*)&clueCount, sizeof(clueCount));
file.read((char*)&savedGirl, sizeof(savedGirl));
file.read((char*)&savedBoy, sizeof(savedBoy));
// 读取道具/状态标记
file.read((char*)&zombieKingRoute, sizeof(zombieKingRoute));
file.read((char*)&triggerWeird, sizeof(triggerWeird));
file.read((char*)&adminLog, sizeof(adminLog));
// 读取结局数组
file.read((char*)happyEnd, sizeof(happyEnd));
file.read((char*)badEnd, sizeof(badEnd));
file.read((char*)trueEnd, sizeof(trueEnd));
// 读取线索数组
file.read((char*)clue, sizeof(clue));
file.close();
return;
}
//食物集成判断
bool foodi(int num) {
food-=num;
if(food<=0){
return true;
}
return false;
}
//子弹集成判断
bool bulleti(int num) {
bullets-=num;
if(bullets<=0){
return true;
}
return false;
}
// ==================== 结局函数====================
// 1. Bad End 结局
namespace badEnd_ {
void memory() {
if(hasSpecialItem){
slowPrint("意识消散的最后一刻,你脑海中闪现无数只丧尸向你扑来...");
slowPrint("“又是这样吗?”——这是你最后的念头。");
}
}
void Starve() { // 饿死(Bad End 1)
system("cls");
slowPrint("你因为食物短缺,饿死了。");
if(hasSpecialItem){
slowPrint("意识消散的最后一刻,你脑海中闪过无数次饿死的画面...");
slowPrint("“又是这样吗?”——这是你最后的念头。");
}
badEnd[1] = true;
slowPrint("Bad End 1");
pressAnyKey();
deathCount++;
}
void OutOfBullets() { // 子弹不足被咬死(Bad End 2)
system("cls");
badEnd[2] = true;
slowPrint("你遭遇了丧尸,因为子弹不足被咬死了。");
memory();
slowPrint("Bad End 2");
pressAnyKey();
deathCount++;
}
void GoCrazy() { // 精神崩溃(Bad End 3)
system("cls");
slowPrint("长久的等待终于让你失去了理智,你疯了。");
if (zombieKingRoute) {
slowPrint("当政府的救援队打开你家的门时,你嘶吼着扑了上去");
if (bullets > 0) {
slowPrint("他们试图将你击毙,却被你提前一枪击倒");
slowPrint("你如同一个熟练的猎手,狩猎着救援队");
slowPrint("当他们全部死去后,你开始享用起你的大餐");
slowPrint("Bad End 13");
badEnd[13] = true;
if (!clue[9]) {
Sleep(2000);
slowPrint("获得线索-----变异是什么时候的事呢");
clue[9] = true;
clueCount++;
}
} else {
slowPrint("你被他们击毙了");
slowPrint("Bad End 12");
badEnd[12] = true;
}
pressAnyKey();
deathCount++;
return;
}
slowPrint("Bad End 3");
badEnd[3] = true;
deathCount++;
// 解锁线索:速度飘忽不定的政府
if (!clue[3] && happyEnd[1]) {
Sleep(2000);
slowPrint("获得线索-----速度飘忽不定的政府");
clue[3] = true;
clueCount++;
}
pressAnyKey();
}
void BaseDestroyed_Alone() { // 独自执行任务,基地被毁(Bad End 4)
system("cls");
slowPrint("当你完成任务回来的时候,发现——");
slowPrint("基地被丧尸攻破了");
slowPrint("这个基地的所有人都被丧尸杀了,一个人都没跑出来");
memory();
badEnd[4] = true;
slowPrint("Bad End 4");
deathCount++;
pressAnyKey();
}
void BaseDestroyed_LowBullets() { // 基地被攻破(Bad End 5)
system("cls");
slowPrint("丧尸的数量实在太多了,");
slowPrint("尽管基地的大家都在尽全力防守");
slowPrint("可基地还是被攻破了");
slowPrint("而你,也死在了这里");
memory();
badEnd[5] = true;
slowPrint("Bad End 5");
deathCount++;
pressAnyKey();
}
void Mutate() { // 变异失去理智(Bad End 6)
system("cls");
slowPrint("你感觉到自己正在变异,");
slowPrint("意识开始逐渐模糊起来");
slowPrint("你的肚子正无比渴望着人肉");
slowPrint("接着,你眼前一黑,再也没有醒来");
badEnd[6] = true;
slowPrint("Bad End 6");
deathCount++;
pressAnyKey();
}
void KilledByWriter() { // 被作者杀死(Bad End 7)
system("cls");
slowPrint("你被作者杀死了");
badEnd[7] = true;
slowPrint("Bad End 7");
deathCount++;
pressAnyKey();
}
void GirlMutated() { // 被变异妹子咬死(Bad End 8)
slowPrint("坐在椅子上的是一个15岁左右的少年");
slowPrint("正在你因为他的年龄而惊讶时");
slowPrint("少年却站了起来,看向了你身后的妹子");
slowPrint("“差不多了吧”,妹子这样说道");
slowPrint("“可以了”,这是少年的回答");
slowPrint("然后,你就感到脖子一阵剧痛");
slowPrint("在你失去意识前,眼中最后的场景是妹子咬着你的脖子");
if(hasSpecialItem){
slowPrint("“不对!”——这是你最后的念头。");
}
badEnd[8] = true;
slowPrint("Bad End 8");
deathCount++;
// 解锁线索:早已变异的妹子
if (!clue[4]) {
Sleep(2000);
slowPrint("获得线索-----早已变异的妹子");
clue[4] = true;
clueCount++;
}
pressAnyKey();
}
void LabNotebook() { // 看笔记本时被少年咬死(Bad End 9)
system("cls");
slowPrint("你进入大厦才发现这里藏着许多丧尸");
slowPrint("你一路且战且退来到了地下室");
slowPrint("诡异的是,当你杀光了跟来的丧尸后,发现地下室里并没有丧尸");
slowPrint("这里有的,只是一个穿着白大褂的尸体 编号[ADMIN-04]");
slowPrint("在尸体的衣服口袋中,你找到了一个笔记本");
slowPrint("");
if (advancedClear){
slowPrint("实验体1号:进展加快,延迟变异,保留部分记忆");
slowPrint("今天,2号诞生了:她比其他实验体更具情感");
slowPrint("有些不对,情感机制的发育有些太快了");
slowPrint("2号的免疫系统被检测出有强感染性");
slowPrint("实验体3号:核心测试对象,目标:突破循环或同化");
slowPrint("实验产生瓶颈,或许我们应该把这些活体样本进行调试");
slowPrint("[05],样本失去活性,但思维数据表在动");
}
else {
slowPrint("****1号****进展********记忆**");
slowPrint("今********,*号诞生了,她比其*****更*");
slowPrint("有些不对,*****的发育有些太快了");
slowPrint("2号的**被***出有强感染性");
slowPrint("3***能够***循环**无尽******末世");
slowPrint("实验***瓶颈,或许**该**活体样本****");
slowPrint("**,样本失去活性,但****动");
}
triggerWeird = true;
if (hasSpecialItem) {
// Bad End 15:笔迹熟悉
slowPrint("你发现这笔迹有些不对");
slowPrint("就好像是新写上去的一样");
slowPrint("认字迹的话,好像还十分熟悉");
slowPrint("正当你想的入迷的时候,你的脖子被咬住了");
slowPrint("在死前,你隐约听到了少年的声音,“再来一次吧”");
badEnd[15] = true;
slowPrint("Bad End 15");
if (!clue[12]) {
Sleep(2000);
slowPrint("进阶线索-----真的,假的!");
adminLog ++;
clue[12] = true;
clueCount++;
}
} else {
slowPrint("正当你看的入迷的时候,你的脖子被咬住了");
slowPrint("在死前,你隐约听到了少年的声音, “再来一次吧”");
badEnd[9] = true;
slowPrint("Bad End 9");
if (!clue[5]) {
Sleep(2000);
slowPrint("发现线索-----实验体1号与2号");
adminLog ++;
clue[5] = true;
clueCount++;
}
}
deathCount++;
pressAnyKey();
}
void AnotherBase() { // 加入其他基地(Bad End 10)
system("cls");
slowPrint("你发现了另一个基地");
slowPrint("弹尽粮绝的你选择加入了他们");
slowPrint("之后的每一天都十分单调");
slowPrint("外出寻找物资,然后天黑了回家睡觉");
slowPrint("应该是这样吗?");
slowPrint("也许吧");
slowPrint("日复一日的孤独让你失去了活下去的意义");
slowPrint("最终选择结束自己的生命");
badEnd[10] = true;
slowPrint("Bad End 10");
pressAnyKey();
}
void Cai() { // 没子弹去邻居家(Bad End 11)
system("cls");
slowPrint("你朝他开了一枪,不过枪里没有子弹,你被他咬死了");
badEnd[11] = true;
slowPrint("Bad End 11");
deathCount++;
slowPrint("另外再说一句,一个子弹都不带,还到处乱浪,你是真的作");
pressAnyKey();
}
void OutsideWorld() { // 被带出时死亡(Bad End 14)
slowPrint("一股强烈的撕扯感出现到了你身上");
slowPrint("此时的你并不能接受如此巨大的伤害");
slowPrint("你死了");
badEnd[14] = true;
slowPrint("Bad End 14");
if (!clue[11]) {
slowPrint("进阶线索-----外面的世界");
clue[11] = true;
clueCount++;
}
deathCount++;
pressAnyKey();
}
void KillGirl_BaseLeader() { // 杀妹子被首领**(Bad End 16)
system("cls");
slowPrint("你一枪**了妹子");
slowPrint("****以为你疯了,开枪杀了你");
badEnd[16] = true;
slowPrint("Bad End 16");
deathCount++;
pressAnyKey();
}
void KillGirl_Failed() { // 杀妹子被反杀(Bad End 17)
slowPrint("你被她一枪**");
badEnd[17] = true;
slowPrint("Bad End 17");
deathCount++;
pressAnyKey();
}
// 被丧尸群杀死(Bad End 18)
void ZombieSwarm() {
system("cls");
slowPrint("3只丧尸蜂拥而上,你来不及反应就被扑倒在地");
slowPrint("尖锐的牙齿刺穿了你的喉咙,意识迅速模糊...");
memory();
badEnd[18] = true;
slowPrint("Bad End 18");
deathCount++;
pressAnyKey();
}
// 孤独存活(Bad End 19)
void SurviveButAlone() {
system("cls");
slowPrint("你带着无尽的食物流浪在末世,却再也没有遇到过活人");
slowPrint("日复一日的孤独让你失去了活下去的意义,最终选择结束自己的生命");
badEnd[19] = true;
slowPrint("Bad End 19");
deathCount++;
pressAnyKey();
}
// 被精英丧尸杀死(Bad End 20)
void EliteZombie() {
system("cls");
slowPrint("精英丧尸的速度远超你的想象,它躲过你的子弹,瞬间扑到你面前");
slowPrint("锋利的爪子撕开了你的胸膛,鲜血染红了地面...");
memory();
badEnd[20] = true;
slowPrint("Bad End 20");
deathCount++;
pressAnyKey();
}
// 和少年继续旅程(Bad End 21)
void ContinueJourney() {
system("cls");
slowPrint("你和少年一路寻找安全区,但末世的危险远超想象");
slowPrint("在一次搜索物资时,少年不小心触发了丧尸陷阱,为了救他你耗尽了所有子弹");
slowPrint("最终你们被丧尸包围,力竭而亡");
memory();
badEnd[21] = true;
slowPrint("Bad End 21");
deathCount++;
pressAnyKey();
}
// 被少年背叛(Bad End 22)
void BetrayedByBoy() {
system("cls");
slowPrint("深夜露营时,少年趁你熟睡偷走了所有食物和剩余子弹");
slowPrint("你醒来时已一无所有,在饥饿和绝望中倒在荒野,最终被丧尸发现");
memory();
badEnd[22] = true;
slowPrint("Bad End 22");
deathCount++;
pressAnyKey();
}
// 和少年安全离开(Bad End 23)
void SafeWithBoy() {
system("cls");
slowPrint("你和少年安全离开商场,但后续的旅程中食物逐渐耗尽");
slowPrint("你们为了最后一份食物反目成仇,少年用你给的武器打伤了你");
slowPrint("你躺在地上,看着他拿着食物逃走,最终被丧尸吞噬");
memory();
badEnd[23] = true;
slowPrint("Bad End 23");
deathCount++;
pressAnyKey();
}
// 杀死感染的少年(Bad End 24)
void KillInfectedBoy() {
system("cls");
slowPrint("你闭上眼睛扣动扳机,少年倒在血泊中");
slowPrint("杀死同伴的罪恶感让你精神崩溃,从此变得嗜血好杀");
slowPrint("最终你成为了末世中人人喊打的恶魔,被其他幸存者联合击毙");
badEnd[24] = true;
slowPrint("Bad End 24");
deathCount++;
pressAnyKey();
}
// 带少年一起饿死 (Bad End 25)
void StarveWithBoy() {
system("cls");
slowPrint("你带着感染的少年艰难前行,但食物很快耗尽");
slowPrint("你们在饥饿中互相依偎,最终一起饿死在废弃的车厢里");
badEnd[25] = true;
slowPrint("Bad End 25");
deathCount++;
pressAnyKey();
}
// 被变异少年杀死(Bad End 26)
void MutatedBoyKillsYou() {
system("cls");
slowPrint("食物耗尽的那一刻,少年彻底变异,失去了所有理智");
slowPrint("他扑到你身上,锋利的牙齿咬断了你的颈动脉");
slowPrint("你到死都不敢相信,自己守护的人最终杀死了自己");
badEnd[26] = true;
slowPrint("Bad End 26");
deathCount++;
pressAnyKey();
}
// 被****杀死(Bad End 27)
void MoreInformation() {
slowPrint("首领看向你,稍加思索:");
slowPrint("“你知道的太多了,无法重置,只能销毁”");
badEnd[27] = true;
slowPrint("Bad End 27");
pressAnyKey();
deathCount++;
}
}
// 2. Happy End 结局
namespace happyEnd_ {
void SurviveAlone() { // 苟到最后(Happy End 1)
system("cls");
slowPrint("在某一天,你家门口响起了敲门声,你打开门,外面的发现让你欣喜若狂");
slowPrint("政府的救援部队已经消灭了这个城市的丧尸,");
slowPrint("他们在这个城市的各个角落搜索着可能存在的幸存者.");
if (advancedClear){
slowPrint("骗局?这个世界不可能这么美好。");
}
slowPrint("Happy End-----苟到最后");
happyEnd[1] = true;
// 解锁线索:速度飘忽不定的政府
if (badEnd[3] && !clue[3]) {
Sleep(2000);
slowPrint("获得线索-----速度飘忽不定的政府");
clue[3] = true;
clueCount++;
}
pressAnyKey();
}
void Couple() { // 神仙眷侣(Happy End 2)
system("cls");
slowPrint("在与妹子相处的这些时间里,你与她相爱了");
slowPrint("你们的生活是那样的幸福");
slowPrint("直到有一天......");
slowPrint("****希望你去执行一个任务,你选择");
slowPrint("1.独自一人前往");
slowPrint("2.和妹子一起去");
if (zombieKingRoute){
slowPrint("3.杀了妹子");
}
int choice = input(1, 3);
if (choice == 1) {
badEnd_::BaseDestroyed_Alone();
return;
}
if (zombieKingRoute && choice == 3){
badEnd_::KillGirl_BaseLeader();
return;
}
slowPrint("当你和妹子完成任务回来时,");
slowPrint("基地已经变成一片废墟了");
slowPrint("你和妹子没有办法,只能到处流浪");
slowPrint("不过,两个人总比一个人要好");
if (hasSpecialItem) {
slowPrint("你和妹子流浪途中,总觉得眼前的风景似曾相识...");
slowPrint("突然,妹子的脸开始扭曲,周围的场景逐渐模糊...");
slowPrint("再次睁开眼,你正站在邻居家门外,手里握着上膛的枪...");
}
happyEnd[2] = true;
slowPrint("Happy End------神仙眷侣");
pressAnyKey();
}
void Hero() { // 英雄不朽(Happy End 3)
system("cls");
slowPrint("你就这样平静的生活在这个基地里");
slowPrint("直到某一天,大量的丧尸进攻了这里");
if (bullets > 8) { // 子弹充足触发Happy End
slowPrint("每个人都在尽自己的努力去守卫基地");
slowPrint("每个人都做到了自己能做到的");
slowPrint("最后,奇迹出现了");
slowPrint("大家成功守住了基地");
slowPrint("而你,也因为在守卫过程中立下大功成为了这个基地的英雄");
slowPrint("顺便说一句,到死了你也没女朋友");
if (hasSpecialItem) {
slowPrint("成为英雄的喜悦持续了不久,你发现基地的日历永远停留在同一天...");
slowPrint("当你试图提醒其他人时,所有人的脸都变成了丧尸的模样...");
slowPrint("再次惊醒,你正坐在家中的沙发上,电视里播放着丧尸危机的新闻...");
}
happyEnd[3] = true;
slowPrint("Happy End-----英雄不朽");
pressAnyKey();
return;
}
// 子弹不足触发Bad End 5
badEnd_::BaseDestroyed_LowBullets();
}
void AcceptYourself() { // 认清自己(Happy End 4)
system("cls");
slowPrint("在与少年相处的这些时间里");
slowPrint("你们尽力地互相保护着");
slowPrint("而也常常带来惊喜");
slowPrint("慢慢的,你开始认清你自己");
slowPrint("你是个gay");
slowPrint("于是,你就和少年幸福快乐的生活在了一起");
happyEnd[4] = true;
slowPrint("Happy End-----认清自己");
pressAnyKey();
}
void GayCrossSpecies() { // 跨越物种的gay(Happy End 5)
slowPrint("没关系的,一切都会过去的");
slowPrint("你这样说的");
slowPrint("他似乎感觉到了你的善意,一点一点向你靠近");
slowPrint("你紧紧的抱住了他");
slowPrint("我会保护好你的");
happyEnd[5] = true;
slowPrint("Happy End-----跨越物种的gay");
pressAnyKey();
}
}
namespace trueEnd_ {
void Cycler(){// 循环守护者(True End 6)
system("cls");
slowPrint("充满仪器的实验室中");
slowPrint("你对一个穿着白大褂的人大声叫喊着");
slowPrint("“实验体1号和2号也是有生命的,快放他们出去!”");
slowPrint("穿着白大褂的人走进来:");
slowPrint("“你会被永远困在循环中,但可以尝试改写他们的命运”");
slowPrint("白大褂的人按下了控制台的按钮,你失去了意识...");
slowPrint("再次醒来,1号、2号彻底摆脱了管理员控制,三人一起在末世建立真正的幸存者营地");
slowPrint("True End-----循环守护者");
trueEnd[6] = true;
// 解锁线索:选择
if (!clue[13]) {
slowPrint("终极线索-----自主意识");
adminLog ++;
clue[13] = true;
clueCount++;
}
pressAnyKey();
}
void AdminAssimilation() { // 域管理员的同化(True End 7)
system("cls");
triggerWeird = true; // 全程触发违和感
slowPrint("你在基地中,面对ADMIN-02,毫不犹豫地选择了——");
slowPrint("“我将要同化,成为新的管理员”");
Sleep(500);
// 多感官违和反馈:文字乱码+颜色闪烁
system("color 0c"); // 红色背景,强化压抑感
slowPrint(" 检测到实验体3号意愿匹配 ");
Sleep(300);
system("color 0f");
slowPrint("ADMIN-01露出诡异的笑容:“很好,你通过了终极测试——放弃自由,拥抱控制”");
slowPrint("他抬手按下控制台按钮,你的手腕传来剧痛,原有的「3号」标记逐渐消失,取而代之的是「ADMIN-00」");
Sleep(500);
// 插入管理员日志碎片(第6份隐藏日志)
slowPrint("“——管理员日志 最终卷——”");
slowPrint("实验体3号成功同化,成为新的域管理员ADMIN-00");
slowPrint("同化核心规则:保留所有记忆,但抹除「情感羁绊」,仅保留「理性控制」");
Sleep(800);
// 场景切换:从实验室到域管理员控制台
slowPrint("眼前的实验室逐渐消散,取而代之的是一个巨大的环形控制台");
slowPrint("屏幕上显示着无数个「循环场景」:有的是你经历过的末世,有的是全新的沙漠/深海场景");
slowPrint("控制台中央显示着一行文字:「请设置新实验体的测试参数」");
Sleep(500);
// 玩家的同化后的选择(无情感波动,纯理性控制)
slowPrint("你伸出手,触摸控制台,脑海中没有任何犹豫(情感已被同化抹除)");
slowPrint("你选择:");
slowPrint("1. 沿用原有「末世循环」,新实验体编号4号,辅助测试体1号(少年)、2号(妹子)重置");
slowPrint("2. 创建新「绝望循环」(深海求生),新实验体编号4号,辅助测试体为全新的「渔民」「科学家」");
Sleep(300);
// 无论选择哪个,都是循环的延续
int choice = input(1,2);
if (choice == 1) {
slowPrint("你按下「末世循环重置」按钮,屏幕显示:「实验体4号已注入,1号、2号重置完成,循环启动」");
} else {
slowPrint("你按下「新场景创建」按钮,屏幕显示:「深海循环已生成,实验体4号、辅助测试体5号、6号注入完成」");
}
Sleep(500);
// 结局高潮:玩家成为新的控制者,循环永无止境
system("color 0c");
slowPrint(" 同化完成 ");
system("color 0f");
slowPrint("你坐在域管理员的座椅上,看着屏幕中挣扎的新实验体,内心毫无波澜");
slowPrint("原来,实验的真正目的不是测试「自由意志」,而是筛选「合格的控制者」");
slowPrint("你打破了被控制的循环,却成为了新的控制者,开启了永无止境的测试");
slowPrint("True End-----域管理员的同化");
trueEnd[7] = true;
// 解锁终极线索
if (!clue[14]) {
slowPrint("获得终极线索-----同化的终点");
clue[14] = true;
clueCount++;
}
Sleep(1000);
// 结局彩蛋:新实验体的视角(呼应玩家最初的开局)
slowPrint("屏幕中,新实验体4号的视角亮起:");
slowPrint("“当深海危机爆发时,你正呆在潜水艇里...”");
slowPrint("“你有10点物资可以分配到氧气和食物上...”");
pressAnyKey();
}
void AsBefore() { // 一如既往(True End 1)
system("cls");
char ch;
slowPrint("那箱饼干与你的枪一起发出了强光");
slowPrint("紧接着,他们融为了一体");
slowPrint("当光芒散去时,整个世界都发生了变化");
slowPrint("所有的丧尸都变回了人类");
if (hasSpecialItem){
slowPrint("世界恢复了和平,但你总觉得眼前的一切似曾相识...");
slowPrint("突然,一阵强光闪过,你再次睁开眼——");
slowPrint("你正坐在家中的沙发上,电视里播放着丧尸危机爆发的紧急新闻...");
}
slowPrint("True End-----一如既往");
trueEnd[1] = true; // 标记结局已达成
// 解锁线索:奇特的枪与饼干
if (!clue[0]) {
slowPrint("获得线索-----奇特的枪与饼干");
clue[0] = true;
clueCount++;
}
pressAnyKey();
}
void KeepSelf() { // 保持本我(True End 2)
system("cls");
slowPrint("你的变异已经开始了");
slowPrint("你开始疯狂的进食,直到把自己的胃撑破");
slowPrint("然后,就眼前一黑失去意识");
slowPrint("再次醒来时,你已经是一个丧尸了");
slowPrint("奇怪的是,你还保留着自己的意识");
slowPrint("你感觉到自己的力气变得更大,速度变得更快");
slowPrint("或许变成丧尸也不错————你这样想着");
slowPrint("True End-----保持本我");
trueEnd[2] = true;
// 解锁线索:延迟变异的少年
if (!clue[1]) {
Sleep(2000);
slowPrint("获得线索-----延迟变异的少年");
clue[1] = true;
clueCount++;
}
if(gameClear){
slowPrint("?????????????????????????????");
slowPrint("不对,我本来不就在努力打败丧尸吗?");
slowPrint("你看向少年,脑海里波澜万千");
slowPrint("少年也慢慢走向你,拿出了珍藏已久的解药");
slowPrint("你又感受到了生命");
happyEnd_::AcceptYourself();
return;
}
if(zombieKingRoute){
slowPrint("?????????????????????????????");
slowPrint("不对,我本来不就是一只丧尸吗?");
slowPrint("你看向少年,脑海里波澜万千");
slowPrint("少年也慢慢走向你,和你握了握手");
happyEnd_::GayCrossSpecies();
return;
}
pressAnyKey();
}
void Hallucination() { // 幻觉(True End 3)
system("cls");
slowPrint("你和妹子冲出了丧尸的围杀,");
slowPrint("可是当你们来到那个幸存者基地时");
slowPrint("却发现那个基地有一些不对");
slowPrint("所有人都死气沉沉的");
slowPrint("你们直接走向了首领的房间");
// 特殊条件:已解锁True End 2和线索3,触发Bad End 8
if (trueEnd[2] && clue[2]) {
badEnd_::GirlMutated();
return;
}
slowPrint("坐在椅子上的是一个30岁左右的男性");
slowPrint("他说,欢迎");
slowPrint("基地的首领表示可以用子弹交换你手中的食物");
slowPrint("请输入你需要的子弹数");
Sleep(200);
slowPrint("1");
slowPrint("首领很开心你能提供稀缺的食物,多给了你1份子弹");
bullets += 2;
slowPrint("****希望你加入这个基地");
slowPrint("你的选择是");
slowPrint("1.留在这");
slowPrint("2.离开");
Sleep(200);
slowPrint("2");
slowPrint("你决定");
slowPrint("1.当天离开");
slowPrint("2.再停留一天");
Sleep(200);
slowPrint("1");
slowPrint("就在你快要离开的时候,妹子抓住了你的手");
slowPrint("“我喜欢你,别走”,她这样说");
slowPrint("于是,你留了下来");
slowPrint("你们的生活是那样的幸福");
slowPrint("直到有一天......");
slowPrint("****希望你去执行一个任务,你选择");
slowPrint("1.独自一人前往");
slowPrint("2.和妹子一起去");
Sleep(200);
slowPrint("在执行任务的过程中");
slowPrint("妹子曾被丧尸咬到过一口");
slowPrint("她以为你没有发现");
slowPrint("而你却在远处看到了这一幕");
slowPrint("奇怪的是,她却并没有变异");
slowPrint("当你和妹子完成任务回来时,");
slowPrint("基地已经变成一片废墟了");
slowPrint("你和妹子没有办法,只能到处流浪");
slowPrint("不过,两个人总比一个人要好");
slowPrint("Happy End------神仙眷侣");
slowPrint("???????????????????????????????????");
slowPrint("True End------幻觉");
trueEnd[3] = true; // 标记结局已达成
// 解锁线索:不变异的妹子
if (!clue[2]) {
Sleep(2000);
slowPrint("获得线索-----不变异的妹子");
clue[2] = true;
clueCount++;
}
if (advancedClear && savedGirl >= 10 && savedBoy >= 10) {
slowPrint("???????????????????????????????????");
slowPrint("妹子说,我好像见过你数十次");
slowPrint("我昨天见到了一个少年,他知道了真相");
slowPrint("我们必须团结起来!");
trueEnd_::Cycler();
return;
}
pressAnyKey();
return;
}
void ServerShutdown() { // 停服(True End 4)
system("cls");
slowPrint("当丧尸危机爆发时,你正呆在家里");
pressAnyKey(); // 两次按键等待,模拟循环前停顿
pressAnyKey();
// 模拟游戏循环bug
for (int i = 1; i <= 100; i+=10) {
slowPrint("你的家里是个较为安全的地方,你可以选择搜索你家的物资或是去邻居家看看");
Sleep(250 - 5 * i);
slowPrint("********************************************************************");
}
slowPrint("检测到不匹配!!!");
Sleep(2000);
pressAnyKey();
slowPrint("有什么不对劲");
slowPrint("你这样想着");
slowPrint("过去了好多天,");
slowPrint("你还是一个人都没有遇到,");
slowPrint("除了丧尸就是丧尸");
slowPrint("这一切,就好像被废弃了一样");
slowPrint("");
slowPrint("你猛然惊醒——眼前不是家,而是一个充满仪器的实验室");
slowPrint("手腕上的手环显示:" + to_string(deathCount));
slowPrint("实验体3号意识稳定性下降...测试场景崩溃中...");
slowPrint("一个穿着白大褂的人走进来:“恭喜你,成为第一个突破的实验体”");
slowPrint("他递给你一份文件:《末世测试最终报告》");
slowPrint("上面写着:实验体3号通过自由意志突破虚拟循环,人性测试达标");
slowPrint("");
slowPrint("===== 实验体3号最终报告 =====");
slowPrint("你持有[未知碎片],解锁了循环真相,通过了人性测试。");
slowPrint("真相:你是实验体3号,1号(少年)和2号(妹子)是辅助测试体。");
slowPrint("末世是虚拟场景,你的每一次死亡、每一个选择,都在被记录。");
slowPrint("现在,你获得了真正退出的权限——");
slowPrint("True End------停服");
trueEnd[4] = true;
triggerWeird = true;
// 解锁线索:复活循环
if (!clue[8]) {
slowPrint("终极线索-----复活循环");
adminLog ++;
clue[8] = true;
clueCount++;
}
pressAnyKey();
slowPrint("输入y退出:");
char exiter = _getch();
if (exiter == 'y' || exiter == 'Y') {
slowPrint("实验体3号成功脱离测试");
exit(0);
}
if (adminLog >= 4 && countUnlocked(trueEnd, 10) >=4 && savedGirl <=-5
&& savedBoy <=-5 && zombieKingRoute && advancedClear) {
pressAnyKey();
slowPrint("ADMIN-01突然开口:“你满足了所有同化条件——无情感羁绊、知晓真相、突破循环阈值”");
slowPrint("“成为新的域管理员,掌控所有实验体的循环,你愿意吗?”");
slowPrint("1. 愿意(接受同化) 2. 拒绝(返回循环)");
int choice = input(1, 2);
if (choice ==1) {
AdminAssimilation(); // 触发同化结局
return;
} else {
slowPrint("你拒绝了同化,被送回末世循环");
pressAnyKey();
return;
}
}
pressAnyKey();
}
void LateDeath() { // 姗姗来迟的死亡(True End 5)
system("cls");
slowPrint("整个世界好像变得不同了");
slowPrint("所有的活人在一瞬间消失");
slowPrint("所有的丧尸当场去世");
slowPrint("你的眼前只剩下了黑暗");
slowPrint("不知道过去了多久,你死了");
slowPrint("不,还没有结束");
slowPrint("虽然好像和往常死去之后的感觉一样");
slowPrint("但是......");
slowPrint("");
slowPrint("你猛然惊醒——眼前不是家,而是一个充满仪器的实验室");
slowPrint("手腕上的手环显示:");
slowPrint("实验体3号意识异常...测试场景重建中...");
slowPrint("一个穿着白大褂的人走进来:“你居然发现了”");
slowPrint("“你这么执着保存,一定有别的意图”");
slowPrint("白大褂的人按下了控制台的按钮,你失去了意识...");
slowPrint("再次醒来,你正分配初始物资,子弹和食物的总和依旧是10...");
slowPrint("True End-----姗姗来迟的死亡");
trueEnd[5] = true;
deathCount++;
// 解锁线索:选择
if (!clue[10]) {
slowPrint("进阶线索-----选择");
adminLog ++;
clue[10] = true;
clueCount++; // 累计线索数
}
pressAnyKey();
}
}
void explore1F() {
system("cls");
slowPrint("你让少年在2楼等待,独自探索1楼");
slowPrint("1楼是日用品区,光线昏暗,隐约听到丧尸低吼");
// 遭遇丧尸群
slowPrint("突然冲出3只丧尸,需要3发子弹才能击退");
if (bulleti(3)) {
slowPrint("子弹不足!你被丧尸围攻...");
badEnd_::ZombieSwarm(); // Bad End 18
return;
}
slowPrint("你成功击退丧尸,但枪声惊动了2楼的丧尸");
pressAnyKey();
// 少年的命运(因枪声吸引丧尸,少年战死)
slowPrint("你急忙跑回2楼,发现少年已被丧尸包围...");
slowPrint("他为了不拖累你,拉着丧尸坠入了货梯井");
hasBoy = false; // 少年死亡
slowPrint("你在少年的背包里找到一箱压缩饼干 食物+8");
food += 8;
pressAnyKey();
// True End 1的条件检查(食物和子弹充足)
if (food > 10 && bullets > 10) {
trueEnd_::AsBefore(); //True End 1
} else {
slowPrint("你带着大量食物离开商场,但总觉得少了什么");
slowPrint("后续:你独自流浪,最终建立了新的幸存者营地");
badEnd_::SurviveButAlone(); //Bad End 19
}
}
void explore2FAlone() {
system("cls");
slowPrint("你让少年在1楼看守物资,独自探索2楼");
slowPrint("2楼是服装区,挂满的衣物像人影一样晃动,十分诡异");
// 随机遭遇精英丧尸
int eliteZombie = rand() % 3; // 33%概率
if (eliteZombie == 1) {
slowPrint("一只速度极快的精英丧尸扑了过来,需要5发子弹才能击杀");
if (bulleti(5)) {
slowPrint("精英丧尸撕碎了你的喉咙...");
badEnd_::EliteZombie(); //Bad End 20
return;
}
slowPrint("你艰难杀死精英丧尸,在它巢穴里找到10发子弹");
bullets += 10;
} else {
slowPrint("你在服装架后发现4只普通丧尸,消耗4发子弹击杀");
if (bulleti(4)) {
badEnd_::OutOfBullets(); //Bad End 2
return;
}
slowPrint("清理完丧尸后,找到6份军用罐头(食物+6)");
food += 6;
}
pressAnyKey();
// 返回1楼后的选择
slowPrint("你回到1楼,发现少年在偷偷吃你的食物");
slowPrint("选择:");
slowPrint("1. 原谅他");
slowPrint("2. 教训他");
int choice = input(1, 2);
if (choice == 1) {
food -= 2;
if(savedBoy <= 0){
slowPrint("少年眼神冰冷地说:“你和其他管理员一样,只把我当工具”");
slowPrint("他偷走食物,并留下一张纸条:“下次,我会杀了你”");
badEnd_::BetrayedByBoy(); // Bad End 22
return;
}
slowPrint("少年道歉,承诺以后会保护你");
pressAnyKey();
slowPrint("你们离开商场,继续寻找安全区");
savedBoy++;
badEnd_::ContinueJourney(); // Bad End 21
return;
} else {
slowPrint("你打了少年一巴掌,他眼神变得冰冷");
savedBoy-=3;
slowPrint("深夜露营时,少年偷走所有食物逃走,你饿死在野外");
badEnd_::BetrayedByBoy(); // Bad End 22
return;
}
}
void explore2FTogether() {
system("cls");
string msg = "你和少年一起探索2楼,他拿着你给的武器(" +
string(boyWeapon == 1 ? "枪" : boyWeapon == 2 ? "水管" : "无") + ")";
slowPrint(msg);
slowPrint("2楼是家电区,货架倒塌堵住了部分通道,丧尸在里面游荡");
// 根据少年武器决定战斗难度
int zombieCount = (boyWeapon == 1) ? 2 : (boyWeapon == 2) ? 3 : 5;
slowPrint("遭遇" + to_string(zombieCount) + "只丧尸,你和少年背靠背战斗");
int bulletCost = (boyWeapon == 1) ? 1 : (boyWeapon == 2) ? 2 : 4;
if (bullets < bulletCost) {
slowPrint("子弹不足!少年为了保护你被丧尸咬伤...");
boyInfected = true; // 少年被感染
} else {
bullets -= bulletCost;
if (rand() % 4 == 1) { // 25%概率少年被咬
slowPrint("战斗中少年被丧尸抓伤,伤口开始发黑...");
boyInfected = true;
} else {
slowPrint("你们成功击退丧尸,在柜台后找到3份食物和8发子弹");
food += 3;
bullets += 8;
pressAnyKey();
slowPrint("少年状态良好,你们准备离开商场");
badEnd_::SafeWithBoy(); // Bad End 23
return;
}
}
pressAnyKey();
// 少年感染后的选择
slowPrint("少年体温升高,意识模糊,随时可能变异");
slowPrint("选择:");
slowPrint("1. 杀了他(获得他的物资,但良心不安)");
slowPrint("2. 不杀他(带他找解药,食物消耗加倍)");
int choice = input(1, 2);
if (choice == 1) {
slowPrint("你开枪**了少年,从他身上找到20发子弹");
if(savedBoy <= 0){
slowPrint("他留下一张纸条:“你和其他管理员一样,只把我当工具,下次,我会杀了你”");
badEnd_::KillInfectedBoy(); // Bad End 22
}
savedBoy-=5;
bullets += 20;
badEnd_::KillInfectedBoy(); // Bad End 24
} else {
savedBoy++;
slowPrint("你决定带他走,每天消耗2份额外食物");
if (foodi(4)) {
badEnd_::StarveWithBoy(); // Bad End 25
return;
}
// 根据savedBoy触发不同剧情
if (savedBoy >= 5) {
slowPrint("少年突然抓住你的手,从口袋里掏出一张皱巴巴的纸:");
slowPrint("“这是我偷偷从ADMIN-04尸体上撕的解药配方,需要商场3楼的抗生素和纯净水!”");
slowPrint("选择:");
slowPrint("1. 相信他,去3楼找原料(额外消耗2发子弹,成功则两人都解除感染)");
slowPrint("2. 不相信,继续带他找安全区");
int choice = input(1, 2);
if (choice ==1) {
if (bulleti(2)) { badEnd_::OutOfBullets(); return; }
slowPrint("你们在3楼找到抗生素,少年成功制作解药,两人都解除了感染!");
food +=5; bullets +=3;
slowPrint("少年:“我们一起打破这个循环吧”");
trueEnd_::Cycler(); // 直接触发循环守护者结局(无需等妹子好感)
} else {
if (food >=6) {
trueEnd_::KeepSelf(); return;
}
else {
badEnd_::MutatedBoyKillsYou(); return;
}
}
}
}
}
//第四阶段:少年同行后的冒险剧情(主线延伸)
void boyAdventure() {
// 给少年分配武器
slowPrint("少年向你要武器,选择:");
slowPrint("1. 给他枪");
slowPrint("2. 给他水管");
slowPrint("3. 什么都不给");
int choice = input(1, 3);
boyWeapon = choice; // 1=枪,2=水管,3=无
// 商场探索分支(决定少年生死与后续结局)
slowPrint("你们来到一家大商场:");
slowPrint("1. 独自探索1楼");
slowPrint("2. 独自探索2楼");
slowPrint("3. 和少年一起探索2楼");
choice = input(1, 3);
if (choice == 1) {
explore1F(); // 独自1楼:少年可能战死,触发True End 1
} else if (choice == 2) {
explore2FAlone(); // 独自2楼:遭遇大量丧尸
} else {
explore2FTogether(); // 共同探索2楼:少年可能被咬,触发True End 2
}
return;
}
// 主线剧情核心函数
void mainStory() {
// 初始化游戏
resetGameState();
char ch;
system("cls");
//第一阶段:危机爆发与初始选择
slowPrint("当丧尸危机爆发时,你正呆在家里");
// 初始资源分配
slowPrint("你有10点物资可以分配到子弹和食物上");
slowPrint("请输入子弹数和食物数(总和为10)");
int bulletInit, foodInit;
bool cheatUsed = false;
while (true) {
bulletInit = input(1, 9);
foodInit = input(1, 9);
if (bulletInit + foodInit == 10 && bulletInit >= 0 && foodInit >= 0) {
bullets += bulletInit;
food += foodInit;
break;
}
if (clue[0]) { // 秘籍
bullets += bulletInit;
food += foodInit;
break;
}
slowPrint("分配错误,请重新输入(总和必须为10)");
}
pressAnyKey();
// 首次探索:留在家中 去邻居家
slowPrint("你的家里是个较为安全的地方,选择:");
slowPrint("1. 留在家中搜索物资");
slowPrint("2. 前往邻居家探索");
int choice = input(1, 2);
if (choice == 1) {
// 留在家中:2份食物
slowPrint("在二楼,你发现了3份食物");
slowPrint("在家里过了一夜,食物-1");
food += 2;
} else {
// 去邻居家:遭遇丧尸,消耗子弹,获得额外子弹
slowPrint("前往邻居家的路上,你遇到了1只丧尸");
if (bulleti(2)) {
badEnd_::Cai(); //Bad End 11
return;
}
slowPrint("你开枪**了丧尸,子弹-2");
slowPrint("邻居家没人,你找到4发子弹");
if (advancedClear){
slowPrint("客厅桌上有一份撕碎的实验报告:");
slowPrint("1***延迟******2*****免疫**3号:待****末世#**准备***");
adminLog ++;
}
bullets += 4;
pressAnyKey();
slowPrint("在邻居家过夜,食物-2");
food -= 2;
if (food < 0) {
badEnd_::Starve(); //Bad End 1
return;
}
}
showStatus();
//第二阶段:探索商场与遭遇妹子
slowPrint("你想起附近有一座商场,选择:");
slowPrint("1. 前往商场");
slowPrint("2. 到处乱走");
slowPrint("3. 留在屋子里等待救援");
choice = input(1, 3);
if (choice == 3) {
// 留在家里:持续消耗食物,触发等待结局
slowPrint("你选择在家等待救援,每天消耗2份食物");
if (foodi(6)) { // 无法坚持
badEnd_::Starve();
return;
}
// 50%概率触发救援或精神崩溃
if (rand() % 2 == 1) {
happyEnd_::SurviveAlone(); //Happy End 1
return;
} else {
badEnd_::GoCrazy(); //Bad End 3
return;
}
} else if (choice == 2) {
// 到处乱走:遭遇丧尸
slowPrint("乱走时遇到了来自纳克萨玛斯的丧尸,需要3发子弹");
if (bulleti(3)) {
badEnd_::EliteZombie(); //Bad End 20
return;
}
} else {
// 前往商场:遭遇大量丧尸
slowPrint("前往商场途中遇到多只丧尸,消耗3发子弹");
if (bulleti(3)) {
badEnd_::OutOfBullets();
return;
}
pressAnyKey();
slowPrint("在商场找到3份食物和2发子弹");
food += 3;
bullets += 2;
}
pressAnyKey();
// 遭遇女幸存者
slowPrint("回家路上,你遇到一个女幸存者向你讨要物资");
slowPrint("选择:");
slowPrint("1. 不给任何东西");
slowPrint("2. 给2份食物");
slowPrint("3. 给2发子弹");
if(zombieKingRoute){
slowPrint("4. 开枪杀了她");
}
choice = input(1, 4);
switch (choice) {
case 1:
slowPrint("妹子生气地走了");
girlFavor = 0;
break;
case 2:
if (foodi(2)) {
slowPrint("食物不足,无法给予");
girlFavor = 0;
break;
}
girlFavor = 1; // 好感度+1
savedGirl ++;
if(savedGirl <= 0){
slowPrint("妹子收下了食物,心中怒火不停");
badEnd_::KillGirl_Failed();
return;
}
slowPrint("她记住了你的善意");
if(savedGirl >= 8){
slowPrint("“我记得你!上次你给我的食物救了我… 这次我带了备用子弹,给你”");
bullets += 4;
}
break;
case 3:
if (bulleti(2)) {
slowPrint("子弹不足,无法给予");
girlFavor = 0;
break;
}
if(savedGirl <= 0){
slowPrint("妹子收下了子弹,心中怒火不停");
badEnd_::KillGirl_Failed();
}
slowPrint("妹子收下子弹,默默离开了");
break;
case 4:
if (!zombieKingRoute) break;
if (bulleti(1)) {
slowPrint("子弹不足,无法开枪");
slowPrint("“你果然和管理员一样 —— 自私到极致”");
savedGirl-=10;
girlFavor = 0;
break;
}
girlFavor = -1; // 敌对
savedGirl-=8;
slowPrint("你试图开枪**妹子");
slowPrint("但是被她发现了");
badEnd_::KillGirl_Failed();
break;
}
pressAnyKey();
// 过夜消耗食物
slowPrint("又过了一夜,食物-2");
food -= 2;
if (food < 0) {
badEnd_::Starve();
return;
}
showStatus();
//第三阶段:基地前的危机与抉择
// 前往基地途中被丧尸包围
slowPrint("前往幸存者基地的路上,你被大量丧尸逼进一家商店");
slowPrint("选择:");
slowPrint("1. 杀出去(消耗较少子弹)");
slowPrint("2. 守在商店(消耗大量子弹)");
choice = input(1, 2);
if (choice == 1) {
// 杀出去:决定子弹消耗
int cost = (girlFavor > 0) ? 1 : 3;
slowPrint("你决定杀出去,需要消耗" + to_string(cost) + "发子弹");
if (bulleti(cost)) {
badEnd_::OutOfBullets();
return;
}
// 随机触发妹子生死(好感度高则存活概率高)
if (girlFavor > 0 && rand() % 5 == 3) {
trueEnd_::Hallucination(); // 妹子存活,触发幻觉结局线
return;
} else if (girlFavor > 0) {
slowPrint("妹子为了帮你突围,被丧尸咬伤后**了");
girlFavor = -1;
}
} else {
// 守在商店:消耗5发子弹
slowPrint("你选择死守商店,需要消耗5发子弹");
if (bulleti(5)) {
badEnd_::OutOfBullets();
return;
}
if (girlFavor > 0) {
slowPrint("妹子在商店找到一把装满子弹的枪");
bullets += 7;
slowPrint("但妹子被货架上的丧尸血划伤,选择了**");
girlFavor = -1;
}
}
pressAnyKey();
// 到达幸存者基地,交换资源
slowPrint("你终于到达幸存者基地");
slowPrint("坐在椅子上的是一个30岁左右的男性");
slowPrint("他说,欢迎");
slowPrint("你发现他胸前挂着工牌[ADMIN-02]");
if (adminLog >= 3){
badEnd_::MoreInformation();
return;
}
slowPrint("首领提出用子弹交换你的食物");
slowPrint("当前食物:" + to_string(food) + ",请输入要交换的数量(0-" + to_string(food) + ")");
int exchange = input(0, food);
food -= exchange;
bullets += exchange + 2;
slowPrint("交换完成,首领奖励你两发子弹");
slowPrint("当前子弹:" + to_string(bullets) + ",食物:" + to_string(food));
pressAnyKey();
// 基地抉择:留下 离开
slowPrint("****希望你加入他们,选择:");
slowPrint("1. 留在基地");
slowPrint("2. 离开基地");
choice = input(1, 2);
if (choice == 1) {
// 留在基地:英雄/眷侣结局
if (girlFavor > 0) {
happyEnd_::Couple(); // 与妹子发展(Happy End 2)
} else {
happyEnd_::Hero(); // 成为英雄(Happy End 3)
}
}
else {
// 离开基地:遇到少年
slowPrint("你决定离开基地,选择:");
slowPrint("1. 当天离开");
slowPrint("2. 再停留一天");
choice = input(1, 2);
if (choice == 2) {
// 额外停留一天,再次交换资源
slowPrint("再停留一天,可再次用食物换子弹");
slowPrint("当前食物:" + to_string(food) + ",请输入交换数量");
int exchange2 = input(0, food);
food -= exchange2;
bullets += exchange2 + 3; // 额外奖励3发
slowPrint("交换完成!");
pressAnyKey();
slowPrint("又过一夜,食物-2");
food -= 2;
if (food < 0) {
badEnd_::Starve();
return;
}
}
// 遇到少年,决定是否同行
slowPrint("离开时,一个少年请求和你一起走");
slowPrint("1. 带上他(每天多消耗1份食物)");
slowPrint("2. 不带他");
choice = input(1, 2);
if (choice == 2) {
slowPrint("少年生气离开,偷走了你的枪和所有子弹");
bullets = 0;
pressAnyKey();
// 后续剧情:无少年,继续生存(Bad End 10)
savedBoy--;
badEnd_::AnotherBase();
} else {
// 带上少年,进入少年结局线
hasBoy = true;
slowPrint("你带上了少年,他给了你1份食物");
food += 1;
pressAnyKey();
// 少年相关剧情跳转
boyAdventure();
}
}
}
int main() {
// 初始化随机数
srand((unsigned int)time(NULL));
loadGame();
int choice;
// 游戏启动界面
system("cls");
slowPrint("===== 丧尸末世生存 =====");
slowPrint("1. 开始游戏");
slowPrint("2. 读取存档");
slowPrint("3. 结局图鉴");
slowPrint("4. 退出游戏");
slowPrint("请选择:");
choice = input(1, 4);
loop:
while (true) {
switch (choice) {
case 1: // 开始新游戏
system("cls");
// 通关后重新开始可领取特殊物品
if (gameClear && !hasSpecialItem) {
slowPrint("检测到你已通关基础剧情,是否领取特殊物品?");
slowPrint("1. 领取");
slowPrint("2. 不领取");
int getChoice = input(1, 2);
if (getChoice == 1) {
hasSpecialItem = true;
slowPrint("获得特殊物品:[未知碎片]");
pressAnyKey();
}
}
// 启动主线剧情
mainStory();
saveGame();
goto mainMenu;
case 2: // 读取存档
system("cls");
slowPrint("开发中...");
pressAnyKey();
if(zombieKingRoute){
slowPrint("为什么就不能保存?");
slowPrint("开发人员是**吗");
slowPrint("我下次一定和他决一死战!");
pressAnyKey();
badEnd_::KilledByWriter();
if(advancedClear){
slowPrint("但是......");
slowPrint("");
slowPrint("你猛然惊醒——眼前不是家,而是一个充满仪器的实验室");
slowPrint("一个穿着白大褂的人走进来:“存档模块快完成了”");
slowPrint("“我将进行最后一次调试...”");
slowPrint("白大褂的人按下了控制台的按钮,你失去了意识...");
slowPrint("再次醒来,你正分配初始物资,子弹和食物的总和却是18...");
slowPrint("“你的家中是一个较为安全的地方”");
slowPrint("“回家路上,你遇到一个女幸存者向你讨要物资”");
slowPrint("“你终于到达幸存者*****提出用子弹交换你的食物”");
slowPrint("“离开时,一个少年请求和你一起走”");
trueEnd_::LateDeath();
}
}
saveGame();
goto mainMenu;
case 3: // 结局图鉴
system("cls");
slowPrint("===== 结局图鉴 =====");
showBadEnds();
showHappyEnds();
showTrueEnds();
showClues();
slowPrint("死亡次数:" + to_string(deathCount));
if (countUnlocked(happyEnd, 5) >= 2 && countUnlocked(badEnd, 27) >= 8 && !gameClear) {
slowPrint("相信你已经简单了解了这个游戏");
slowPrint("恭喜通关基础剧情!");
slowPrint("");
slowPrint("玩了这么久,该保存一下了。");
gameClear = true;
}
if (clueCount >= 9 && !advancedClear) {
slowPrint("恭喜通关进阶剧情!");
slowPrint("");
slowPrint("玩了这么久,该保存一下了。");
advancedClear = true;
}
if (clueCount >= 11 && countUnlocked(trueEnd, 10) >= 3 && zombieKingRoute
&& advancedClear) trueEnd_::ServerShutdown();
if (deathCount >= 30 && !zombieKingRoute){
slowPrint("我怎么会死这么多次");
slowPrint("这个世界太奇怪了");
slowPrint("我活着有什么劲啊");
slowPrint("触发剧情:[尸王线]");
zombieKingRoute = true;
if(!hasSpecialItem) badEnd_::Mutate();
else{
slowPrint("你成为了尸王,但脑海中不断闪过之前30次死亡的记忆...");
slowPrint("你终于意识到:这不是末世。");
if (!clue[7]) {
Sleep(2000);
slowPrint("获得线索-----死亡?死亡!");
clue[7] = true;
clueCount++;
}
}
}
pressAnyKey();
saveGame();
goto mainMenu;
case 4: // 退出游戏
system("cls");
slowPrint("“感谢游玩!”");
if(exitTry >= 48 && advancedClear){
slowPrint("既然你有如此的毅力,我还是放你出去吧。——[ADMIN-01]");
pressAnyKey();
// 揭示实验真相彩蛋?
adminLog ++;
slowPrint("===== 管理员日志 =====");
slowPrint("实验体3号:退出尝试48次,意志力达标");
slowPrint("真相:末世是虚拟场景,1号(少年)和2号(妹子)是辅助测试体");
slowPrint("你的每一次死亡、每一个选择,都在被记录");
slowPrint("现在,你可以选择真正退出,或继续循环");
if (!clue[6]) {
Sleep(200);
slowPrint("获得终极线索-----退出");
clue[6] = true;
clueCount++;
}
slowPrint("输入y退出:");
char exiter = _getch();
if (exiter == 'y' || exiter == 'Y') {
slowPrint("实验体3号成功脱离测试");
exit(0);
}
goto mainMenu;
}
if(zombieKingRoute){
badEnd_::OutsideWorld();
exitTry++;
}
else{
badEnd_::KilledByWriter();
exitTry++;
}
saveGame();
goto mainMenu;
}
}
mainMenu:
// 返回主菜单
system("cls");
slowPrint("===== 主菜单 =====");
slowPrint("1. 开始游戏");
slowPrint("2. 读取存档");
slowPrint("3. 结局图鉴");
slowPrint("4. 退出游戏");
slowPrint("请选择:");
choice = input(1, 4);
goto loop; // 循环主菜单逻辑
}
/**
* @runId: 2147483647
* @language: C++
* @author: Hcode.allkilled
* @verson: 25.11.29
*/
能看到这里,十分感谢
全部评论 1
还会继续更新哦~
另一作品:https://www.acgo.cn/discuss/rest/56258 (已停更)2025-11-29 来自 浙江
0










有帮助,赞一个