- 帅泓宇 的博客
正在施工的自己写的游戏
- @ 2026-2-5 11:11:12
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
// 全局变量定义 增加注释 避免混淆
int sleeptime=40,kaishi=0,shiqu=0,yuedu=0,kaihe=0,jixumosuo=0,yincang,temp,zidan_ka=0,danjia_ka=0,bengdai=0,shangkou=0;
bool wupin[10],qiang_ka=false,wunangensui=false;
// 物品索引:0-手电筒 1-电池 2-电池 3-电池 4-压缩饼干 5-纯净水 6-蜡烛 7-火柴 8-胶水 9-剪刀
// 成就和线索定义(扩展数组长度,方便后续添加更多内容)
bool chengjiu[30]={false}; // 成就数组 初始全未解锁
bool putongxiansuo[30]={false}; // 普通线索数组
bool jingjiexiansuo[30]={false}; // 进阶线索数组
const string SAVE_FILE="game_save.txt"; // 存档文件路径
// 函数声明
void jinru();
void slow(string s);
void Cin(int &a, int b, int c);
string math_to_string(int n);
void check();
void zhandou(int zidan,int shang,int hude);// 移除冲突的局部变量
void game();
void clear();
void clean();
void load_save(); // 读取存档函数
void save_progress(); // 保存进度函数
void unlock_chengjiu(int index, const string& name); // 解锁成就函数
void unlock_xiansuo(bool* xiansuo_arr, int index, const string& name, const string& type); // 解锁线索函数
// 慢速输出函数
void clean(){
system("cls");
return ;
}
void clear(){
Sleep(1000);
system("cls");
return ;
}
void slow(string s){
for(int i=0;i<s.size();i++){
cout<<s[i];
Sleep(sleeptime);
}
}
// 安全输入函数(修复cin错误状态)
void Cin(int &a, int b, int c){
while(true){
// 清除cin错误状态并忽略无效输入
if(!(cin >> a)){
cin.clear(); // 重置cin状态
cin.ignore(numeric_limits<streamsize>::max(), '\n'); // 忽略剩余输入
slow("输入无效,请输入数字!\n");
continue;
}
if(a<b||a>c){
slow("请重新输入(范围:" + math_to_string(b) + "-" + math_to_string(c) + ")\n");
}else{
break;
}
}
}
// 数字转字符串(修复0的边界情况)
string math_to_string(int n){
if(n == 0) return "0"; // 处理0的情况
string s;
while(n!=0){
s += n%10 + '0';
n /= 10;
}reverse(s.begin(), s.end()); // 简化反转逻辑
return s;
}
// 读取存档函数
void load_save() {
ifstream file(SAVE_FILE);
if (!file.is_open()) {
// 如果存档文件不存在,创建新文件并初始化
slow("未检测到存档文件,创建新存档......\n");
save_progress();
return;
}
// 读取成就状态
string line;
if (getline(file, line)) {
for (int i = 0; i < min((int)line.size(), 10); i++) {
chengjiu[i] = (line[i] == '1');
}
}// 读取普通线索状态
if (getline(file, line)) {
for (int i = 0; i < min((int)line.size(), 10); i++) {
putongxiansuo[i] = (line[i] == '1');
}
}// 读取进阶线索状态
if (getline(file, line)) {
for (int i = 0; i < min((int)line.size(), 10); i++) {
jingjiexiansuo[i] = (line[i] == '1');
}
}file.close();
slow("存档读取成功!\n");
Sleep(1000);
}
// 保存进度函数
void save_progress() {
ofstream file(SAVE_FILE);
if (!file.is_open()) {
slow("存档保存失败!\n");
return;
}// 写入成就状态(1=解锁,0=未解锁)
for (int i = 0; i < 10; i++) {
file << (chengjiu[i] ? '1' : '0');
}file << endl;
// 写入普通线索状态
for (int i = 0; i < 10; i++) {
file << (putongxiansuo[i] ? '1' : '0');
}file << endl;
// 写入进阶线索状态
for (int i = 0; i < 10; i++) {
file << (jingjiexiansuo[i] ? '1' : '0');
}
file << endl;
file.close();
slow("存档已更新!\n");
Sleep(500);
}
// 解锁成就(自动保存)
void unlock_chengjiu(int index, const string& name) {
if (index < 0 || index >= 10) return;
if (!chengjiu[index]) {
chengjiu[index] = true;
slow("恭喜解锁成就----" + name + "!\n");
save_progress(); // 解锁后立即保存
}
}
// 解锁线索(自动保存)
void unlock_xiansuo(bool* xiansuo_arr, int index, const string& name, const string& type) {
if (index < 0 || index >= 10 || !xiansuo_arr) return;
if (!xiansuo_arr[index]) {
xiansuo_arr[index] = true;
slow("恭喜解锁" + type + "线索----" + name + "!\n");
save_progress(); // 解锁后立即保存
}
}
// 状态检查函数(换弹+伤口处理)
void check(){
clear();
// 换弹逻辑
if(danjia_ka < 2){
slow("检测到弹夹没满 是否换弹?\n1.换弹\n2.不换弹\n");
Cin(temp, 1, 2);
if(temp == 1){
if(zidan_ka > 0){
clear();
slow("装填中......");
int need = 2 - danjia_ka;
int re = min(zidan_ka, need);
danjia_ka += re;
zidan_ka -= re;
Sleep(500 * re);
slow("\n装填完成! 当前弹夹:" + math_to_string(danjia_ka) + " 剩余子弹:" + math_to_string(zidan_ka) + "\n");
}else{
slow("无子弹 请补充子弹后重试\n");
}
}
}
// 伤口处理逻辑
if(shangkou > 0){
string s = math_to_string(shangkou);
slow("你有" + s + "处伤口 是否全部使用绷带治疗?(如绷带不足将使用全部绷带)\n1.用!\n2.等我再搜一点一起治疗\n");
Cin(temp, 1, 2);
if(temp == 1){
int use_bandage = min(bengdai, shangkou);
bengdai -= use_bandage;
shangkou -= use_bandage;
slow("治疗完成! 剩余绷带:" + math_to_string(bengdai) + " 剩余伤口:" + math_to_string(shangkou) + "\n");
}
}
// 流血过多判定
if(shangkou > 5){
slow("很不幸 你流血过多了\n");
slow("你开始逐渐失去意识\n");
slow("你死了\n");
slow("有伤不要硬抗啊......\n");
Sleep(750);
jinru();
}return ;
}
// 战斗函数
void zhandou(int zidan, int hudezidan,int huode,int shoushang){
clear();
int need = rand() % zidan + 1;
slow("战斗中......");
Sleep(750);
// 战斗胜利判定
if(need <= zidan_ka + danjia_ka){
// 消耗子弹(优先弹夹,再消耗备用)
int use_danjia = min(danjia_ka, need);
danjia_ka -= use_danjia;
need -= use_danjia;
zidan_ka -= need;
Sleep(750);
slow("\n你胜利了!恭喜!\n");
// 解锁战斗胜利成就
unlock_chengjiu(1, "初露锋芒");
// 解锁战斗线索
unlock_xiansuo(putongxiansuo, 0, "怪物弱点-物理攻击", "普通");
}else{
slow("\n你死了\n");
clear();
jinru();
return ;
}
// 随机获得绷带
if(rand() % huode == 0){
slow("你获得了一个绷带!\n");
bengdai += 1;
}
// 随机受伤
if(rand() % shoushang == 0){
slow("你受伤了!\n");
shangkou += 1;
}
// 随机获得子弹
int huodezidan = rand() % hudezidan;
zidan_ka += huodezidan;
if(huodezidan != 0){
string s = math_to_string(huodezidan);
slow("你获得了" + s + "发子弹\n");
}
// 战斗后检查状态
check();
return ;
}
// 游戏主逻辑
void game(){
clean();
slow("正在加载......");
memset(wupin, false, sizeof wupin);
Sleep(3000);
slow("\n加载完成\n");
Sleep(350);
clean();
// 游戏剧情
slow("你是一个深圳某校的初二学生\n");
slow("今天是周二\n");
slow("你背着书包来到学校 今天似乎十分的正常 你却发现桌上有一个用铁盒子保护的东西\n");
slow("是否打开?\n1.开!\n2.上课要紧\n");
Cin(kaihe, 1, 2); // 改用安全输入函数
if(kaihe == 1){
slow("箱子里有一封信!\n");
slow("是否拾取?\n1.拾取\n2.丢到一边\n");
Cin(shiqu, 1, 2);
if(shiqu == 1){
slow("是否现在打开阅读?\n1.现在就读\n2.有空再说\n");
Cin(yuedu, 1, 2);
if(yuedu == 1){
clear();
slow("信件内容:\n");
slow("如果有人看见了这封信 这太好了\n");
slow("如果你可以按照我说的去做 你或许可以拯救所有人\n");
slow("或许你有许多的疑问 但是 现在没有时间去回答你了\n");
slow("我可以告诉你的是 我就是你 如果这样有助于你理解的话\n");
slow("你看见这封信件时 我所在的世界应该已经没有活人了\n");
slow("在绝望之中的人什么事都干的出来 你知道的 不然我也不会写这封信了\n");
slow("我们遭受到了某种怪物的袭击\n");
slow("它们拥有人形 会**** 有一定的智力\n");
slow("但是它们惧怕****\n");
slow("箱子里还有点应急物资 在****学校将会*****\n");
slow("注意时刻保持警惕\n");
slow("如果可以 请尽量让更多的同学一起撤离!\n");
slow("去***的出口 那里可以更快的出去!\n");
slow("旁边有一行略微潦草的字 似乎是在慌忙之中写下的\n");
slow("我们在***遭到***袭击!不要去***!我们永远都*****\n");
slow("信件戛然而止 末尾是直接撕掉的 或许在其他地方有另外的部分......\n");
slow("不知为什么上面有一些划掉的字......像是作者自己划掉的\n");
slow("可他为什么要划掉这些......\n");
slow("这么潦草的字迹肯定很赶时间......那作者又是什么时候把信放进箱子的......\n");
// 解锁信件线索
unlock_xiansuo(putongxiansuo, 1, "神秘信件", "普通");
unlock_xiansuo(jingjiexiansuo, 0, "时间悖论", "进阶");
Sleep(3500);
clear();
slow("拿开信封 箱子里有一些物资\n");
}
}else{
slow("你丢开信封 发现箱子里还有一些东西\n");
}
slow("但是你还没看完有什么东西就'啪'的停电了\n");
slow("教室一片混乱 你还要继续摸索吗\n1.继续\n2.随人流撤出教室\n");
Cin(jixumosuo, 1, 2);
if(jixumosuo == 1){
slow("箱子里有很多东西 但是没有灯的照明 你只能一个一个摸\n");
clear();
slow("正在摸索......\n");
Sleep(2000);
slow("摸索完成!你获得了一下物品:\n");
slow("1.有电池的手电筒\n2.手电筒的电池*3\n3.压缩饼干\n4.纯净水\n5.蜡烛\n6.火柴\n7.胶水\n8.剪刀\n");
memset(wupin, true, sizeof wupin);
// 解锁获得物资成就
unlock_chengjiu(2, "物资收集者");
Sleep(300);
slow("这些东西真的有用吗......\n");
slow("话说虽然是6点多但也不至于这么黑吧......\n");
slow("教室有点黑的吓人呢......\n");
slow("身边传来了沉重的脚步\n不是吧......\n");
slow("1.直接站起跑出教室\n2.趴在地上\n3.不动\n");
Cin(yincang, 1, 3);
if(yincang == 1 || yincang == 2){
if(yincang == 1){
slow("到处漆黑一片 基本上什么都看不见\n");
slow("你的背后传来火辣辣的疼 你受伤了\n");
shangkou += 1;
}else{
slow("怪物在箱子前停留了一段时间后走出了教室\n");
slow("1.跟着它出去\n2.在原地等待\n");
Cin(temp, 1, 2);
if(temp == 1){
slow("怪物回头发现了你!\n");
}else{
slow("怪物在外面转了一圈之后回来了\n");
slow("它停在了你的面前\n");
slow("被发现了!\n");
slow("还是躲不过吗......明明已经是最保守的选择了才对......\n");
slow("你死了\n");
clear();
return ;
}
}
slow("请选择:\n1.快跑\n2.静步贴着墙根走\n");
Cin(temp, 1, 2);
clear();
if(temp == 2){
slow("怪物似乎跟丢了......听脚步去追同学了\n");
slow("漆黑一片......什么都看不见\n1.打开手电筒\n2.再等一会\n");
Cin(temp, 1, 2);
if(temp == 1){
slow("怪物的脚步停下了......\n");
slow("怎么有种不好的预感......\n");
slow("脚步回来了......\n");
slow("1.丢掉手电筒\n2.跑!\n3.丢下手电筒跑\n4.丢下手电筒之后静步贴着墙根走\n");
Cin(temp,1,4);
if(temp==1||temp==3||temp==4){
wupin[0]=false;
}if(temp == 1){
slow("手电筒在地上滚了几圈之后对准了你\n");
slow("凭借着灯光 你看见了怪物正站在你的面前\n");
slow("它的身上只有无尽的黑暗\n");
slow("而你的心里只有无尽的绝望......\n");
slow("你死了\n");
clear();
return ;
}else if(temp == 2){
slow("怪物的脚步一直就在你的身后\n");
slow("突然你被扑到在地上\n");
slow("手电筒的光照在怪物身上\n");
slow("只有黑暗......那是一个由黑暗组成的人形怪物\n");
slow("怪物大叫一声\n");
slow("你感到震耳欲聋\n");
slow("然后怪物抬起来大手......\n");
slow("你死了\n");
clear();
return ;
}else if(temp == 3){
slow("怪物的脚步停在了手电筒附近\n");
slow("似乎被灯光吸引了?\n");
slow("不对!它正在看着你!\n");
slow("怪物飞扑过来 撞翻在地\n");
slow("你磕到了头\n");
slow("你死了\n");
slow("你死了\n");
clear();
return ;
}else{
slow("怪物的脚步停在了手电筒附近......\n");
Sleep(100);
slow("似乎正在寻找什么?\n");
slow("手电筒那边传来了破空的声音......它在攻击?\n");
// 解锁怪物行为线索
//unlock_xiansuo(putongxiansuo, 2, "怪物怕光", "普通");
// 隔壁教室分支
gebijiaoshi:
slow("你走着走着碰到了一扇门......是隔壁班!他们的门没关!太好了!\n1.直接进入\n2.悄悄进入\n3.继续往前走\n");
Cin(temp, 1, 3);
if(temp == 1 || temp == 2){
slow("怎么有一股......血的味道......\n");
slow("是怪物!不止一个!怎么会!\n");
if(temp == 1){
slow("突然有两个绿色的点亮了起来 是怪物的眼睛!\n");
slow("1.跑!\n2.就地躲藏\n");
Cin(temp, 1, 2);
if(temp == 1){
slow("你的前面突然出现一个巨大的身影......是一开始的那个怪物!\n");
slow("被前后夹击了啊......\n");
slow("还真是聪明呢......\n");
slow("我也就这样了......\n");
slow("你死了\n");
clear();
return ;
}else{
slow("你的右边响起了沉重的脚步\n");
slow("它走到了你的附近\n");
slow("就在这时 门外也走进一个怪物\n");
slow("看来不止一个啊......\n");
slow("你死了\n");
clear();
return ;
}
}else{
slow("在讲台似乎有什么东西进食的声音......\n");
slow("不会吧......这么贪吃?\n");
slow("1.过去看看\n2.留在原地\n");
Cin(temp, 1, 2);
if(temp == 1){
slow("你悄悄的摸到了讲台 发现是一个人形的怪物在啃食一个人的尸体\n");
slow("我*!,好**的恶心啊!\n");
slow("你不禁后退两步 但是你撞到了桌子\n");
slow("怪物抬起头看向了你\n");
slow("裂开的嘴角在像人一样向你微笑?!\n");
slow("你死了\n");
clear();
return ;
}else{
slow("你留在了原地\n");
slow("前门突然响起了又一个脚步\n");
slow("去到了讲台前面\n");
slow("突然讲台上发出来巨大的尖叫\n");
slow("然后是扭打的声音\n");
slow("似乎......他们还会护食?\n");
slow("'砰'的一声 讲台被打飞了\n");
slow("还砸在你的身上\n");
slow("你被砸死了\n");
unlock_xiansuo(putongxiansuo,2,"内斗","普通");
clear();
return ;
}
}
}else{
// 碰到卡卡分支
pengdaokaka:
clear();
slow("你沿着走廊一直走 但是由于没有手电筒你几乎看不见任何东西\n");
slow("突然你撞到了一个人\n");
slow("就在你差点叫出声的时候他捂住了你的嘴巴\n");
slow("他小声地说:别怕 我是卡卡 你没有忘记我吧?\n");
slow("明明昨天还一起玩的......问这个问题干什么......\n");
slow("1.回答:记得\n2.回答:不记得\n3.模棱两可的回答\n");
Cin(temp, 1, 3);
if(temp == 3 || temp == 2){
slow("\"卡卡\":看来还是被你发现了啊......\n");
slow("你死了\n");
clear();
return ;
}else if(temp == 1){
slow("\"卡卡\":那就好 跟紧我 我带你去一个地方 那里比较安全\n");
slow("卡卡自己走了......\n1.跟上\n2.悄悄离开\n");
Cin(temp, 1, 2);
if(temp == 2){
slow("那个自称卡卡的人回来了 但是他的嘴角为什么挂着冷笑?\n");
slow("\"卡卡\":真是聪明呢......不过还不够\n");
slow("你死了\n");
clear();
return ;
}else{
slow("\"卡卡\"带你来到了一间储物间 里面乱七八糟的摆着各种东西\n");
slow("\"卡卡\":这些都是我自制的东西 现在派上用场了!我早就知道了现在的事情!\n");
slow("\"卡卡\":这些东西你拿着吧 到时候我们去校门口集合!记得带你能带的幸存者过来!\n");
slow("\"卡卡\"自己走了 但是他好像走反了?那边是刚刚我们来的方向啊\n");
clear();
slow("是否打开\"卡卡\"留下的包裹\n1.打开\n2.里面肯定没好东西 还是不开了\n");
Cin(temp, 1, 2);
if(temp == 1){
slow("里面有一把双喷!\n获得枪械---双喷\n");
qiang_ka = true;
slow("还有45发子弹!\n获得子弹---双喷子弹*45\n");
zidan_ka+=45;
slow("一个绷带!\n获得绷带*1\n");
bengdai+=1;
if(!wupin[0]){
slow("还有......你丢掉的手电筒?怎么会在他这......\n");
wupin[0]=true;
}
// 解锁获得武器成就
unlock_chengjiu(3, "武装起来");
Sleep(1000);
check(); // 这里会触发换弹逻辑
}else{
slow("你把包裹撇在了一边\n");
}
slow("出去吗?\n1.出去\n2.不出去\n");
Cin(temp, 1, 2);
if(temp == 1){
slow("外面有一只怪物!\n");
if(qiang_ka){
slow("1.开枪打它!\n");
}slow("2.缩回储物间\n");
//适配有无枪械的输入范围
int min_val = qiang_ka ? 1 : 2;
int max_val = 2;
Cin(temp, min_val, max_val);
if(temp == 1){
danjia_ka-=2;
slow("怎么没中!!!\n");
slow("不好!它已经快到储物间了!\n");
if(qiang_ka){
slow("1.打它!\n");
}slow("2.缩回储物间\n");
if(qiang_ka){
Cin(temp,1,2);
}else{
Cin(temp,2,2);
}if(temp == 2){
if(shangkou == 1){
slow("怪物在你原来的伤口上又划了一下 伤口更深了\n");
slow("由于伤口够深 伤及心脏 你死了\n");
clear();
return ;
}else{
slow("尽管你躲的够快 但还是被怪物的爪子划到了\n");
shangkou += 1;
check();
goto suohuichuwujian;
}
}else{
check();
slow("尽管你有着多年玩射击游戏的经验 但毕竟不是现实\n");
slow("至于 你开枪的结果......我是伯乐 好马\n");
slow("你死了\n");
unlock_chengjiu(5,"菜就多练");
clear();
return ;
}
}else{
// 缩回储物间分支
suohuichuwujian:
slow("你直接缩回了储物间\n");
slow("怪物在外面用爪子刮门 发出刺耳的声响\n");
check();
slow("怪物把门板抓开了一个洞!");
if(!qiang_ka){
slow("由于你没有武器 你无法抵抗\n");
slow("你死了\n");
clear();
return ;
}if(danjia_ka > 0){
check();
slow("是否开枪?\n1.打它!\n2.节省子弹先\n");
Cin(temp, 1, 2);
if(temp == 1){
slow("枪枪爆头好运连连 你成功的击杀了怪物!\n");
slow("看来怪物也并不是免疫物理攻击的嘛\n");
slow("当前弹夹剩余");
// 解锁首杀成就
unlock_chengjiu(4,"首杀");
check();
clear();
slow("这里似乎没有东西了 要出去吗?\n1.走走走 有枪我怕谁!\n2.再搜搜\n");
Cin(temp, 1, 2);
if(temp == 2){
clear();
slow("搜索中......");
Sleep(3000);
slow("\n搜索完成!\n");
slow("获得一下物品:\n");
slow("1.录音 似乎还可以播放\n是否听取录音?\n1.听!\n2.先赶路吧\n");
Cin(temp, 1, 2);
bool a = false;
if(sleeptime == 5){
a = true;
}sleeptime=30;
slow("我们TMD遭到了袭击 在****口有陷**注意躲避!\n");
slow("重复!在楼****有**阱注意躲避!\n");
// 解锁录音线索
unlock_xiansuo(putongxiansuo, 3, "陷阱警告", "普通");
unlock_xiansuo(jingjiexiansuo, 1, "教学楼布局", "进阶");
unlock_chengjiu(6, "窃听");
if(a){
sleeptime=5;
}else{
sleeptime = 40;
}slow("似乎录音的地方有些吵闹?有一些音频听不清\n");
slow("就这样吧......该去找同学们了\n");
slow("突然 附近有黑影出现\n");
slow("坏了!是那些怪物!它们被枪声吸引了!有1...2...3个起步!!!\n");
slow("他们离这还有一些距离......要不试着用喷子打它们?\n1.打!\n2.跑路了兄弟 跑路了 有事受着\n3.等它们离近再打\n");
Cin(temp, 1, 3);
if(temp == 1){
zhandou(50, 5,3,2); // 移除冲突参数
}else if(temp == 3){
zhandou(35,10,3,3); // 移除冲突参数
}else{
clear();
slow("尽管你使出了吃奶的力气还是跑不过那些怪物\n");
slow("你还要继续跑吗?\n1.继续跑\n2.停下朝怪物开枪\n3.边跑边开枪\n");
Cin(temp, 1, 3);
if(temp == 1){
slow("终于 在你的不懈努力下\n");
Sleep(750);
slow("你力竭了......\n");
slow("你看着这些怪物 艰难地举起了枪\n");
slow("但是枪还没有举起就被怪物一巴掌拍飞了......\n");
slow("你死了\n");
clear();
return ;
}else if(temp == 2){
slow("由于体力接近耗尽 你的命中率大幅降低\n");
zhandou(90, 15,3,2); // 移除冲突参数
}else{
slow("由于你在奔跑你的命中率降低\n");
zhandou(70, 12,3,2); // 移除冲突参数
}
}clear();
slow("战斗结束的你发现楼上似乎有一个黑影\n");
slow("黑影消失了......\n");
slow("1.追上楼\n2.去找同学们集合\n");
Cin(temp,1,2);
if(temp==2){
slow("");
}else{
slow("你追着黑影上了楼梯\n");
slow("黑影突然停下来\n");
slow("1.试图沟通\n2.直接开枪打它\n");
Cin(temp,1,2);
if(temp==1){
slow("黑影没有动静......\n");
slow("1.再次尝试沟通\n2.我可没有那么多的耐心!\n");
Cin(temp,1,2);
if(temp==2){
goto dasiheiying;
}else{
slow("黑影缓缓转身 露出了她的脸\n");
slow("万幸不是怪物 刚刚也没有开枪\n");
clear();
slow("1.试图搭话\n2.询问一些事情\n");
Cin(temp,1,2);
slow("她没有说话......\n");
slow("但是你发现她的口袋里装着一张纸\n");
slow("1.讨要那张纸\n2.我又和她不熟\n");
Cin(temp,1,2);
if(temp==1){
slow("她没有任何的动作 就呆在原地\n");
}else{
slow("你们就这么呆在这\n");
}slow("她的脸色惨白 似乎是 低血糖?\n");
slow("看上去她的状态不是很好 甚至于马上就会晕倒\n");
if(wupin[4]&&wupin[5]){
slow("1.给她压缩饼干和水\n");
}slow("2.什么都不给她\n");
if(wupin[4]&&wupin[5]){
Cin(temp,1,2);
}else{
Cin(temp,2,2);
}if(temp==2){
slow("她真的马上就晕了......\n");
slow("这可怎么办......\n");
slow("1.守在这\n2.试图开枪吓醒她\n");
if(wupin[4]&&wupin[5]){
slow("3.将压缩饼干压成粉混着水喂她\n");
Cin(temp,1,3);
if(temp==3){
wupin[4]=wupin[5]=false;
slow("她的脸色看起来在变好了\n");
slow("她醒了\n");
unlock_chengjiu(8,"饿一会也不会怎么样");
goto jiuhuonvsheng;
}
}else{
Cin(temp,1,2);
}if(temp==2){
danjia_ka-=1;
slow("然而这并没有什么卵用......浪费一颗子弹除外\n");
goto nvshengzhouweideguaiwu;
}
}else{
wupin[4]=wupin[5]=false;
slow("她的脸色看起来好多了\n");
unlock_chengjiu(7,"还好拿上了");
jiuhuonvsheng:
slow("她的状态似乎好多了\n");
slow("尝试重新与她交谈?\n1.是\n2.否\n");
Cin(temp,1,2);
if(temp==1){
slow("你和她并不熟 所以你从名字开始问起\n");
slow("你得知了她的名字\"吴楠\"\n");
slow("\"吴楠\":我们班在校门口遭到了袭击......\n");
slow("\"吴楠\":怪物是从校门外进来的......\n");
slow("\"吴楠\":校门外还有不少......\n");
slow("\"吴楠\":我们......可能得交代在这\n");
}clear();
slow("是否重新提起那张纸?\n1.那张纸很重要!\n2.不要也罢\n");
Cin(temp,1,2);
if(temp==1){
slow("\"吴楠\":这张纸?是我在一个房间找到的\n");
slow("\"吴楠\":这张纸当时还被所在一个铁盒里呢~我撬开的!\n");
slow("铁盒......一开始的我看见的铁盒里也有纸......\n");
slow("是......同一个人写的?\n");
slow("1.索要\n2.继续往前走\n");
Cin(temp,1,2);
if(temp==1){
slow("\"吴楠\"欣然同意了\n");
slow("文字也是有点模糊......但是字体倒是相差无几\n");
clear();
slow("纸条内容:\n");
slow("**有直升机!是救援!\n");
slow("上面有全副武装的士兵和******是政府的人!\n");
slow("靠!直升机负载满了 上面全是幸存者 直升机走了!\n");
slow("不对!直升机**了!上面有****!是****!\n");
Sleep(750);
slow("关键部分似乎被人为抹除了......\n");
slow("算了 既然有直升机就先去高处吧......\n");
unlock_xiansuo(putongxiansuo,5, "直升机", "普通");
}
}clear();
slow("\"吴楠\"想要带你去高处\n1.去\n2.不去\n");
Cin(temp,1,2);
if(temp==2){
slow("\"吴楠\"自己前往了高处\n");
wunangensui=false;
}else{
wunangensui=true;
slow("你们来到了教学楼楼顶\n");
slow("这里的视野很好......\n");
slow("但......问题是地上为什么只有一片片的血迹?\n");
slow("尸体......遇难者的尸体都哪去了?\n");
slow("\"吴楠\"建议在这等待救援\n");
slow("1.接受\n2.不接受\n");
Cin(temp,1,2);
}
}
}
}else{
dasiheiying:
danjia_ka-=1;
slow("黑影晃晃悠悠地倒了下来\n");
clear();
//check();
slow("1.再补几枪\n2.接近查看\n");
Cin(temp,1,2);
if(temp==1){
danjia_ka-=1;
//check();
//纯浪费子弹
}slow("黑影完全没有了动静\n");
slow("你小心翼翼地接近它 却发现它看起来没有怪物那么高大\n");
slow("它的脸部朝下 无法辨认\n1.给它翻个身\n2.辨认有什么用 打赢了就是我厉害\n");
Cin(temp,1,2);
if(temp==1){
slow("它露出了脸\n");
slow("你却发现她是你的一个女同学......\n");
slow("你......刚刚开枪打死了她......\n");
slow("你发现她的手里似乎攥着一张纸\n");
slow("1.拿出来读\n2.肯定是陷阱!\n");
Cin(temp,1,2);
if(temp==1){
clear();
slow("那张纸皱巴巴的 上面有些字还被磨掉了\n");
slow("纸张内容:\n");
slow("初二8班全学生45人遇难\n");
slow("二人失踪 三人幸存 其中一人受伤\n");
slow("在校门口有大量类人生物\n");
slow("目前已知特点:\n");
slow("1.它们似乎惧怕水和****\n");
slow("2.它们做不到一些人类可以做的动作 例如******\n");
slow("纸的最后有些许血迹 可能就是这位幸存者的......\n");
slow("这张纸有点泛黄......墨也有点淡了 似乎......有些时候了?\n");
// 解锁幸存者线索
unlock_xiansuo(putongxiansuo, 4, "幸存者", "普通");
unlock_xiansuo(jingjiexiansuo, 2, "怪物弱点-水", "进阶");
clear();
}
}nvshengzhouweideguaiwu:
slow("你的周围突然响起了沉重的脚步\n");
slow("不好!是它们!它们被枪声吸引来了!\n");
slow("你的面前随即出现了几个巨大的怪物\n");
if(danjia_ka==1){
slow("你朝它们开了一枪却毫无用处\n");
slow("霰弹枪的弹丸在空中分散开来 均匀地打在了每一个怪物身上\n");
slow("它们看起来屁事没有\n");
slow("反倒是你......\n");
}else{
slow("你试图开枪反抗 但是你忘记了你刚刚打完了枪膛里的子弹\n");
slow("枪击发出\"咔咔\"的声音却无弹丸射出\n");
}slow("你死了\n");
clear();
return ;
}
}
}
}else{
slow("怪物挠破门板进来了\n");
slow("你被砍成了臊子\n");
slow("你死了\n死得不能再死\n");
clear();
return ;
}
}
}
}else{
slow("外面响起了一阵脚步......但是没有怪物那么重\n");
slow("是......幸存者?\n");
slow("外面有说话声 来人自称是\"卡卡\"\n");
slow("他说他受伤了 要回来休整状态 让你放他进来\n");
slow("1.放他进来\n2.不放\n");
Cin(temp,1,2);
if(temp==1){
slow("你打开了门\n");
slow("只不过面前的不是一个人......而是\n");
slow("一个面部扭曲 四肢细长的怪物!\n");
slow("它一脸狞笑 笑着朝你走来\n");
slow("\"怎么能让你一直躲在这呢......\"\n");
slow("你死了\n");
unlock_xiansuo(jingjiexiansuo, 3, "伪人", "进阶");
clear();
return ;
}else{
slow("外面的人依旧苦苦哀求 试图让你打开这个本就不怎么坚固的木门\n");
slow("1.打开门\n2.不开\n");
Cin(temp,1,2);
if(temp==1){
slow("面前的不是一个人......而是一个怪物!\n");
slow("它狞笑着朝你靠近\n");
slow("\"卡卡\"居然不第一时间开门......真是的\n");
slow("你死了\n");
clear();
return ;
}else{
slow("外面安静了一会......\n");
slow("1.出去\n2.在里面等着\n"); // 修复语法错误:\2 -> \n2
Cin(temp,1,2);
if(temp==1){
slow("怪物注视着你 似乎很欣赏你的勇气\n");
zidan_ka=0;//必定赢不了
danjia_ka=0;
zhandou(INT_MAX,INT_MAX,INT_MAX,1);
}else{
slow("外面在安静了一会之后突然又想起了脚步声\n");
slow("接着 本就不怎么坚固的木门被一脚踹开\n");
slow("怪物一脸不屑的看着你\n");
slow("\"胆小鬼\"\n");
slow("你死了\n");
clear();
}
}
}
}
}
}
}
}
}else{
slow("你周围响起了一阵声音\n1.跟寻声音过去\n2.扶着墙往前走\n");
Cin(temp, 1, 2);
if(temp == 1){
goto gebijiaoshi;
}else{
goto pengdaokaka;
}
}
}else{
slow("怪物追上了你......\n");
slow("完了.....\n");
slow("你死了\n");
clear();
return ;
}
}else{
slow("脚步停在了箱子前面 一个巨大的黑影站在前面\n");
slow("一个人形的生物伸出了触手一样的东西触碰箱子\n");
slow("突然那个触手一样的东西碰到了你\n");
slow("那只手顿了一下 便高高抬起\n");
slow("请选择:\n1.跑!!!\n2.接着不动\n");
Cin(temp, 1, 2); // 改用安全输入函数
if(temp == 2){
slow("那只大手狠狠地落下 接着你变成了路易十六\n");
unlock_chengjiu(9,"历史的伟人");
clear();
return ;
}else{
slow("你跑出了教室 外面一片黑暗\n");
slow("脚步紧紧跟在身后 接着你被踹翻在地\n");
slow("你感到被东西压住脑袋 动弹不得\n");
slow("接着 那只大手高高举起 又落了下来\n");
slow("你变成了路易十六\n");
unlock_chengjiu(9,"历史的伟人");
clear();
return ;
}
}
}else{
clear();
//随人流撤出原始教室
slow("你撤出了教室\n");
slow("奇怪的是 学校里只有你们一个班的人出来了......\n");
unlock_xiansuo(putongxiansuo,6, "消失的人们", "普通");
slow("人流走到了校门口......\n");
slow("就在即将成功撤出学校时\n");
slow("前面的同学如潮水一般退了回来\n");
slow("什么鬼!!!\n");
slow("你踮着脚往前看去\n");
slow("找到了大家后退的原因----怪物\n");
slow("你接着也跑了起来\n");
slow("怪物突然大吼一声 周围冲出许多怪怪物\n");
slow("你周围的同学一个接一个的减少\n");
slow("最后 幸存下来的同学只有一个\n");
slow("但不是你\n");
Sleep(750);
slow("你死了\n");
unlock_xiansuo(putongxiansuo,7, "校门口的怪物", "普通");
clear();
return ;
}
}else{
slow("你就这么上着课 完全将盒子的事抛在脑后......\n");
slow("今天就这么过去了......\n");
slow("但总感觉......又有新的一轮新的循环在等着我......\n");
// 解锁"平静的一天"成就
unlock_chengjiu(0,"平静的一天???");
clear();
return ;
}
}
// 游戏入口函数
void jinru(){
clean();
slow("1.进入游戏\n");
slow("2.快速输出\n");
slow("3.获取游戏剧情相关提示\n");
slow("4.游戏开发相关\n");
slow("5.查看成就\n");
slow("6.查看线索\n");
slow("7.退出游戏\n");
Cin(kaishi,1,7); // 修复输入范围错误:原1-5改为1-7
if(kaishi == 2){
if(sleeptime == 40){
sleeptime = 5;
slow("已开启快速输出\n");
}else{
sleeptime = 40;
slow("已关闭快速输出\n");
}Sleep(500);
jinru();
}else if(kaishi == 1){
// 重置全局变量 避免多次进入游戏状态残留
zidan_ka = 0;
danjia_ka = 0;
bengdai = 0;
shangkou = 0;
qiang_ka = false;
memset(wupin, false, sizeof wupin);
game();
jinru();
}else if(kaishi == 7){
clean();
slow("555 是不是哪里有BUG让你不满意了 我会努力调试的\n");
slow("记得下次再来QWQ\n");
return ;
}else if(kaishi == 3){
int suiji = rand() % 5;
clean();
if(suiji == 0){
slow("一些看来必死的选择可能会有一些有用的线索!\n");
}else if(suiji == 1){
slow("人形生物拥有智商 请对身边的每一个人保持警惕!\n");
}else if(suiji == 2){
slow("当怪物离你有一定距离时喷子的命中率会变低!\n");
Sleep(500);
slow("当然 要是你运气够好的话 说不定可以活下来......\n");
}else if(suiji == 3){
slow("战斗时有很多不确定因素......一切皆看运气......\n");
}else if(suiji == 4){
slow("战斗可以获得绷带或者伤口 但是记住 战斗有风险\n");
}
Sleep(1000);
jinru();
}else if(kaishi == 4){
clear();
slow("真的不知道说什么......\n");
slow("你可以自己复制一份回去补充好\n");
slow("记得给我玩玩......\n");
clear();
jinru();
}else if(kaishi==5){
clean();
slow("已解锁的成就:\n");
bool has_chengjiu = false;
// 成就名称映射
const string chengjiu_names[30] = {"平静的一天???","初露锋芒","物资收集者","武装起来","首杀","再多练练", "窃听", "还好带上了", "饿一会也不会怎么样","历史的伟人"};
for(int i=0; i<30; i++){
if(chengjiu[i] && !chengjiu_names[i].empty()){
slow(math_to_string(i+1) + ". " + chengjiu_names[i] + "\n");
has_chengjiu = true;
}
}
if(!has_chengjiu){
slow("暂无解锁的成就\n");
}slow("\n按任意键返回主菜单...\n");
cin.ignore();
cin.get();
jinru();
}else if(kaishi==6){
clean();
slow("=== 普通线索 ===\n");
bool has_putong = false;
const string putong_names[30] = {"怪物弱点-物理攻击","神秘信件","内斗","陷阱警告","幸存者","救援---直升机", "消失的人们", "校门口的怪物", "", ""};
for(int i=0; i<30; i++){
if(putongxiansuo[i] && !putong_names[i].empty()){
slow(math_to_string(i+1) + ". " + putong_names[i] + "\n");
has_putong = true;
}
}
if(!has_putong){
slow("暂无解锁的普通线索\n");
}slow("\n=== 进阶线索 ===\n");
bool has_jingjie=false;
const string jingjie_names[30]={"时间悖论","教学楼布局","怪物弱点-水","伪人", "", "", "", "", "", ""};
for(int i=0; i<30;i++){
if(jingjiexiansuo[i]&&!jingjie_names[i].empty()){
slow(math_to_string(i+1)+"."+jingjie_names[i]+"\n");
has_jingjie=true;
}
}if(!has_jingjie){
slow("暂无解锁的进阶线索\n");
}slow("\n按任意键返回主菜单...\n");
cin.ignore();
cin.get();
jinru();
}
}
int main(){
cin.tie(0);
srand((unsigned int)time(NULL)); // 初始化随机数种子 避免每次随机结果相同
// 游戏启动时读取存档
load_save();
// 进入游戏主菜单
jinru();
return 0;
}