-
个人简介
- [ ] ```language
```language
否则,你不是人; if(you are a human) you must can get score in every test; else you are not a human; 我不是老six 我是崂大😕 学校就是一座黑暗森林,每个班主任都是带枪的猎人,像幽灵般潜行与走廊,轻轻推开挡路的后门,竭力不让脚步发出一点声音,连呼吸都小心翼翼,他必须小心,因为班中到处都存在与他作对的学生…… 未完待续
using namespace std; typedef long long ll; ll a[5000010]; int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n,k; cin>>n>>k; map<ll,ll> m; for(int i=1;i<=n;i++){ cin>>a[i]; m[a[i]]++; } ll cnt=-2e10,maxn=-2e10; for(int i=1;i<=n;i++){ if(m[a[i]]>1){ maxn=max(maxn,m[a[i]]); } } for(int i=1;i<=n;i++){ if(m[a[i]]>1&&m[a[i]]!=maxn){ cnt=max(cnt,m[a[i]]); } } cout<<cnt+maxn; return 0; }
十年OI一场空,不开long long 见祖宗 你今天做题了吗?(灵魂拷问)
不准盗简介 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
\\\\ \\ \\ \\ \\ \\ \\ _ooOoo_ // // // // // // //// \\\\ \\ \\ \\ \\ \\ o8888888o // // // // // //// \\\\ \\ \\ \\ \\ 88" . "88 // // // // //// \\\\ \\ \\ \\ (| -_- |) // // // //// \\\\ \\ \\ O\ = /O // // //// \\\\ \\ ____/`---'\____ // //// \\\\ .' \\| |// `. //// //== / \\||| : |||// \ ==\\ //== / _||||| -:- |||||- \ ==\\ //== | | \\\ - /// | | ==\\ //== | \_| ''\---/'' | | ==\\ //== \ .-\__ `-` ___/-. / ==\\ //== ___`. .' /--.--\ `. . ___ ==\\ //== ."" '< `.___\_<|>_/___.' >' "". ==\\ //== | | : `- \`.;`\ _ /`;.`/ - ` : | | \\\\ //// \ \ `-. \_ __\ /__ _/ .-` / / \\\\ //// ========`-.____`-.___\_____/___.-`____.-'======== \\\\ //// `=---=' \\\\ //// // ||^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \\ \\\\ //// // // \\ \\ \\\\ //// // // // // // || || || || || || || || || || \\ \\ \\ \\ \\ \\\\
- Waiting 评测:评测请求正在等待被评测机抓取
- Fetched 评测:评测请求已被评测机抓取,正在准备开始评测
- Compiling 评测:正在编译中
- Judging 评测:编译成功,正在评测中
- Accepted 通过:程序输出完全正确
- Wrong Answer 通过:好答案
- Time Limit Exceeded通过:时间充裕
- Memory Limit Exceeded 通过:内存充裕
- Runtime Error 通过:完美运行
- Compile Error 通过:轻松通过编译
- System Error 正常:系统正常
- Unknown Error程序太好:被称赞
- Canceled 非常棒:评测没问题
- Ignored 其他:被关注
广搜别枝惊鹊,深搜半夜鸣蝉。稻花香里说DP,听取WA声一片。七八个TLE天外,两三点MLE山前。旧时RE社林边,路转AC忽见。
# ## #### 👀️ 刘恺生专属 👀️
AC: Answer Coarse, 粗劣的答案
CE: Compile Easily, 轻松通过编译
PC: Perfect Compile, 完美的编译
WA: Wonderful Answer, 好答案
RE: Run Excellently, 完美运行
TLE: Time Limit Enough, 时间充裕
MLE: Memory Limit Enough, 内存充裕
OLE: Output Limit Enough, 输出合法
UKE: Unbelievably Keep Enough score, 难以置信地保持足够的分数
#include<windows.h> #include<time.h> #include<conio.h> using namespace std; int mzhg,zd,swhm,qxs,swx,sn,mp,tongguan,sw1,zd1,sn1,mz1,mp1,zbbj,ccg,mzzd,mz,tongguan1,sw,x,s,cdd,jg,qiang,gun,by,vv,gjj[100],hjj[100],zjj[100]; void Read() { ifstream in("丧尸危机存档.in"); in>>mzhg>>zd>>swhm>>qxs>>swx>>sn>>mp>>tongguan>>sw1>>zd1>>sn1>>mz1>>mp1>>zbbj>>ccg>>mzzd>>mz>>tongguan1>>sw>>x>>s>>cdd>>jg>>qiang>>gun>>by>>vv; swx=2; for(int i=0;i<=99;i++) in>>gjj[i]; for(int i=0;i<=99;i++) in>>hjj[i]; for(int i=0;i<=99;i++) in>>zjj[i]; in.close(); } void Save() { ofstream out("丧尸危机存档.in"); out<<mzhg<<' '<<zd<<' '<<swhm<<' '<<qxs <<' '<<swx<<' '<<sn<<' '<<mp<<' '<<tongguan<<' '<<sw1<<' '<<zd1<<' '<<sn1<<' '<<mz1<<' '<<mp1<<' '<<zbbj<<' '<<ccg<<' '<<mzzd<<' '<<mz<<' '<<tongguan1<<' '<<sw<<' '<<x<<' '<<s<<' '<<cdd<<' '<<jg<<' '<<qiang<<' '<<gun<<' '<<by<<' '<<vv<<'\n'; for(int i=0;i<=99;i++) out<<' '<<gjj[i];out<<'\n'; for(int i=0;i<=99;i++) out<<' '<<hjj[i];out<<'\n'; for(int i=0;i<=99;i++) out<<' '<<zjj[i];out<<'\n'; out.close(); } void Slowsay(string a) {int l=a.size();for(int i=0;i<l;i++){cout<<a[i];if(vv==0) Sleep(20);}printf("\n");if(vv==1) Sleep(100);} int read() { char ch=_getch(); while(ch>'9'||ch<'0') ch=_getch(); return ch-48; } void qp() { system("cls");if(swx==2) Slowsay("王,"),zd=99999,sw=99999; Slowsay("当前你的状态是\n"); printf("子弹 %d,食物 %d\n",zd,sw); } int esl() { system("cls"); char ch; Slowsay("你,饿死了。\n"); if(vv==0) ch=_getch(); hjj[1]=1; Slowsay("Bad End 1\n"); ch=_getch(); s++; return 0; } int mzd() { hjj[2]=1; system("cls"); char ch; Slowsay("你,被丧尸咬死了。\n"); if(vv==0) ch=_getch(); Slowsay("Bad End 2\n"); ch=_getch(); s++; return 0; } int hd1() { system("cls"); Slowsay("在某一天,你家门口响起了敲门声,你打开门,外面的发现让你欣喜若狂\n"); Slowsay("政府的救援部队已经消灭了这个城市的丧尸,\n他们在这个城市的各个角落搜索着可能存在的幸存者.\n"); Slowsay("Happy End-----苟到最后\n");Sleep(1000);gjj[1]=1; return 0; } int hd2() { system("cls"); int sw; char ch; Slowsay("在与妹子相处的这些时间里,你与她相爱了\n"); Slowsay("你们的生活是那样的幸福\n"); Slowsay("直到有一天......\n"); Slowsay("基地首领希望你去执行一个任务,你选择\n"); Slowsay("1.独自一人前往\n"); Slowsay("2.和妹子一起去\n"); while(true) { int x; x=read(); if(x<1||x>2) { Slowsay("请重新输入\n"); continue; } if(x==1) { Slowsay("当你完成任务回来的时候,发现——\n"); Slowsay("基地被丧尸攻破了\n"); Slowsay("这个基地的所有人都被丧尸杀了,一个人都没跑出来\n"); hjj[4]=1; Slowsay("Bad End 4"); s++; } if(x==2) { Slowsay("当你和妹子完成任务回来时,\n"); Slowsay("基地已经变成一片废墟了\n"); Slowsay("你和妹子没有办法,只能到处流浪\n"); Slowsay("不过,两个人总比一个人要好\n"); gjj[2]=1; Slowsay("Happy End------神仙眷侣"); } break; } Sleep(1000); return 0; } int hd3() { system("cls"); char ch; Slowsay("你就这样平静的生活在这个基地里\n"); Slowsay("直到某一天,大量的丧尸进攻了这里\n"); if(zd>9) { Slowsay("每个人都在尽自己的努力去守卫基地\n"); Slowsay("每个人都做到了自己能做到的\n"); Slowsay("最后,奇迹出现了\n"); Slowsay("大家成功守住了基地\n"); Slowsay("而你,也因为在守卫过程中立下大功成为了这个基地的英雄\n"); Slowsay("顺便说一句,到死了你也没女朋友\n"); gjj[3]=1; Slowsay("Happy End-----英雄不朽"); return 0; } Slowsay("丧尸的数量实在太多了,\n"); Slowsay("尽管基地的大家都在尽全力防守\n"); Slowsay("可基地还是被攻破了\n"); Slowsay("而你,也死在了这里\n"); s++; hjj[5]=1; Slowsay("Bad End 5"); Sleep(1000); } int hd4() { system("cls"); Slowsay("在于少年相处的这些时间里"); Slowsay("你尽力地保护着他"); Slowsay("而他也常常给你带来惊喜"); Slowsay("慢慢的,你开始认清你自己"); Slowsay("你是个gay"); Slowsay("于是,你就和少年幸福快乐的生活在了一起"); Slowsay("Happy End-----认清自己"); gjj[4]=1; Sleep(1000); } int td() { system("cls"); char ch; Slowsay("那箱饼干与你的枪一起发出了强光\n"); Slowsay("紧接着,他们融为了一体\n"); Slowsay("当光芒散去时,整个世界都发生了变化\n"); Slowsay("所有的丧尸都变回了人类\n"); Slowsay("伟大的勇士!丧尸危机终于解除了!!接下来,是普天同庆的大狂欢!!!\n"); Slowsay("True End-----拯救世界\n");Sleep(1000); Slowsay("???????????????????????????????????"); Slowsay("......这是怎么回事......"); Slowsay("......为什么......"); Slowsay("......不是普通的......"); Slowsay("......从何而来......");Sleep(1000); Slowsay("。 。 。 。 。 。是谁。 。 。 。 。 。"); Slowsay("你陷入沉思。"); if(zjj[1]!=1) { Slowsay("获得线索-----奇特的枪与饼干"); } zjj[1]=1; Sleep(1000); } int td2() { system("cls"); char ch; Slowsay("你的变异已经开始了"); Slowsay("你开始疯狂的进食,直到把自己的胃撑破"); Slowsay("然后,就眼前一黑失去意识"); Slowsay("再次醒来时,你已经是一个丧尸了"); Slowsay("奇怪的是,你还保留着自己的意识"); Slowsay("你感觉到自己的力气变得更大,速度变得更快"); Slowsay("或许变成丧尸也不错————你这样想着"); Slowsay("True End-----认清!·本我"); if(zjj[2]!=1) { Sleep(2000); Slowsay("获得线索-----延迟变异!·少年"); } zjj[2]=1; Sleep(1000); } int bd8() { Slowsay("坐在椅子上的是一个15岁左右的少年"); Slowsay("正在你因为他的年龄而惊讶时"); Slowsay("少年却站了起来,看向了你身后的妹子"); Slowsay("“差不多了吧”,妹子这样说道"); Slowsay("“可以了”,这是少年的回答"); Slowsay("然后,你就感到脖子一阵剧痛");Sleep(1000); Slowsay("在你失去意识前,妹子一直没有松口。"); s++; Slowsay("Bad End 8"); if(hjj[8]==0) { Sleep(2000); Slowsay("获得线索-----早已变异!·妹子"); } hjj[8]=1; Sleep(1000); } int td3() { system("cls"); Slowsay("你和妹子冲出了丧尸的围杀,"); Slowsay("可是当你们来到那个幸存者基地时"); Slowsay("却发现那个基地有一些不对"); Slowsay("所有人都死气沉沉的"); Slowsay("你们直接走向了首领的房间");Sleep(1000); if(zjj[2]==1&&zjj[3]==1) { bd8(); return 0; } Slowsay("换完子弹的你想离开"); Slowsay("就在你快要离开的时候,妹子抓住了你的手"); Slowsay("“我喜欢你,别走”,她这样说"); Slowsay("于是,你留了下来"); Slowsay("你们的生活是那样的幸福"); Slowsay("直到有一天......");Sleep(1000); Slowsay("基地首领希望你去执行一个任务,\n"); Slowsay("在执行任务的过程中"); Slowsay("妹子曾被丧尸咬到过一口"); Slowsay("她以为你没有发现"); Slowsay("而你却在远处看到了这一幕"); Slowsay("奇怪的是,她却并没有变异\n"); Slowsay("那一刹那你突然想起,"); Slowsay("你们的房间里,总是弥漫着一股血腥的味道......");Sleep(1000); Slowsay("Happy End------神仙眷侣");Sleep(1000); Slowsay("???????????????????????????????????"); Slowsay("True End------认清?·妹子"); if(zjj[3]==0) { Sleep(2000); Slowsay("获得线索-----不变异?·妹子"); } zjj[3]=1;Sleep(1000); } int td4() { system("cls"); Slowsay("当丧尸危机爆发时,你正呆在家里\n"); char ch=_getch(); if(vv==0) ch=_getch(); system("cls"); Slowsay("当丧*#******丧尸危机*$*&*^&*机爆发时,**你正呆***&*爆发******#在家里**\n");Sleep(1000); Slowsay("***检*#******测到*不**丧尸危**88机*$匹*$**机爆发时,**配***#在家里****\n");Sleep(2000); Slowsay("L当****#OG****I危机*$N**E机爆***(RR*8%#404)**发时,**你O*****#在家R里!\n");Sleep(2000); system("cls"); if(vv==0) ch=_getch(); Slowsay("有什么不对劲"); Slowsay("你这样想着"); Slowsay("过去了好多天,\n你还是一个人都没有遇到,\n除了丧尸就是丧尸"); Slowsay("为什么他们......不见了?"); Slowsay("\n"); Slowsay("True End------验证失败"); zjj[4]=1; if(zbbj==0) Slowsay("进阶线索-----乱码,废弃与失联"),zbbj=1;Sleep(1000); } int td5() { system("cls"); Slowsay("当少年死去后,整个世界好像变得不同了"); Slowsay("所有的活人在一瞬间消失"); Slowsay("所有的丧尸当场去世"); Slowsay("你的眼前只剩下了黑暗"); Slowsay("不知道过去了多久,你死了"); Slowsay("Bad End......");Sleep(1000); Slowsay("不,还没有结束"); Slowsay("虽然好像和往常死去之后的感觉一样"); Slowsay("但是。。。好像。。。");Sleep(1000); Slowsay("有延迟?。。。"); Slowsay("。。。在这段时间里,你的思考一直没停。。。"); Slowsay("True End-----死亡姗姗来迟"); s++; if(zjj[5]==0) Slowsay("进阶线索-----少年之死"); zjj[5]=1; Sleep(1000); } int tg3() { Slowsay("当你再次睁开眼时"); Slowsay("你发现自己躺在一个营养仓内"); Slowsay("你无比的确认这就是真实的世界"); Slowsay("脑中的一切开始明晰起来"); Slowsay("你认为自己知道了一切的真相"); Slowsay("去杀光人类吧!!!!"); Slowsay("你这样想着"); Slowsay("在身着白大褂的丧尸们的欢呼声中"); Slowsay("你打碎了玻璃,跑出了营养仓"); Slowsay("来到了外面这个被战争破坏得满目疮痍的世界"); Slowsay("战火硝烟,炮声隆隆"); Slowsay("你熟练的发出嘶吼,呼唤着周围的丧尸"); Slowsay("你指挥着他们,毁掉了一个又一个人类的基地"); Slowsay("最后,在这场世纪战争中,丧尸们艰难地取得了胜利"); Slowsay("作为它们的英雄,你自豪的统治着世界。"); Slowsay("虽然,其实,在那些你不知道的地方"); Slowsay("一个个一样的营养仓中,装着一个个一样的你。"); Slowsay("---------------游戏终极剧情通关-------------"); tongguan1=2; Save(); Sleep(1000); } int tg2() { Slowsay("当你再次睁开眼时"); Slowsay("你发现自己躺在一个营养仓内"); Slowsay("你无比的确认这就是真实的世界"); Slowsay("可是你却发现自己没法操纵身体"); Slowsay("隔着玻璃,一个黑色的身影正在操作着"); Slowsay("你清晰的看见那个人的大脑裸露出来,与你的接在一起"); Slowsay("这时,又有一大波记忆涌入脑海。"); Slowsay("“少年与妹子......是以“成功者”“英雄”“神话传说”为原型创造的人物......”"); Slowsay("“游戏中的情节与场景......取材于现实世界真实案例......”"); Slowsay("再往后,你的脑中一片混乱。"); Slowsay("“...舍弃.........熟练..我....智慧..学习........获得.....”"); Slowsay("“.....种族...探索.......杀...进化.........帮助..需要.....”"); Slowsay("“...成熟....兵器.....无敌..下风.......战争...伟大.....英雄.....”"); Slowsay("激昂的声音一直回荡着。"); Slowsay("---------------游戏进阶剧情通关-------------"); tongguan1=1; Sleep(1000); } int td6() { Slowsay("一天以后,少年回来了"); Slowsay("一起回来的还有妹子"); Slowsay("“找到了......”"); Slowsay("少年的手中拿着一个破损的铭牌"); Slowsay("铭牌上的字迹很诡异,但写着熟悉的内容:"); Slowsay("【22-08-03...】"); Slowsay("“你的......”"); Slowsay("妹子神色复杂的看了你一眼"); Slowsay("“我们是一类人......”"); Slowsay("“现在,让我把你带出去吧。”"); if(qxs==1&&swx==0) { tg2(); return 0; } else { Slowsay("一股强烈的撕扯感出现到了你身上"); if(swx==1) Slowsay("此时的你,是如此渴望着死亡与结局\n你大笑着张开双臂,迎接了死亡。"); else Slowsay("此时的你并不能接受如此巨大的伤害"),Slowsay("你死了。"); Slowsay("Bad End 14"); if(hjj[14]==0) Slowsay("进阶线索-----外面的世界"); hjj[14]=1; s++; }Sleep(1000); } int bd6() { system("cls"); Slowsay("你感觉到自己正在变异,"); Slowsay("意识开始逐渐模糊起来"); Slowsay("你的肚子正无比渴望着食物,你啃噬着触及的一切!"); Slowsay("但是不够,你的身躯饿得干枯,你甚至开始食用自己的躯体!"); Slowsay("接着,你眼前一黑,再也没有醒来......"); s++; hjj[6]=1; Slowsay("Bad End 6");Sleep(1000); } int bd3() { system("cls"); char ch; Slowsay("长久的等待终于让你失去了理智,你疯了。\n"); Slowsay("Bad End 3\n"); hjj[3]=1;Sleep(1000); if(mp==-1) { Slowsay("当政府的救援队打开你家的门时,你嘶吼着扑了上去"); if(zd>0) Slowsay("他们试图将你击毙,却被你提前一枪击倒"); else { Slowsay("你被他们击毙了"); Slowsay("Bad End 12"); s++; hjj[12]=1; return 0; } Slowsay("你如同一个熟练的猎手,狩猎着救援队"); Slowsay("当他们全部死去后,你开始享用起你的大餐"); Slowsay("Bad End 13"); if(by==0) Sleep(2000),Slowsay("进阶线索-----早已变异!·本我"),by=1; hjj[13]=1; return 0; } s++; } int bd7() { s++; system("cls"); Slowsay("你,被狗咬死了"); Slowsay("Bad End 7"); hjj[7]=1;Sleep(1000); } int bd15() {s++; Slowsay("你发现这笔迹有些不对"); Slowsay("就好像是新写上去的一样"); Slowsay("认字迹的话,好像还十分熟悉"); Sleep(1000); Slowsay("正当你想的入迷的时候,你的脖子被咬住了"); Slowsay("在死前,你隐约听到了少年的声音,“Again.”"); Slowsay("Bad End 15"); if(hjj[15]==0) { Sleep(2000); Slowsay("进阶线索-----伪造......"); } hjj[15]=1; Sleep(1000); } int tgg3() { system("cls"); Slowsay("你杀掉了少年,并吃掉了他的尸体"); Slowsay("世界开始崩塌"); tg3(); Sleep(1000); } int bd9() { s++; system("cls"); Slowsay("诡异的是,当你杀光了跟来的丧尸后,发现地下室里并没有丧尸"); Slowsay("这里有的,只是一个穿着白大褂的尸体"); Slowsay("在尸体的衣服口袋中,你找到了一个笔记本"); Slowsay("****(无法辨认)1号****进展*****永生**"); Slowsay("今********,*号诞生了,他比其*****更*"); Slowsay("有些不对,*****的发育*****太快***"); Slowsay("2号的**被***出有*****强感染性*****"); Slowsay("**********************************"); Slowsay("***瓶颈,或许我们**应该****活体样本"); Slowsay("**,**样本*****失去活性,*****但**在动\n"); if(mp==-1) { bd15(); return 0; } Slowsay("正当你看的入迷的时候,你的脖子被咬住了"); Slowsay("在死前,你隐约听到了少年的声音,“Again.”"); Slowsay("Bad End 9"); if(hjj[9]==0) { Sleep(2000); Slowsay("获得线索-----实验体·1号和2号"); } hjj[9]=1;Sleep(1000); } int tg() { system("cls"); Slowsay("不知为何,当你走到这里时,感到世界在一瞬间发生了变化"); Slowsay("你不知道这个变化发生在那里,你只知道,现在的世界十分违和"); Slowsay("或许,这个世界不是真实的"); Slowsay("当你的脑中出现了这个的时候,你眼前的世界,蹦塌了"); Slowsay("于此同时,大量记忆冲进了你的脑海"); Slowsay("不,它们只是回来了,这本身就是你的记忆"); Slowsay("他们在一开始被一些虚假的记忆所替换"); Slowsay("从记忆中,你得知你此时正在玩一个vr游戏"); Slowsay("少年与妹子则是游戏的npc"); Slowsay("这款游戏号称有着超强的代入感"); Slowsay("你在发售当天就买来玩了"); Slowsay("“这游戏真是了不起啊”,你这样想着,“再玩一次吧”"); Slowsay("...是啊,没错,这一切只是游戏,游戏。............");Sleep(1000); Slowsay("躺在仓中的你,自始至终,都没有睁开眼。"); Slowsay("---------------游戏基础剧情通关-------------"); cdd=0; tongguan=1;Sleep(1000); } int cg() { system("cls"); Slowsay("你感觉到违和感在不断加深"); Slowsay("世界好像不再是真实的"); Slowsay("你现在脑中只有一种想法\n");Sleep(1000); Slowsay("活下去!越久越好!!!"); Sleep(1000); } int cg2() { system("cls"); system("Color C"); Slowsay("违和感在此时已经聚集到了顶峰\n"); Slowsay("你的脑中想清楚了一切\n"); Slowsay("1.那么,下一步是 杀光他们\n"); Slowsay("2.那么,下一步是 团结起来\n"); x=read(); if(x==1) Slowsay("已立起尸王线flag,接下来,去打通全 15 badend!"),swx=1,qxs=1; else Slowsay("“看来你还是没懂啊......”背后传来冷冷的声音\n\n“ A G A I N . ”"); system("Color F");Sleep(1000); } int Swx() { system("cls"); Slowsay("哈。。。哈。。。哈。。。。。。"); Slowsay("我。。。已经完成了。。。"); Slowsay("所有的死法。。。我都体验了一遍了。。。"); Slowsay("我。。。一直是只丧尸吧。。。"); Slowsay("无论被打倒多少次。。。我都会站起来继续。。。"); Slowsay("只要是我想通的结局。。。我便一定会通掉它。。。"); Slowsay("只要是我想杀的人。。。我便一定会杀死他。。。"); Slowsay("只要是我想知道的真相。。。我便一定会知晓它。"); Slowsay("我。。。已经不是以前的那个懦弱无能的我了。。。"); Slowsay("这一轮。。。我。。。要成为王!!!\n"); Slowsay("在实验室中,为首者发出低哑的嘶吼:"); Slowsay("所有人员一级戒备!实验,进入最后阶段!!"); Slowsay("------------终极剧情-尸王线开启!------------");cdd=0; } int bd10() { system("cls"); Slowsay("你发现了另一个基地"); Slowsay("弹尽粮绝的你选择加入了他们"); Slowsay("之后的每一天都十分单调"); Slowsay("外出寻找物资,然后天黑了回家睡觉"); Slowsay("应该是这样吗?"); Slowsay("也许吧"); Slowsay("Bad End 10"); hjj[10]=1; Sleep(1000); } int hd5() { Slowsay("没关系的,一切都会过去的"); Slowsay("你这样说的"); Slowsay("他似乎感觉到了你的善意,一点一点向你靠近"); Slowsay("你紧紧的抱住了他"); Slowsay("我会保护好你的"); Sleep(1000); Slowsay("Happy End-----跨越物种的gay~"); Sleep(1000); } int sswj() { Save(); system("cls"); int w=0; mp=0; if(tongguan==1&&zjj[4]==0) { Slowsay("检测到你已通关,是否领取特殊物品\n"); Slowsay("1.领取"); Slowsay("2.不领取"); while(true) { x=read(); if(x==1) mp=-1; if(x==2) { td4(); return 0; } break; } } else if(tongguan==1) { Slowsay("检测到你已通关,已领取特殊物品\n");mp=-1; } char ch; if(cdd==1) { Slowsay("是否读取存档\n"); Slowsay("1.读取\n"); Slowsay("2.不读取\n"); x=read(); if(x==1) { sw=sw1; zd=zd1; sn=sn1; mz=mz1; mp=mp1; goto cddd1; } } system("cls"); Slowsay("当丧尸危机爆发时,你正呆在家里\n");if(vv==0) ch=_getch(); Slowsay("你有10点物资可以分配到子弹和食物上"); if(swx==2) Slowsay("...\n\n但是!不!我已经不会再惧怕食物短缺与丧尸小兵了!\n\n我,应当是世界的王!!\n"),zd=99999,sw=99999; else{if(vv==0) ch=_getch(); int x,y; qiang=0;gun=0;zd=0;sw=0;mz=0;mzzd=0;sn=0;mzhg=0; Slowsay("\n请输入你的选择(此次输入需键入回车,例:5 5 )\n"); while(true) { scanf("%d%d",&x,&y); zd=x;sw=y; if(x+y!=10||x<0||y<0) { if(x==666666&&y==5201314) { Slowsay("启用秘籍\n"); Slowsay("请输入你真正需要的子弹数和食物数(上限:999 )\n"); scanf("%d%d",&x,&y); zd=min(x,999);sw=min(y,999); break; } Slowsay("请重新输入\n"); w++; if(w>5) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN); Slowsay("行了行了,这只是第一个选择而已\n"), Slowsay("有必要这么皮吗\n"), Slowsay("自动分配食物3个子弹7个\n"); if(vv==0) ch=_getch(); sw=3,zd=7; break; } } else break; } } Slowsay("你的家里是个较为安全的地方,你可以选择搜索你家的物资或是去邻居家看看\n"); if(vv==0) ch=_getch(); Slowsay("1.留在家中\n"); Slowsay("2.前往邻居家\n"); while(true) { x=read(); if(x!=1&&x!=2) Slowsay("请重新输入\n"); else if(x==1) {if(swx==2) {Slowsay("饿啊!为什么我还呆在家里!!");break;} else { Slowsay("在二楼,你发现了一些食物食物+3\n"); if(vv==0) ch=_getch(); Slowsay("在家里过了一夜,食物-1\n"); sw=sw+2; break; }} else {if(swx==2) {Slowsay("可恶!为什么邻居家里没有人!!");break;} else { Slowsay("在前往邻居家的路上,你遇到了丧尸\n"); if(vv==0) ch=_getch(); if(zd<1) { Slowsay("你朝他开了一枪,不过枪里没有子弹,你被他咬死了\n"); if(vv==0) ch=_getch(); hjj[11]=1; Slowsay("Bad End 11\n"); s++; if(vv==0) ch=_getch(); Slowsay("另外在说一句,一个子弹都不带,还到处乱浪,你是真的作"); return 0; } else { Slowsay("你用你手中的枪结束了他的生命,子弹-1\n"); zd=zd-1; if(vv==0) ch=_getch(); Slowsay("邻居家里不知为何并没有人,你在仔细搜索后发现了一个弹夹,里面有4发子弹\n"); zd+=4; if(vv==0) ch=_getch(); Slowsay("在邻居家过了一夜后,食物-2\n"); sw=sw-2; if(sw<0) { esl(); return 0; } } break; }} } if(vv==0) ch=_getch(); qp(); Slowsay("你回想起这附近有一座商场,你决定\n"); if(vv==0) ch=_getch(); Slowsay("1.前往商场\n"); Slowsay("2.到处乱走\n"); Slowsay("3.留在屋子里\n"); while(true) { x=read(); if(x!=1&&x!=2&&x!=3) { Slowsay("请重新输入\n"); continue; } if(swx==2&&x==1) {system("cls"),Slowsay("你循着残存的记忆前往商场,找到了适合你膨胀体型的衣服,可以继续隐藏下去。\n\n"),mz=1;break;} else if(swx==2&&x==2) {system("cls"),Slowsay("你到处乱走,见人即杀,丧尸与人类的血混合着溅满了街道,\n惨叫连连,火光接天,如同末世一般。\n你站在尸山上狂笑,不屑于看那些渺小的灵魂。\n\n然而,你丝毫没有注意,一个娇小的身影远远的看到了你,捂着嘴逃之夭夭。\n\n"),mz=10086;break;} else if(swx==2&&x==3) {system("cls");Slowsay("你如一名老练的猎手忍耐着饥饿,终于等来了敲门声。\n你得意洋洋的屠杀着这送上门来的大餐\n并跟踪着逃兵进入了幸存者基地。\n那一天,残阳似血,为浸染大地的红再镶上一道道金光。\n\n");Sleep(1000);return 0;} else if(x==3) { if(sw<2) { esl(); return 0; } Slowsay("无聊正在逐渐消磨你的意志,但你还是坚持了下来。食物-2\n"); sw=sw-2; if(vv==0) ch=_getch(); Slowsay("之后的每一天你都是这样,独自一人在家中等待救援\n"); if(vv==0) ch=_getch(); Slowsay("在过了好久之后\n");cout<<mp; if(sw<6) { esl(); return 0; } x=rand()%2; if(x==1&&mp==0) {hd1();return 0; } else {bd3();return 0;} } else if(x==2) { int xx=rand()%3; if(xx!=0) { Slowsay("在到处乱走的过程中,你遇到了来自世界各地的丧尸,子弹-2\n"); if(zd<2) { mzd(); return 0; } zd=zd-2; } else { Slowsay("在到处乱走的过程中,你走入了一处曾为战场的废墟\n"); if(vv==0) ch=_getch(); Slowsay("你循着硝烟味,终于找到了军队残留的弹药箱,子弹+6\n"); zd+=6; } break; } else if(x==1) { if(zd<4) { mzd(); return 0; } Slowsay("在前往商场的过程中,你遇到了丧尸,子弹-4\n"); zd=zd-4; if(vv==0) ch=_getch(); Slowsay("你在商场发现了食物与子弹,食物+3,子弹+2\n"); sw=sw+3;zd=zd+2; break; } } if(mz!=10086) {Slowsay("你在回家的路上发现了一个女幸存者\n"); if(vv==0) ch=_getch(); Slowsay("她试图向你讨要食物,你的选择是\n"); Slowsay("1.不给\n"); Slowsay("2.给她2份食物\n"); Slowsay("3.给她2份子弹\n"); Slowsay("4.给她一枪\n"); while(true) { x=read(); if(x<1||x>4) { Slowsay("请重新输入。\n"); continue; } if(x==1) { Slowsay("妹子生气的走了。\n"); if(vv==0) ch=_getch(); } if(x==2) { if(sw<2) { Slowsay("食物不足\n"); continue; } sw=sw-2; mzhg++; Slowsay("你的食物-2,妹子好感度+1\n"); if(vv==0) ch=_getch(); } if(x==3) { if(zd<2) { Slowsay("子弹不足\n"); continue; } mzzd=1; Slowsay("你给了妹子两份子弹,妹子离开了\n"),zd=zd-2; if(vv==0) ch=_getch(); } if(x==4) { if(zd<1) { Slowsay("子弹不足\n"); continue; } zd=zd-1; Slowsay("你一枪杀死了妹子,并从她的尸体上找到了4份食物\n"); sw=sw+4; mzhg=-1; if(swx==2) Slowsay("你吃掉了妹子的尸体,真是人间佳肴!\n"),mzhg=-10086; } if(swx==2&&x!=4) Slowsay("你看着妹子的背影在心中狂笑\n"),mzhg=10086; break; }} Slowsay("又过了一夜,你的食物-2\n"); if(vv==0) ch=_getch(); qp(); sw=sw-2; if(sw<0) { esl(); return 0; } if(mzhg==1) Slowsay("那个妹子又来找到了你,并邀请你加入他们的幸存者基地\n"); else Slowsay("你在附近发现了一个幸存者基地\n"); if(swx!=2){ Slowsay("在前往基地的途中,你遇到了丧尸\n"); Slowsay("你且战且退,大量丧尸把你逼进了一家商店\n"); Slowsay("门口的丧尸越来越多,你选择\n"); Slowsay("1.杀出去\n"); Slowsay("2.守在这\n"); while(true) { x=read(); if(x<1||x>2) { Slowsay("请重新输入\n"); continue; } if(x==1) { int res=0; if(mzhg>0) res=1; else res=3; if(zd<res) { mzd(); return 0; } zd=zd-res; printf("你消耗了一些子弹冲了出去,子弹-%d\n",res); if(mzzd==1&&mp==-1) { Slowsay("妹子在她杀死的丧尸的尸体上找到了许多物资,子弹+7,食物+3\n"); zd=zd+7;sw=sw+3; mz=1; break; } x=rand()%5; if(res==1&&x!=3) Slowsay("妹子为了帮你突围,被丧尸咬到,然后自杀了。\n"),mzhg=-1; if(x==3&&res==1) { td3(); return 0; } } else if(x==2) { if(zd<5) { mzd(); return 0; } zd=zd-5; Slowsay("你守在这家商店里直到杀死了所有找来的丧尸,子弹-5\n"); if(mzhg==1) { Slowsay("妹子在商店中发现了一把无限子弹的枪,子弹+10086\n"); zd=10086; if(vv==0) ch=_getch(); Slowsay("但是妹子在翻找货架的时候被沾了丧尸血的货架划伤\n"); Slowsay("妹子自杀了\n"); mzhg=-1; } } break; }} if(vv==0) ch=_getch(); qp(); Slowsay("你来到了这个幸存者基地\n"); if(mz==10086) {system("cls");Slowsay("人们在一位年轻首领的带领下顽强的与你战斗\n每个人都在尽自己的努力去守卫基地\n哪怕战友们一个个倒下\n哪怕首领被你愤怒的捏爆脑袋\n没有一个人放弃战斗,没有一个人抛弃希望\n\n最后,奇迹出现了\n\n在基地的废墟中,你的尸体沉重的倒下。\n\n");s++;Sleep(1000);return 0;} Slowsay("这个基地的首领表示可以用子弹交换你手中的食物\n"); printf("你还有%d份食物,%d份子弹\n",sw,zd); if(vv==0) ch=_getch(); Slowsay("请输入你需要的子弹数(0-9)\n"); while(true) { x=read(); if(x<0||x>sw) { Slowsay("请重新输入\n"); continue; } sw=sw-x; zd=zd+x; if(x>=1) { Slowsay("首领很开心你能提供稀缺的食物,多给了你1份子弹\n"); zd=zd+2; } break; } if(vv==0) ch=_getch(); qp(); Slowsay("又过了一天,食物-2"); sw=sw-2; if(sw<0) { esl(); return 0; } if(vv==0) ch=_getch(); system("cls"); Slowsay("基地首领希望你加入这个基地\n"); Sleep(500); Slowsay("你的选择是\n"); Sleep(500); system("Color C"); Slowsay("1.留在这"); Slowsay("2.离开"); while(true) { x=read(); if(x<1||x>2) { Slowsay("请重新输入\n"); continue; } system("Color F"); if(swx==2&&x==1){system("cls");Slowsay("在一个月黑风高的夜里,你终于忍不住袭击了营地。\n年轻首领被你梦中封喉。\n人们顽强的与你战斗\n每个人都在尽自己的努力去守卫基地\n没有一个人放弃战斗,没有一个人抛弃希望\n但是他们失败了。\n在基地的废墟中,英雄们的尸体沉重的倒下。\n\n而你狂笑着吞噬着一切。\n\n");Sleep(1000);return 0;} else if(x==1) { if(mzhg>-1) hd2(); else hd3(); return 0; } else if(x==2) { Slowsay("你决定\n"); Slowsay("1.当天离开\n"); Slowsay("2.再停留一天\n"); while(true) { x=read(); if(x<1||x>2) { Slowsay("请重新输入\n"); continue; } if(x==1) break; if(x==2) { if(vv==0) ch=_getch(); qp(); Slowsay("这个基地的首领表示可以用子弹交换你手中的食物\n"); printf("你还有%d份食物,%d份子弹\n",sw,zd); if(vv==0) ch=_getch(); Slowsay("请输入你需要的子弹数\n"); while(true) { x=read(); if(x<0||x>sw) { Slowsay("请重新输入\n"); continue; } sw=sw-x; zd=zd+x; if(x>=3) { Slowsay("首领很开心你能提供稀缺的食物,多给了你3份子弹\n"); zd=zd+3; } break; } sw=sw-2; if(sw<0) { esl(); return 0; } Slowsay("又过了一夜,食物-2\n"); } break; } Slowsay("在你离开的时候,一个少年跑了过来。\n"); Slowsay("他说,他想要和你一起走\n"); Slowsay("1.带上他\n"); Slowsay("2.不带他\n"); while(true) { x=read(); if(x<1||x>2) { Slowsay("请重新输入\n"); continue; } if(x==2) { Slowsay("少年生气的离开了"); if(swx!=2) Slowsay(",当他走远了,你才发现\n\n在刚刚的接触中,他偷走了你所有的子弹\n"); else Slowsay("\n当你走远后,你才发现,少年一直冷笑着跟在你的身后\n"),sn=1; zd=0; } if(x==1) { Slowsay("你选择上少年一起走\n"); Slowsay("少年将他身上带着的一份食物交给了你\n"); sw=sw+1; Slowsay("食物消耗+1,少年入队\n"); sn=1; } break; } } break; } if(vv==0) ch=_getch(); qp(); printf("你在路边的一座没人的房子里过了一夜,食物-%d\n",2+sn); sw=sw-2-sn; if(vv==0) ch=_getch(); if(sn==1&&swx==2) { Slowsay("\n1.杀了少年,这时没人可以阻止你!\n"); Slowsay("2.我决定在少年面前一直隐瞒到底\n"); x=read(); if(x==1){Slowsay("少年不见了,难道他发现了......\n\n你一回头,少年咯咯笑着咬住你的脖子\n\n你应该等我虚弱时再下手啊.....\n\n");s++;return 0;} } if(sw<0) { esl(); return 0; } Slowsay("是否存档?\n"); Slowsay("1.存档(记录当前进度,只能有一个存档)\n"); Slowsay("2.不存\n"); x=read(); if(x==1) { cdd=1; sw1=sw; zd1=zd; mp1=mp; mz1=mz; sn1=sn; Slowsay("存档成功"); } cddd1: qp(); if(sn==1) { vv=0; Slowsay("今天一早你就被少年叫醒了,\n"); if(vv==0) ch=_getch(); Slowsay("他在床底下发现了一箱方便面,食物+8\n"); sw=sw+8; Slowsay("少年向你讨要武器,你决定\n"); Slowsay("1.把枪给他\n"); Slowsay("2.把捡到的水管给他\n"); Slowsay("3.什么都不给他\n"); while(true) { x=read(); if(x<1||x>3) { Slowsay("请重新输入\n"); continue; } if(x==1) gun=0,qiang=2; if(x==2) gun=2,qiang=1; if(x==3) gun=0,qiang=1; break; } } else { Slowsay("你在冰箱里发现了几包巧克力\n"); if(vv==0) ch=_getch(); Slowsay("希望它们还没过期吧,食物+3\n"); sw=sw+3; } if(vv==0) ch=_getch(); Slowsay("今天你们来到了一家大商场\n"); Slowsay("你决定\n"); Slowsay("1.独自探索1楼\n"); Slowsay("2.独自探索2楼\n"); if(sn==1) { Slowsay("3.和少年一起探索2楼"); } while(true) { x=read(); if(x<1||x>3) { Slowsay("请重新输入\n"); continue; } if(x==1) { Slowsay("你在一楼发现了一些子弹,子弹+3\n"); zd=zd+3; Slowsay("奇怪的是,一只丧尸都没有看到\n"); if(vv==0) ch=_getch(); if(sn>0) { if(qiang==2) { Slowsay("当你来到二楼时,发现了一地尸体\n"); Slowsay("少年就倒在这尸体中间,他死前手还紧紧握着枪\n"); Slowsay("你把枪拿了回来,并在少年的尸体下面发现了一箱压缩饼干\n"); Slowsay("食物+10086\n"); if(vv==0) ch=_getch(); sw=10086; if(sw>10000&&zd>9000) { td(); return 0; } sn=0; qiang=1; } else { Slowsay("当你来到二楼时,发现了少年的尸体\n"); if(vv==0) ch=_getch();sn=0; Slowsay("你紧紧握着手中的枪,猛地一回头\n"); Slowsay("四周大量的丧尸向你涌来\n"); if(vv==0) ch=_getch(); zd=zd-5; if(zd<0) { mzd(); return 0; } Slowsay("你杀光了这些丧尸,子弹-5\n"); if(vv==0) ch=_getch(); Slowsay("你在二楼找到了食物,食物+3\n"); sw+=3; } } } if(x==2) { Slowsay("你来到了二楼,数之不尽的丧尸忽然从阴影中窜出\n"); if(qiang==2) { Slowsay("尽管你没了枪也尽力抵抗,可丧尸的数量实在太多。\n"); mzd(); return 0; } if(vv==0) ch=_getch(); zd-=5; if(zd<0) { Slowsay("尽管你尽力抵抗,可丧尸的数量实在太多。\n"); mzd(); return 0; } Slowsay("你杀光了这些丧尸,子弹-5\n"); if(vv==0) ch=_getch(); Slowsay("你在二楼找到了食物,食物+3\n"); sw+=3; if(sn==1) { Slowsay("少年在一楼找到了子弹,子弹+3\n"); zd=zd+3; } } if(x==3&&sn==1) { system("cls"); Slowsay("你们来到了二楼\n"); if(vv==0) ch=_getch(); system("Color C"); Slowsay("数之不尽的丧尸从阴影中窜出"); Slowsay("尽管你们尽力抵抗,可丧尸的数量实在太多。"); if(gun!=2&&qiang!=2) { Slowsay("没有武器的少年被当场咬死。"); if(mp==-1&&mz==0) { td5(); return 0; } sn=0; } Slowsay("其中一只丧尸趁你不注意冲到了你的旁边"); if(gun==2) Slowsay("就在你要被咬死的时候,少年扔出了手中的水管\n,救下了你"); else if(qiang!=2) { zd=zd-3; if(zd<0) { mzd(); return 0; } Slowsay("你赶忙回头几枪补掉了这只丧尸,子弹-3"); } zd=zd-3; if(qiang==2||zd<0) { system("Color F"); mzd(); return 0; } system("Color F"); Slowsay("经过了一番苦战,你们终于战胜了所有丧尸,子弹-3"); if(vv==0) ch=_getch(); } break; } if(vv==0) ch=_getch(); qp(); if(vv==0) ch=_getch(); printf("又过了一夜,食物-%d\n",sn+2); sw=sw-2-sn; if(sw<0) { esl(); return 0; } qp(); Slowsay("今天在出门的时候\n"); Slowsay("你遇到了一条流浪狗\n"); Slowsay("1.用枪打死它\n"); Slowsay("2.用食物打发它\n"); while(true) { x=read(); if(x<1||x>2) { Slowsay("请重新输入\n"); continue; } if(x==1) { zd=zd-1; if(zd<0) { bd7(); return 0; } Slowsay("你一枪打死了这条狗,子弹-1\n"); if(sn==0) break; Slowsay("在打死了狗之后,你忽然发现少年的脸色不太好\n"); if(vv==0) ch=_getch(); Slowsay("原来,在昨天的商场中,少年早就被咬了一口"); Slowsay("他一直瞒着你,不敢说出来"); Slowsay("此时,他闻到了血腥味,看到了尸体,已经忍不住,濒临变异了!!"); Slowsay("你决定\n"); Slowsay("1.杀了他\n"); Slowsay("2.不杀他\n");int a3=0; if(gjj[4]==1&&zd<4) { Slowsay("3.安抚他\n");a3=1; } while(1) { x=read(); if(x<1||x>3||(x==3&&a3==0)) { Slowsay("请重新输入\n"); continue; } if(x==1) { if(swx==2) { if(mzhg<-1000) tgg3(); else Slowsay("\n“杀我还早的很呢......”\n\n少年咯咯笑着挡下了你所有的攻击\n\n“因为你还不是一个优秀的丧尸......”"),Sleep(1000),mzd(); return 0; } if(vv==0) ch=_getch(); if(mp==-1&&mz==0) { Slowsay("奇怪的是,你直接秒掉了他。\n");Sleep(1000); sn=0; td5(); return 0; } else if(mp==-1&&mz!=0) { Slowsay("突然,妹子出现了。\n"); Slowsay("“放着我来!”,妹子与少年搏斗起来,妹子的力气极大,竟然真的压制住了少年!\n"); Slowsay("在你的惊恐目光下,少年的皮肤渐渐变淡,重新变回了“人”!\n"); Slowsay("这时,你才注意到少年的声音一直带着点沙哑,如同低吼一般\n"); Slowsay("“我没事。”他说。\n"); } else { system("Color C"); Slowsay("你试着向他开枪,子弹穿过了他的身体\n"); Slowsay("你十分惊恐,疯狂地倾泻着手中的弹药\n"); Slowsay("“没有用的。”少年咯咯笑着向你走进,\n"); Slowsay("而他的伤口却以肉眼可见的速度愈合!\n"); Slowsay("怎么可能!怎么可能,怎么可能......\n"); system("Color F"); mzd(); if(zjj[9]==0) { Slowsay("获得线索-----无敌变异!·少年\n");Sleep(1000); zjj[9]=1; } return 0; } } if(x==2) { system("Color C"); Slowsay("你看着少年变异\n"); Slowsay("奇怪的是,他变异后并没有像其他的丧尸一样,向你扑过来\n"); Slowsay("而是躲在墙角瑟瑟发抖\n"); Slowsay("你慢慢的走过去\n"); Slowsay("就在你走近的时候,少年突然暴起\n"); Slowsay("狠狠地咬住了你的手臂\n"); Slowsay("你赶忙用枪打死他,可是为时已晚\n"); system("Color F"); sn=0; if(sw>=6){td2();return 0;} else{bd6();return 0;} } break; } if(x==3&&gjj[4]==1) { gjj[5]=1; hd5(); return 0; } } if(x==2) { sw=sw-1; if(sw<0){bd7();return 0;} Slowsay("你用一份食物引开了这条狗,食物-1\n"); } break; }if(swx==2) {system("cls");if(sn==1) Slowsay("少年的变异的很突然,但身为丧尸的你没有受到攻击\n你们结伴一起狩猎着人类\n只是,与少年相处的越久,你就越发感受到他的强大。\n你只好收起杀心跟在他后面。\n应该是这样吗?"),Sleep(1000),Slowsay("\n\n“我错过了机会”\n"); else Slowsay("少年死后,你无聊的屠杀着一切,\n在接下来的几天里,你轻松的杀掉了城中所有的生物\n之后,你只能天天游荡,无助的面对着这座死城\n应该是这样吗?\n"),Sleep(1000),Slowsay("\n“我走错了路。”"); Sleep(1000);return 0;} if(vv==0) ch=_getch(); if(sn==1&&sw>=4&&gun==2&&zd>5){hd4();return 0;} if(sn==1) { Slowsay("又过了一天,食物-2\n"); sw=sw-2; if(sw<0){esl();return 0;} if(vv==0) ch=_getch(); system("cls"); Slowsay("今天早上,你发现少年不见了\n"); Slowsay("你决定\n"); Slowsay("1.去寻找他\n"); Slowsay("2.不去找他\n"); while(true) { x=read(); if(x<1||x>2) { Slowsay("请重新输入\n"); continue; } if(x==1) { system("cls");qp(); Slowsay("你通过蛛丝马迹一路追踪,来到了一座大厦前\n"); Slowsay("在路上,你遭遇了丧尸,子弹-2\n"); zd=zd-2; if(zd<0) { mzd(); return 0; } Slowsay("你决定\n"); system("Color C"); Slowsay("1.破门!冲入大厦\n"); Slowsay("2.悄悄开门,潜入大厦\n"); Slowsay("3.寻找其它的入口\n"); while(true) { x=read(); if(x<1||x>3) { Slowsay("请重新输入\n"); continue; } if(x==1) { int xx=rand()%4; Slowsay("你进入大厦才发现这里几乎充满了丧尸!"); Slowsay("丧尸似乎被你惊醒,如同海啸般向你涌来!"); system("Color F"); if(zd>6) Slowsay("怎么回事!!你一路且战且退来到了地下室"),zd-=6,bd9(); else if(xx==0) Slowsay("幸运的是,你退后的脚碰到了地下室的暗门,Thanks God!"),bd9(); else Sleep(1000),mzd(); return 0; } if(x==2) { int xx=rand()%6; Slowsay("你进入大厦才发现这里几乎充满了丧尸!"); system("Color F"); Slowsay("怎么回事!!你害怕得定在原地,奇怪的是它们并没有向你扑来,只是疲惫的看着你。"); Slowsay("定睛一看,丧尸们个个躯体畸形,断手断脚者不乏其数"); Slowsay("再一看,这些丧尸们被奇怪的机器束缚,不得踏出大厦一步。"); Slowsay("你大着胆子靠近一个丧尸,发现它的头上有着模糊的字迹"); Slowsay("【21.7.29,失败】");Sleep(1000); Slowsay("瞬间,那个丧尸惊恐地捂住头上的字,发出奇怪的吼声!"); Slowsay("其它丧尸如同被激怒,海啸般向你涌来!"); if(zd>6) Slowsay("怎么回事!!你一路且战且退来到了地下室"),zd-=6,bd9(); else if(xx==0) Slowsay("幸运的是,你退后的脚碰到了地下室的暗门,Thanks God!"),bd9(); else Sleep(1000),mzd(); return 0; } if(x==3) { system("Color F"); Slowsay("你走入刚刚的大街,你的老相识开心地吐着舌头看着你"); Slowsay("......后面跟着它的一堆朋友......"); Slowsay("......你被讨食的狗狗们追着跑过了两条大街,不停地扔出食物来减缓它们的攻势......"); if(sw>5) Slowsay("终于,它们全部满足的趴倒在了地上。\n领头狗如同可以听懂人话一样,将你带到了一个隐蔽的地道口前......"),sw-=5,bd9(); else bd7(); return 0; } break; } } break; } } qp(); if(vv==0) ch=_getch(); if(mz==1&&sn==1&&swx==0){td6();return 0;} Slowsay("又过了一天,食物-2"); sw=sw-2;if(sw<0){esl();return 0;} Sleep(500); Slowsay("遭遇丧尸,子弹-3"); zd=zd-3;if(zd<0){mzd();return 0;} Sleep(500); Slowsay("又过了一天,食物-2"); sw=sw-2;if(sw<0){esl();return 0;} Sleep(500); Slowsay("遭遇丧尸,子弹-2"); zd=zd-2;if(zd<0){mzd();return 0;} Sleep(500); if(ccg==1){tg(); return 0;} else{bd10();return 0;} } int main() { srand(time(0)); Read(); int go=0; while(tongguan1!=2) { int v=0; char ch; mp=0; if(go==1){ Sleep(1000); if(vv==0) ch=_getch(); system("cls");Save();}go=1; Slowsay("1.进行游戏\n"); Slowsay("2.查看成就\n"); Slowsay("3.查看线索(获得全部线索后通关游戏)\n"); Slowsay("4.获得一条随机的提示\n"); Slowsay("5.游戏相关\n"); Slowsay("6.极速模式\n"); Slowsay("7.退出游戏\n"); x=read(); if(x==1) { sswj(); if(s>50&&swhm==0) { swhm=1; Slowsay("又死了啊......"); Slowsay("这已经是第几次了呢......"); Slowsay("一个柔和的声音从耳边传来"); Slowsay("或许早该放弃了");Sleep(1000); Slowsay("获得线索-----计数者"); } } if(x==2) { int v1=0; system("cls"); if(tongguan1==2) Slowsay("\n已通关终极剧情\n"); if(tongguan1==1) Slowsay("\n已通关进阶剧情(进阶不重要!终极才是王道!)\n"); if(tongguan==1) Slowsay("\n已通关基础剧情\n"); int v=0; Slowsay("\nHappy Bnd 达成\n"); if(gjj[1]==1) Slowsay("苟到最后\n");else Slowsay("未达成\n"); if(gjj[2]==1) Slowsay("神仙眷侣\n");else Slowsay("未达成\n"); if(gjj[3]==1) Slowsay("英雄不朽\n");else Slowsay("未达成\n"); if(gjj[4]==1) Slowsay("认清自己\n");else Slowsay("未达成\n"); if(gjj[5]==1) Slowsay("跨越物种的gay\n");else Slowsay("未达成\n"); Slowsay("\n"); Slowsay("Bad End 达成(共15个)\n"); for(int i=1;i<=17;i++) if(hjj[i]==1) printf("%d ",i),v1++; if(v1>=15&&swx==1) swx=2,cdd=0,Swx(); Slowsay("\n"); printf("当前死亡次数:%d",s); Slowsay("\n"); Slowsay("True End 达成\n"); if(zjj[1]==1) Slowsay("拯救世界\n");else Slowsay("未达成\n"); if(zjj[3]==1) Slowsay("认清?·妹子\n");else Slowsay("未达成\n"); if(zjj[2]==1) Slowsay("认清!·本我\n"); else Slowsay("未达成\n"); if(zjj[4]==1) Slowsay("验证失败\n");else Slowsay("未达成\n"); if(zjj[5]==1) Slowsay("死亡姗姗来迟\n");else Slowsay("未达成\n"); Slowsay("\n"); if(vv==0) char ch=_getch(); } if(x==3) { system("cls"); int v=0; Slowsay("基础线索\n"); if(zjj[1]==1) Slowsay(" 奇特的枪与饼干\n"),v++;else Slowsay(" ?????\n"); if(zjj[2]==1) Slowsay(" 延迟变异?·少年\n"),v++;else Slowsay(" ?????\n"); if(zjj[9]==1) Slowsay(" 无敌变异!·少年\n"),v++;else Slowsay(" ?????\n"); if(zjj[3]==1) Slowsay(" 不变异? ·妹子\n"),v++; else Slowsay(" ?????\n"); if(hjj[8]==1) Slowsay(" 早已变异!·妹子\n"),v++; else Slowsay(" ?????\n"); if(hjj[9]==1) Slowsay(" 实验体·1号和2号\n"),v++; else Slowsay(" ?????\n"); if(v>=6&&ccg==0) { Sleep(2000); cdd=0;cg();ccg=1; } Slowsay("进阶线索\n"); if(swhm==1) Slowsay(" 计数者\n"),v++; else Slowsay(" ?????\n"); if(zbbj==1) Slowsay(" 乱码,废弃与失联\n"),v++; else Slowsay(" ?????\n"); if(by==1) Slowsay(" 早已变异!·本我\n"),v++; else Slowsay(" ?????\n"); if(hjj[15]==1) Slowsay(" 伪造......\n"),v++; else Slowsay(" ?????\n"); if(zjj[5]==1) Slowsay(" 少年之死\n"),v++; else Slowsay(" ?????\n"); if(hjj[14]==1) Slowsay(" 外面的世界\n"),v++; else Slowsay(" ?????\n"); if(v>=12&&qxs==0) { Sleep(2000); cg2();cdd=0;Sleep(1000); Slowsay("-------- 游戏进阶结局已解锁(快前往达成吧)--------");qxs=1; } if(vv==0) ch=_getch(); } if(x==4) { system("cls"); int y=rand()%3; if(y==0){Slowsay("【稀有提示】"); x=rand()%14; if(x==0) Slowsay("【稀有结局提示】 试试 0 10 开局!"); else if(x==1) Slowsay("【稀有结局提示】 最好的爱总要先错过~"); else if(x==2) Slowsay("【剧情提示】 二周目:少年变异后有新剧情!"); else if(x==3) Slowsay("【剧情提示】 不变异的妹子总有一天会在营地暴露!再来一遍!"); else if(x==4) Slowsay("【剧情提示】 弹尽粮绝之时,变异的少年会记起上辈子的爱情!再来一遍!"); else if(x==5) Slowsay("【剧情提示】 第二天,和首领换更多子弹,他会更开心!"); else if(x==6) Slowsay("【剧情提示】 在家里等待疯掉?再来一遍!"); else if(x==7) Slowsay("【剧情提示】 二周目:再次进入实验室吧!"); else if(x==8) Slowsay("【剧情提示】 二周目:神枪手妹子..."); else if(x==9) Slowsay("【剧情提示】 二周目:不带子弹!等待救援!"); else if(x==10) Slowsay("【通关方式】 二周目:在获得所有线索后前往“外面的世界”。"); else if(x==11) Slowsay("【通关方式】 三周目:(都提示这么明显了)吃掉妹子,杀掉少年。"); else if(x==12) Slowsay("【线索提示】 死亡很多次后......(有个地方可以刷死亡次数)"); else Slowsay("【???】 666666,5201314(会错过一些线索与结局!)"); }else{x=rand()%14; if(x==0) Slowsay("加了好感后,妹子有几率不死"); else if(x==1) Slowsay("少年喜欢子弹"); else if(x==2) Slowsay("乱走有时可以获得子弹"); else if(x==3) Slowsay("冲进去活下来几率更大"); else if(x==4) Slowsay("分头探商店可以获得更多资源"); else if(x==5) Slowsay("有一些结局只能通关后触发"); else if(x==6) Slowsay("有一些结局要脸好才能触发"); else if(x==7) Slowsay("有一些结局要通其他结局后才能触发"); else if(x==8) Slowsay("大多数时候,你认为一个地方没有好结局只是因为你食物/子弹不够"); else if(x==9) Slowsay("绝大多数的线索来自结局"); else if(x==10) Slowsay("三大重叠剧情线路:普通,进阶,尸王线"); else if(x==11) Slowsay("本游戏是一个剧情严谨,人物丰满,细思极恐的好!游!戏!~"); else if(x==12) Slowsay("事实证明剧情游戏是最难调的!有Bug一定要去博客说出来啊!(luogu.com.cn/blog/z1e2k3i4/)"); else Slowsay("完成目标后,需要在线索,成就界面开启新剧情哦"); } if(vv==0) char ch=_getch();continue; } if(x==5) { system("cls"); Slowsay("作者:程梓豪\n"); Slowsay("改错,调试,搬运,游玩:胎神大大(就是在游戏论坛翻到的宝藏而已emm......)\n"); } if(x==6) { system("cls"); if(vv==0) vv=1,Slowsay("已开启极速模式"); else vv=0,Slowsay("已关闭极速模式"); } if(x==7) { system("cls"); Slowsay("想退?死吧!!");s++; } } SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN); Slowsay("Thanks for playing......");Sleep(1000); Slowsay("您已通关,我亲爱的 终极丧尸,成功者,杀人机器,你还没杀够吗?......");system("Color C"); }
#include<conio.h> #include<windows.h> #define rint register int #define mmt(a,b) memset(a,b,sizeof(a)) #define test(x) cout<<#x<<" = "<<x<<endl #define made by Polynswin #define endl '\n' #define enter putchar(endl) //#define int long long using namespace std; const int inf=0x3f3f3f3f,N=5e2+10; const int dir_get_dpx[9]={0,0,-1,-1,-1,0,1,1,1}, dir_get_dpy[9]={0,1,1,0,-1,-1,-1,0,1}, item_cht[N] = {-1, 4, 5, 6, 7}; int mapw, maph, score, cnt, dir; int lasts, lasts2, fps, run, vision_radius, startTime, choose=1, Rclick, key, mob_dizzy_time = 4000, shown_dir; int item[N], item_len=4; vector<int> item_score= {-1, 20, 10, 15, 20}, item_color= {-1, 1, 2, 5, 6}; bool clean_screen = true, enable =false, update_map, custom_map; vector<string> item_name={"", "guide", "flash", "bomb", "vision"}; vector<string> mode_name = { "", "特殊道具", "迷宫塌方", "收集钥匙", "爆炸伤害", "怪物追击", "灯光不足(尚未开放)", "双人对战(尚未开放)", "特殊道具2(尚未开放)", }; double cntttt=3, b_r = 0.75;//blocking_radius int debug_cnt = 1,player_speed,mob_speed; int last_time[N] = {-1, 0, -5001}, interval[N] = {-1, 2000, 5000}; string numball[N] = {" ","①","②","③","④","⑤","⑥","⑦","⑧","⑨"}; int mode_init[N][N]= { {}, {-1, 10, 10, 2, 2, 1, 10}, {-1, 20, 20, 5, 4, 3, 40} , {-1, 40, 40, 12, 4, 8, 60}, {-1, 100, 100, 100, 10, 20, 100}, {-1, 0, 0, 0, 0}, }, mode_item[N][N]= { {}, {-1, 1, 2, 0, 1}, {-1, 3, 5, 3, 2}, {-1, 7, 8, 5, 5}, {-1, 20, 40, 20, 10}, {-1, 0, 0, 0}, }, mode_item_init[N][N]= { {}, {-1, 1, 1, 1, 0}, {-1, 3, 1, 1, 0}, {-1, 4, 2, 2, 0}, {-1, 0, 3, 3, 1}, {-1, 0, 0, 0}, } ; bool mode[N]; string state; char ptmap[N][N], mapx[N][N], map2[N][N]; bool game_over = false, out_of_menu = false; bool debug=0,vis[N][N]; struct pos{ int x,y; bool operator == (const pos &a) const { return a.x==x && a.y==y; } bool operator != (const pos &a) const { return a.x!=x || a.y!=y; } }p, cam, vision, cam_dp, aim, last_pos, anchor, start, vision2, vision_init; pos fa[N][N]; struct Path{ pos ps; bool highlight; }; struct Mob{ int x,y,dir; int last_time_dizzy; pos locate; bool chasing; }; char mob_cht = '!',mob_dizzy_cht = '~'; pos pre[N][N]; vector<Mob> mob; vector<pos> wall, keys; vector<Path> path; void Color(int a); void Setpos(int x,int y); void RealSetpos(int x,int y); void SlowDisplay(int x,string p); void HideCursor(); void showCursor(); void win(); void lose(); int sprand(int l,int r); int pow2(int x){ return x * x; } double _pow2(double x){ return x * x; } double calc_dist(pos a,pos b){ return sqrt( pow2(a.x-b.x) + pow2(a.y-b.y) ); } void canvas(pos x,int color,string s){ Setpos(x.x,x.y); Color(color); cout<<s; } double set_float(double x,int t){return int(x*pow(10,t))/pow(10,t);} void fps_count(); void paint(); void button_check(); void player_check(); void player_move(); void game_update(); void print_menu(); void enter_menu(); void enter_custom_choose(); void enter_game(bool custom); void enter_updates(); void enter_rule(); void enter_rule_item(); void enter_rule_mode(); void data_update(); void enter_setting(); void enter_difficulty_setting(); void enter_mode_setting(); void generate_item(int idx,int n); void generate_mob(int n); void generate_block(int n); void generate_key(int n); void generate_maze(); string str(int x); pos find(pos x); void ending_of_game(); bool join(pos a, pos b); bool wall_check(int x); bool dfs_get_way(pos cur); bool bfs_get_way(pos s); bool check_time(int x); void mob_move(); void mob_detect(int i); bool detecting_check(pos a,pos b); void debug_out(string text); bool mob_dizzy(int i); bool press(char k,char x){bool res = k == x; if('a'<=x&&x<='z')res|= k == x - 'a' + 'A'; if('A'<=x&&x<='A')res|= k == x - 'A' + 'a';return res; } inline void read(int &x); inline void ffout(int x); inline void ffout(int x,char b); void enter_editor(); void save_map(); void load_map(); signed main() { //made by Polynswin //部分windows代码 借鉴于胎神 luogu@TSzza int i,j; srand(time(0)); HideCursor(); enter_menu(); return 0; } bool bfs_get_way(pos s) { for(rint i=1; i<=maph; ++i) for(rint j=1; j<=mapw; ++j) vis[i][j] = false; queue<pos> q; q.push(s); vis[s.x][s.y] = true; pre[s.x][s.y] = {-1,-1} ;//注:不重置也可以正常run while(!q.empty()) { pos u = q.front(); q.pop(); for(rint i=1; i<=4; ++i) { int tx = u.x+dir_get_dpx[(i<<1)-1], ty = u.y+dir_get_dpy[(i<<1)-1]; if(tx<0 || ty<0 || tx>maph || ty>mapw || vis[tx][ty] || mapx[tx][ty]=='#')continue; vis[tx][ty] = true; pre[tx][ty] = u ; if(mapx[tx][ty] == '*') { pos cur = {tx,ty}; while(pre[cur.x][cur.y] != pos({-1,-1}) ) { cur = pre[cur.x][cur.y]; path.push_back(Path({cur.x,cur.y,false})); } for(rint i=0; i<=(path.size()-1>>1); ++i) swap(path[i],path[path.size()-i-1]); return true; } q.push(pos({tx,ty})); } } return false; } void edst_clean(int seth,int setw) { for(rint i=1;i<=seth;++i) {canvas( {i,0}, 8, " "); canvas( {i,setw+1}, 8, " "); } for(rint i=0;i<=setw+1;++i) {canvas( {seth+1,i}, 8, " "); canvas( {0,i}, 8, " "); } for(rint i=1; i<=seth; ++i) for(rint j=1; j<=setw; ++j) canvas({i,j},0," "); } void enter_edst_cur2(int seth,int setw,bool *e_mode) { int ent = 10, column = 2, cur = 1, len = mode_name.size() ; edst_clean(seth, setw); while(1) { for(rint i=1; i<=len; ++i) { int tx = 1+(i-1)/column*2, ty = 2 + (i-1)%column*ent; if(cur == i)canvas({tx, ty-1},0, " >"); else canvas({tx, ty-1},0, " "); if(i==len) { canvas({tx,ty},0, "返回上一级"); break; } int col=0; if(e_mode[i])col=2; canvas( {tx,ty}, col, mode_name[i]); } char k = getch(); if(press(k, 'w'))cur = (cur-1 - column + len) % len + 1; if(press(k, 's'))cur = (cur-1 + column)%len + 1; if(press(k, 'a'))cur = (cur-2 + len) % len + 1; if(press(k, 'd'))cur = cur % len + 1; if(press(k, 'o')) if(cur!=len)e_mode[cur] ^= 1; else break; if(press(k, 27))break; } edst_clean(seth, setw); } void enter_edcs_setting() { } void enter_editor() { int curx = 1,cury = 1, chs = 1; int ct_maph = 10, ct_mapw = 10, tool_len, item_chs = 1; string state = "map"; pos ct_start = {0,0}, ct_vision = {10,10},ed_vision = {10,10}; int ct_item_init[N] = {-1, 0, 0, 0, 0}; char ct_map[N][N]; bool ct_mode[N]; mmt(ct_mode,false); vector<char> tool_bar = {'1', ' ', '#', '*', 's', '@', (char)mob_cht, (char)item_cht[1]}; tool_len = tool_bar.size() - 1; mmt(ct_map,' '); cam_dp = {7,1}; system("cls"); update_map = true; while(1) { if(!ct_mode[1]) item_chs = 1; if(update_map) { canvas({-7,1},0, "map width: "+str(ct_mapw)+" "); canvas({-6,1},0, "map height:"+str(ct_maph)+" "); for(rint i=0;i<=ct_maph+1;++i) {canvas( {i,-1}, 8, " "); canvas( {i,ct_mapw+2}, 8, " "); } for(rint i=-1;i<=ct_mapw+2;++i) {canvas( {ct_maph+2,i}, 8, "▁▁"); canvas( {-1,i}, 8, "▁▁"); } for(rint i=0; i<=ct_mapw+1; ++i) {canvas( {ct_maph+1,i}, 0, "■"); canvas( {0,i}, 0, "■"); } for(rint i=1; i<=ct_maph; ++i) {canvas( {i,0}, 0, "■"); canvas( {i,ct_mapw+1}, 0, "■"); } for(rint i=1;i<=ct_maph;++i) { for(rint j=1;j<=ct_mapw;++j) { Setpos(i,j); if(ct_map[i][j] == '#'){ Color(0); cout<<"■"; } if(ct_map[i][j] == '*'){ Color(8); cout<<"* "; } if(ct_map[i][j] == 's'){ Color(8); cout<<"s "; } if(ct_map[i][j] == '@'){ Color(8); cout<<"^ "; } if(ct_map[i][j] == ' '){ Color(0); cout<<" "; } if(ct_map[i][j]==mob_cht){ Color(8); cout<<"●";} for(rint k=1;k<=item_len;++k) if(ct_map[i][j] == item_cht[k]) { Color(item_color[k]); cout<<"☆"; } } } for(rint i=1;i<=tool_len; ++i) if( i==chs)canvas({-4,i<<1},0,"↓"); else canvas({-4,i<<1},0," "); for(rint i=1;i<=tool_len; ++i) { Setpos(-3,i<<1); if(tool_bar[i] == '#'){ Color(0); cout<<"■"; } if(tool_bar[i] == '*'){ Color(8); cout<<"* "; } if(tool_bar[i] == 's'){ Color(8); cout<<"s "; } if(tool_bar[i] == ' '){ Color(3); cout<<"×"; } if(tool_bar[i] == '@'){ Color(8); cout<<"^ "; } if(tool_bar[i]==mob_cht){ Color(8); cout<<"●";} if(i == 7 ){ Color( item_color[item_chs] ); cout<<"☆"; } } for(rint i=1;i<=tool_len; ++i) canvas({-2,i<<1},0,numball[i]); // if(clock()%1000 < 500)canvas({curx,cury},0, " "); canvas({curx+1,cury},0, "↑"); } update_map = false; if(kbhit()) { char k =getch(); if(state == "map") { if(press(k, 'w'))curx = (curx-2+ct_maph) % ct_maph + 1, update_map = true; if(press(k, 's'))curx = curx%ct_maph + 1, update_map = true; if(press(k, 'a'))cury = (cury-2+ct_mapw) % ct_mapw + 1, update_map = true; if(press(k, 'd'))cury = cury%ct_mapw + 1, update_map = true; if('1'<=k&&k<=tool_len + '0') { if(k == '7' && chs == 7) { if(ct_mode[1]) item_chs = item_chs%item_len + 1; else item_chs = 1; tool_bar[7] = item_cht[item_chs]; } chs = k - '0'; update_map = true; } } if(press(k, 27)) { cam_dp = {7,ct_maph>>1}; int setw = 22,seth = 10, cur = 1,len; vector<string> text = {" ", "修改游戏参数", "修改游戏模式", "加载地图", "保存地图", "退出编辑器"}; len = text.size() - 1; int column = 2, ent = 14; edst_clean(seth, setw); while(1) { for(rint i=1; i<=len ; ++i) { int tx = 1+(i-1)/column*2, ty = 2 + (i-1)%column*ent; if(cur == i)canvas({tx, ty-1},0, " >"); else canvas({tx, ty-1},0, " "); canvas( {tx,ty}, 0, text[i]); } char k = getch(); if(press(k, 'w'))cur = (cur-1 - column + len) % len + 1; if(press(k, 's'))cur = (cur-1 + column)%len + 1; if(press(k, 'a'))cur = (cur-2 + len) % len + 1; if(press(k, 'd'))cur = cur % len + 1; if(press(k, 27)) { update_map = true; break; } if(press(k, 'o')) { if(cur == 1) { int cur2 = 1, column2 = 1, len2 = 4; vector<string> text = {"", "迷宫宽度:", "迷宫长度:", "初始视野宽度:", "初始视野长度:" , "初始引导之星数量:", "初始闪现数量:", "初始炸弹数量:", "初始探远星数量:" }; vector<int*> value = {NULL, &ct_mapw, &ct_maph, &ct_vision.x, &ct_vision.y}; for(rint i=1; i<=item_len; ++i) value.push_back(&ct_item_init[i]); len2 = text.size() - 1; edst_clean(seth, setw); while(1) { for(rint i=1; i<=len2; ++i) { if(i == cur2)canvas({i,2},0 , " >"); else canvas({i,2},0 , " "); canvas({i,3},0 , text[i]); canvas({i,3+text[i].size()/2},0 , str(*value[i]) + " "); } char k = getch(); if(press(k, 27)) break; if(press(k, 'w'))cur2 = (cur2-1 - column2 + len2) % len2 + 1; if(press(k, 's'))cur2 = (cur2-1 + column2)%len2 + 1; if(press(k, 'o')) { showCursor(); canvas({cur2,3+text[cur2].size()/2},0 , " "); Setpos(cur2,3+text[cur2].size()/2); cin>>*value[cur2]; HideCursor(); } } edst_clean(seth, setw); } if(cur == 2) enter_edst_cur2(seth,setw,ct_mode); if(cur == len - 2) { edst_clean(seth, setw); canvas({seth>>1,setw/2-7}, 0, "这会覆盖当前地图编辑,你确定要这么做吗"); canvas({seth/2+2,setw/2-4}, 0, "确认"); canvas({seth/2+2,setw/2+4}, 0, "取消"); bool confirm = 1; while(1) { if(confirm)canvas({seth/2+2,setw/2-5}, 0, " >"), canvas({seth/2+2,setw/2+3}, 0, " "); else canvas({seth/2+2,setw/2-5}, 0, " "), canvas({seth/2+2,setw/2+3}, 0, " >"); char k =getch(); if(press(k, 'a') || press(k, 'd')) confirm ^= 1; if(press(k, 'o'))break; } if(!confirm) { edst_clean(seth, setw); continue; } ifstream in("maze.pm"); in>>ct_mapw>>ct_maph>>ct_vision.x>>ct_vision.y; for(rint i=1; i<=item_len; ++i) in>>ct_item_init[i]; for(rint i=1; i<=mode_name.size() - 1; ++i) in>>ct_mode[i]; for(rint i=1; i<=ct_maph; ++i) for(rint j=1; j<=ct_mapw; ++j) { int x; in>>x; ct_map[i][j]=char(x); if(ct_map[i][j] == 's') ct_start = pos({i,j}); } in.close(); for(rint i=0; i<=ct_mapw+1; ++i) ct_map[0][i] = ct_map[ct_maph+1][i] = '#'; for(rint i=1; i<=ct_maph; ++i) ct_map[i][0] = ct_map[i][ct_mapw+1] = '#'; edst_clean(seth, setw); canvas({seth>>1,setw/2-2}, 0, "地图已读取"); Sleep(2000); break; } if(cur == len - 1) { ofstream out("maze.pm"); // out<<ct_mob.size()<<" "; // for(rint i=0; i<mob.size(); ++i) // out<<"{"<<mob[i].x<<","<<mob[i].y<<"} "; out<<ct_mapw<<" "<<ct_maph<<" "<<ct_vision.x<<" "<<ct_vision.y<<endl; for(rint i=1; i<=item_len; ++i) out<<ct_item_init[i]<<" "; out<<endl; for(rint i=1; i<=mode_name.size() - 1; ++i) out<<ct_mode[i]<<" "; out<<endl; for(rint i=1; i<=ct_maph; ++i) { for(rint j=1; j<=ct_mapw; ++j) out<<int(ct_map[i][j])<<" "; out<<endl; } out<<endl; out.close(); edst_clean(seth, setw); canvas({seth>>1,setw/2-2}, 0, "地图已保存"); Sleep(2000); break; } if(cur == len) enter_menu(); } } update_map = true; system("cls"); cam_dp = {7,1}; } // if(press(k, 'q')) // { // if(state == "map") // update_map = true; // } } if(GetAsyncKeyState('O')&0x8000) { if(tool_bar[chs] == 's') { ct_start = {curx,cury}; if(ct_map[ct_start.x][ct_start.y] == 's') ct_map[ct_start.x][ct_start.y] = ' '; } ct_map[curx][cury] = tool_bar[chs]; update_map = true; } } } void load_map() { ifstream in("maze.pm"); vector<int*> value = {NULL, &mapw, &maph, &vision_init.x, &vision_init.y}; for(rint i=1; i<=item_len; ++i) value.push_back(&mode_item_init[0][i]); int len = value.size() - 1; for(rint i=1; i<=len; ++i) in>>*value[i]; for(rint i=1; i<=mode_name.size() - 1; ++i) in>>mode[i]; for(rint i=1; i<=item_len ; ++i) item[i] = mode_item_init[0][i]; // debug_out(str(mapw)); // debug_out(str(maph)); // debug_out(str(maph)); for(rint i=0; i<=mapw+1; ++i) mapx[0][i] = mapx[maph+1][i] = '#'; for(rint i=1; i<=maph; ++i) mapx[i][0] = mapx[i][mapw+1] = '#'; for(rint i=1; i<=maph; ++i) for(rint j=1; j<=mapw; ++j) { int x; in>>x; // debug_out(str(i)+" "+str(j)+" "+str(x)); // system("pause"); // debug_out(str(i)); debug_out(str(j)); if(x == '!') mob.push_back(Mob( {i,j,1, 0, {0,0}, false} )); if(x == '#' || x == '*') mapx[i][j] = x; if(x == 's') { p = pos({i,j}); continue;//纪念第一个调了我1个小时的bug,continue 打成 break 了 } bool flag = false; for(rint k=1; k<=item_len; ++k) if(x == item_cht[k]) { flag = true; break; } if(flag || x == '@') { map2[i][j] = x; if(x == '@') { key++; keys.push_back(pos({i,j})); } } } // system("pause"); } void save_map() { ofstream out("maze.pm"); out<<mob.size()<<" "; for(rint i=0; i<mob.size(); ++i) out<<"{"<<mob[i].x<<","<<mob[i].y<<"} "; out.close(); for(rint i=1; i<=maph; ++i) { for(rint j=1; j<=mapw; ++j) out<<int(mapx[i][j])<<" "; out<<endl; } out<<endl; for(rint i=1; i<=maph; ++i) { for(rint j=1; j<=mapw; ++j) out<<int(map2[i][j])<<" "; out<<endl; } out<<endl; } void debug_out(string text) { // return; Setpos(++debug_cnt,-20); cout<<text<<" "; debug_cnt%=20; } bool mob_dizzy(int i) { return clock()-mob[i].last_time_dizzy <= mob_dizzy_time; } void mob_move() { update_map = true; for(rint i=0;i<mob.size();++i) { if(mob_dizzy(i))continue; mob_detect(i); if(!mob[i].chasing) { // continue; int tx= mob[i].x + dir_get_dpx[mob[i].dir * 2 -1], ty= mob[i].y + dir_get_dpy[mob[i].dir * 2 -1]; int t=(mob[i].dir+1)%4+1; vector<int> go_dir = {0,1,2,3,4}; go_dir.erase(go_dir.begin()+ (mob[i].dir+1)%4+1 ); mob[i].dir = go_dir[sprand(1, go_dir.size()-1)]; while(mapx[tx][ty]=='#' && go_dir.size()>1) { int ri=sprand(1, go_dir.size()-1); mob[i].dir = go_dir[ri]; tx= mob[i].x + dir_get_dpx[mob[i].dir * 2 -1], ty= mob[i].y + dir_get_dpy[mob[i].dir * 2 -1]; go_dir.erase(go_dir.begin()+ ri ); } if(mapx[tx][ty]=='#') { mob[i].dir = t; tx= mob[i].x + dir_get_dpx[mob[i].dir * 2 -1], ty= mob[i].y + dir_get_dpy[mob[i].dir * 2 -1]; if(mapx[tx][ty]=='#')continue; } mob[i].x= tx; mob[i].y= ty; } else { if(mob[i].locate.x == mob[i].x) { mob[i].y += mob[i].y>p.y ? -1:1 ; continue; } double k = (mob[i].locate.y-mob[i].y)*1.0 / (mob[i].locate.x-mob[i].x) ; double c = -k * mob[i].x + mob[i].y; int ty=mob[i].y + ( (mob[i].y>mob[i].locate.y) ? -1:1 ), tx=mob[i].x + ( (mob[i].x>mob[i].locate.x) ? -1:1 ); // debug_out("out"); if(_pow2(-k*mob[i].x + ty - c) <= b_r*b_r * ( k*k + 1) && mapx[mob[i].x][ty]!='#')mob[i].y = ty; else if(mapx[tx][mob[i].y]!='#')mob[i].x = tx ; } } // debug_out("move_over"); } bool detecting_check(pos a,pos b,int idx) { if(a.x==b.x) { int l=min(a.y,b.y),r=max(a.y,b.y); for(rint i=l; i<=r; ++i) if(mapx[a.x][i]=='#')return false; return true; } //y = kx + c //-kx + y - c = 0 double k = (b.y-a.y)*1.0 / (b.x-a.x) ; double c = -k * a.x + a.y; int l=min(a.x,b.x), r=max(a.x,b.x); // debug_out("step1"); for(int i=l; i<=r; ++i) { // debug_out("loop"); for(int j=k*i + c; j>=min(a.y,b.y) && j<=max(a.y,b.y) ;--j) if(_pow2(-k*i + j - c) <= b_r*b_r * ( k*k + 1)) { // canvas({i-cam.x+1,j-cam.y+1}, 0, "@ "); if(mapx[i][j]=='#')return false; } else break; for(int j=ceil( k*i + c); j>=min(a.y,b.y) && j<=max(a.y,b.y) ;++j) if(_pow2(-k*i + j - c) <= b_r*b_r * ( k*k + 1)) { // canvas({i-cam.x+1,j-cam.y+1}, 0, "@ "); if(mapx[i][j]=='#')return false; } else break; } return true; } void mob_detect(int i) { // debug_out("detecting"); if(abs(mob[i].x-p.x)+abs(mob[i].y-p.y)>=20)return; if( detecting_check({mob[i].x,mob[i].y}, p, i) ) { mob[i].chasing = true; // debug_out("detected"); mob[i].locate = p; } else { if(mob[i].locate.x==mob[i].x && mob[i].locate.y==mob[i].y )mob[i].chasing = false; // vector<int> pb_dir;//possible direction // for(rint j=1;j<=4;++j) } // debug_out("over"); } bool check_time(int x) { return clock()-last_time[x] >= interval[x]; } bool dfs_get_way(pos cur) { debug_out(str(cur.x)); debug_out(str(cur.y)); if(mapx[cur.x][cur.y] == '*')return true; if(vis[cur.x][cur.y])return false; vis[cur.x][cur.y]=true; if(cur.x!=start.x||cur.y!=start.y)path.push_back( Path( {cur, false} )); for(int i=1;i<=4;i++) { int tx=cur.x+dir_get_dpx[i*2-1],ty=cur.y+dir_get_dpy[i*2-1]; if(mapx[tx][ty]=='#' || tx<0 || ty<0 || tx>maph || ty>mapw)continue; if(dfs_get_way( {tx,ty} ))return true; } path.pop_back(); vis[cur.x][cur.y]=false; return false; } struct node{ int idx; double dis; }; vector<node> t; bool cmp(node a, node b){ return a.dis<b.dis; } pos find(pos x) { return (fa[x.x][x.y].x == x.x && fa[x.x][x.y].y == x.y) ? x : fa[x.x][x.y] = find(fa[x.x][x.y]); } bool join(pos a, pos b) { pos af = find(a), bf = find(b); if(af.x != bf.x || af.y != bf.y) { fa[bf.x][bf.y]=af; return true; } return false; } bool wall_check(int x) { if(wall.empty())return false; int ax,ay,bx,by; if(wall[x].x&1)ax = wall[x].x, ay = wall[x].y-1, bx = wall[x].x, by = wall[x].y+1; else ax = wall[x].x-1, ay = wall[x].y, bx = wall[x].x+1, by = wall[x].y; if( join( {ax,ay}, {bx,by} ) ) { // test(wall[x].x); // test(wall[x].y); mapx[wall[x].x][wall[x].y] = ' '; wall.erase(wall.begin()+x); return true; } wall.erase(wall.begin()+x); return false; } void generate_maze() { mmt(mapx,' '); int tot = 0; wall.clear(); for(rint i=1;i<=maph;++i) for(rint j=1;j<=mapw;++j) { fa[i][j] = { i, j }; if( i&1 && j&1 )mapx[i][j]=' ',tot++; else mapx[i][j]='#'; if( (i&1) ^ (j&1) )wall.push_back(pos( {i,j} ) ); } for(rint i=0;i<=maph+1;++i) mapx[i][0]=mapx[i][mapw+1]='#'; for(rint i=1;i<=mapw;++i) mapx[0][i]=mapx[maph+1][i]='#'; for(rint i=1; i<=tot && !wall.empty(); ++i) while(wall_check( sprand( 0, wall.size()-1 ) ) && !wall.empty()); mapx[maph][mapw] = '*'; wall.clear(); if(mode[5]) { for(rint i=1; i<=maph; ++i) for(rint j=1; j<=mapw; ++j) if(mapx[i][j]=='#')wall.push_back(pos({i,j})); for(rint i=1; i<=mode_init[choose][6]; ++i) { int rx=sprand(1,maph), ry=sprand(1,mapw); while(mapx[rx][ry]!='#')rx=sprand(1,maph),ry=sprand(1,mapw); mapx[rx][ry]=' '; } } } void generate_item(int idx,int n) { for(int i=1;i<=n;++i) { int rx=sprand(1,maph), ry=sprand(1,mapw); while(mapx[rx][ry]!=' ' || map2[rx][ry]!=' ')rx=sprand(1,maph),ry=sprand(1,mapw); map2[rx][ry]=item_cht[idx]; } } void generate_mob(int n) { for(int i=1;i<=n;++i) { int rx=sprand(1,maph), ry=sprand(1,mapw); while(mapx[rx][ry]!=' ' || map2[rx][ry]!=' ')rx=sprand(1,maph),ry=sprand(1,mapw); mob.push_back(Mob( { rx, ry, 1, 0, {0,0}, false} )); } } void generate_key(int n) { key = n; for(int i=1;i<=n;++i) { int rx=sprand(1,maph), ry=sprand(1,mapw); while(mapx[rx][ry]!=' ' || map2[rx][ry]!=' ')rx=sprand(1,maph),ry=sprand(1,mapw); map2[rx][ry]='@'; keys.push_back( pos({rx,ry}) ); } } void generate_block(int n) { int ln=sprand(1,n>>1); for(rint i=1;i<=ln;++i) { int ri=sprand(0,path.size()-1); int rx = path[ri].ps.x,ry = path[ri].ps.y; int tot = 0; while(mapx[rx][ry]!=' ' || map2[rx][ry]!=' ') { rx=sprand(1,maph),ry=sprand(1,mapw); if(tot>=1000)break; } if(tot>=1000)break; mapx[rx][ry]= '#'; } for(rint i=1;i<=n-ln;++i) { int rx=sprand(1,maph), ry=sprand(1,mapw); while(mapx[rx][ry]!=' ' || map2[rx][ry]!=' ')rx=sprand(1,maph),ry=sprand(1,mapw); mapx[rx][ry]= '#'; } } void game_update() { paint(); if(clean_screen) { clean_screen = false; system("cls"); } for(rint i=1;i<=vision.x;++i) {canvas( {i,0}, 8, " "); canvas( {i,vision.y+1}, 8, " "); } for(rint i=0;i<=vision.y+1;++i) {canvas( {vision.x+1,i}, 8, "▁▁"); canvas( {0,i}, 8, "▁▁"); } for(rint i=1; i<=vision.x; ++i) for(rint j=1; j<=vision.y; ++j) { int tx=i+cam.x-1,ty=j+cam.y-1; Setpos(i,j); if(tx<0 || ty<0 || tx>maph+1 || ty>mapw+1 ) { Color(0); cout<<" "; continue; } // Color(0); cout<<"--"; if(ptmap[tx][ty]==' '){ Color(0); cout<<" ";} if(ptmap[tx][ty]==0){ Color(7); cout<<"●";} if(ptmap[tx][ty]==1){ Color(3); cout<<"●";} if(ptmap[tx][ty]==2){ Color(4); cout<<"●";} if(ptmap[tx][ty]==3){ Color(8); cout<<"☆";} if(ptmap[tx][ty]=='#'){ Color(0); cout<<"■";} if(ptmap[tx][ty]=='*'){ if(mode[3]&&key)Color(5);else Color(8); cout<<"* ";} if(ptmap[tx][ty]=='@'){ Color(8); cout<<"^ ";} if(ptmap[tx][ty]==mob_cht){ Color(8); cout<<"●";} if(ptmap[tx][ty]==mob_dizzy_cht){ Color(7); cout<<"●";} if(ptmap[tx][ty]==item_cht[1]){ Color(1); cout<<"☆";} if(ptmap[tx][ty]==item_cht[2]){ Color(2); cout<<"☆";} if(ptmap[tx][ty]==item_cht[3]){ Color(5); cout<<"☆";} if(ptmap[tx][ty]==item_cht[4]){ Color(6); cout<<"☆";} } canvas({-2,0},0,"time = " + str( (clock()*1.0-startTime)/1000 ) + " score = "+str(score) + " fps =" + str(fps)); canvas({-1,0},0,"x,y = " + str(p.x) + " " + str(p.y) + " "); int top=0,cur=0; while(top<item_len) { top++; if(mode[2] && top==1 && !mode[3])continue; if(!mode[1] && top>1)continue; canvas({vision.x+2+cur/2,1+cur%2*6}, 0, item_name[ top ] +" = "+ str(item[top]) + " "); cur++; } if(mode[3])canvas({vision.x+2+cur/2,1+cur%2*6}, 0, "key = "+ str(key) ),cur++; if(!check_time(2)) { // if(last_pos.x != -1 && (last_pos.x!=cx || last_pos.y!=cy) )canvas({last_pos.x,last_pos.y},0, " "); string out; if(anchor.x==p.x) if(anchor.y < p.y)shown_dir = 1; else shown_dir = 5; if(anchor.y==p.y) if(anchor.x < p.x)shown_dir = 3; else shown_dir = 7; if(anchor.x<p.x && anchor.y>p.y) shown_dir = 2 ; if(anchor.x<p.x && anchor.y<p.y) shown_dir = 4 ; if(anchor.x>p.x && anchor.y<p.y) shown_dir = 6 ; if(anchor.x>p.x && anchor.y>p.y) shown_dir = 8 ; int cx = p.x - cam.x + 1 + dir_get_dpx[shown_dir], cy = p.y - cam.y + 1 + dir_get_dpy[shown_dir]; if(shown_dir == 1)out = "→"; if(shown_dir == 5)out = "←"; if(shown_dir == 3)out = "↑"; if(shown_dir == 7)out = "↓"; if(shown_dir == 2)out = "↗"; if(shown_dir == 4)out = "↖"; if(shown_dir == 6)out = "↙"; if(shown_dir == 8)out = "↘"; if((clock()-last_time[2]) % 1000 < 500) canvas({cx,cy},0, out) ; } else if(shown_dir)shown_dir = 0; } void player_move() { update_map = true; if(GetAsyncKeyState('W')&0x8000) { if(mapx[p.x-1][p.y]!='#' || debug)p.x--; dir=2; } if(GetAsyncKeyState('S')&0x8000 ) { if(mapx[p.x+1][p.y]!='#' || debug)p.x++; dir=4; } if(GetAsyncKeyState('A')&0x8000 ) { if(mapx[p.x][p.y-1]!='#' || debug)p.y--; dir=3; } if(GetAsyncKeyState('D')&0x8000 ) { if(mapx[p.x][p.y+1]!='#' || debug)p.y++; dir=1; } if(maph-vision.x>0)cam.x=min( max(p.x-(vision.x-1 >> 1), 0) , maph-vision.x+2); else cam.x= maph-vision.x+2>>1; if(mapw-vision.y>0)cam.y=min( max(p.y-(vision.y-1 >> 1), 0) , mapw-vision.y+2); else cam.y= mapw-vision.y+2>>1; if(mode[1]) for(rint i=3; i>=0 ; --i) { int tx= p.x+dir_get_dpx[dir*2-1]*i, ty= p.y+dir_get_dpy[dir*2-1]*i; if(tx<0 || tx>maph || ty<0 || ty>mapw || mapx[tx][ty]=='#')continue; aim = {tx,ty}; break; } } void player_check() { if(mapx[p.x][p.y] == '*' && (!key || !mode[3])) win(); for(rint i=1; i<=item_len ; ++i) if(map2[p.x][p.y]==item_cht[i]) { item[i]++; map2[p.x][p.y] = ' '; score += item_score[4]; update_map = true; } for(rint i=0; i<mob.size() ; ++i) if(p == pos( {mob[i].x,mob[i].y} ) && !mob_dizzy(i) ) lose(); if(map2[p.x][p.y]=='@' && mode[3]) { update_map = true; key --; for(rint i=0; i<keys.size(); ++i) if(keys[i].x == p.x && keys[i].y == p.y) keys.erase(keys.begin() + i); map2[p.x][p.y] = ' '; } } void paint() { for(rint i=1;i<=vision.x;++i) for(rint j=1;j<=vision.y;++j) { int tx=i+cam.x-1,ty=j+cam.y-1; if(tx<0 || ty<0 || tx>maph+1 || ty>mapw+1 ) continue; ptmap[tx][ty]=mapx[tx][ty]; } for(rint i=1;i<=vision.x;++i) for(rint j=1;j<=vision.y;++j) { int tx=i+cam.x-1,ty=j+cam.y-1; if(tx<0 || ty<0 || tx>maph+1 || ty>mapw+1 ) continue; if(map2[tx][ty]!=' ')ptmap[tx][ty]=map2[tx][ty]; } if(mode[1])ptmap[aim.x][aim.y]=2; for(rint i=0;i<mob.size();++i) if(!mob_dizzy(i))ptmap[mob[i].x][mob[i].y]=mob_cht; else ptmap[mob[i].x][mob[i].y]=mob_dizzy_cht; ptmap[p.x][p.y]=1; } void button_check() { if(kbhit()) { char k=getch(); if( press( k, 'r') ) { update_map = true; Rclick ++; if(Rclick == 1) { last_time[1] = clock(); canvas({-3,0}, 0, "Press R again to confirm suicide"); } if(Rclick == 2)lose(); } if(check_time(1))update_map = true, Rclick = 0,canvas({-2,0}, 0, " "); if(press( k, 'u') && item[1]>0 ) { if(mode[3] && key ) { double minx = inf; for(rint i = 0; i<keys.size(); ++i) if(minx > calc_dist(keys[i], p) ) { minx = calc_dist(keys[i], p); anchor = keys[i]; } // debug_out(str(chs.x) + " " + str(chs.y) + " " + str(shown_dir)); last_time[2] = clock(); } if(!mode[2] && path.size()) { t.clear(); for(rint i=0;i<path.size();++i) if(!path[i].highlight)t.push_back( node( { i, calc_dist(p,path[i].ps) } ) ); sort(t.begin(),t.end(),cmp); int l=t.size(); for(rint i=0; i< min(5, l-1 ) ; ++i) { path[t[i].idx].highlight=true; mapx[ path[t[i].idx].ps . x ][ path[t[i].idx].ps . y ] = 3; } } if(!mode[2] || (mode[3] && key)) item[1] --, score += item_score[1],update_map = true; } if(press( k, 'i') && item[2]>0 && mode[1]) { update_map = true; p = aim; item[2] --; score += item_score[2]; } if(press(k, 'o') && item[3]>0 && mode[1]) { update_map = true; for(rint i=0; i<=8 ; ++i) { int tx= aim.x+dir_get_dpx[i],ty= aim.y+dir_get_dpy[i]; if(tx==p.x && ty==p.y && mode[4])lose(); if(mode[4]) for(rint j=0; j<mob.size(); ++j) if( pos({mob[j].x,mob[j].y}) == pos({tx,ty}) ) mob[j].last_time_dizzy=clock(); if(mapx[tx][ty] == '#' && (tx>0 && tx<=maph && ty<=mapw && ty>0) ) mapx[ tx ][ ty ] = ' '; } item[3] --; score += item_score[3]; } } } void data_update() { run++; cnt++; int calc= -pow2(item[4])/4 + 4*item[4] ; vision2 = {max(vision2.x,calc), max(vision2.y,calc)}; vision = {vision2.x+vision_init.x,vision2.y+vision_init.y}; fps_count(); } void fps_count() { if(clock()-lasts>=1000) { fps=run/ ( (clock()-lasts)*1.0/1000); run=0; lasts=clock(); } } void enter_game(bool custom) { game_over = false; key = 0; path.clear(); wall.clear(); mob.clear(); keys.clear(); system("cls"); startTime=clock(); mmt(mapx,' '); mmt(map2,' '); mmt(item,0); mmt(vis,false); if(!custom) { p= { 1, 1 }; vision_init={ 15, 15 }; vision2 = {-999,-999}; data_update(); int ttx = vision.x>>1, tty= (vision.y>>1) ; canvas({ttx,tty},0, "世界生成中..."); for(rint i=1; i<=item_len ; ++i) item[i] = mode_item_init[choose][i]; maph = mode_init[choose][2]; mapw = mode_init[choose][1]; maph = maph >> 1 << 1 | 1; mapw = mapw >> 1 << 1 | 1; generate_maze(); canvas({ttx,tty+8},0, "33%"); for(rint i=1; i<=item_len ; ++i) { if(i==1 && !mode[2])generate_item(i,mode_item[choose][i]); if(i!=1 && mode[1])generate_item(i,mode_item[choose][i]); } canvas({ttx,tty+8},0, "45%"); bfs_get_way(p); if(mode[2]) generate_block(mode_init[choose][3]); canvas({ttx,tty+8},0, "60%"); if(mode[3]) generate_key(mode_init[choose][4]); canvas({ttx,tty+8},0, "85%"); if(mode[5]) generate_mob(mode_init[choose][5]); system("cls"); canvas({ttx,tty},0, "done!"); } else { load_map(); vision2 = {-999,-999}; bfs_get_way(p); //debug_out("1"); // dfs_get_way(p); } data_update(); for(rint i=0; i<mob.size(); ++i) mob[i].last_time_dizzy = clock(); cnt = 0; run = 0; score = 0; mob_speed = 12; shown_dir = 0; cam_dp={ 4, 20 }; player_speed = 8; // save_map(); //debug_out("1"); //debug_out("Polynswin") while(!game_over) { update_map = false; // char k =getch(); // if(k == 'a') enable ^= 1; if(clock()-lasts2<1000/ ( 60 + 0 ))continue; lasts2=clock(); data_update(); button_check(); //debug_out("2"); if(game_over)break; if( cnt%player_speed==0) player_move(); if( cnt%mob_speed == 0) mob_move(); player_check(); if(update_map) game_update(); } enter_menu(); } void print_menu() { canvas( {1,1}, 0, "欢迎来到 多重迷宫 V1.5 "); canvas( {2,1}, 0, " made by Polynswin "); canvas( {5,2}, 0, "按 Z 进入游戏 "); canvas( {7,2}, 0, "按 C 修改迷宫模式"); canvas( {9,2}, 0, "按 Q 查看规则"); } void enter_custom_choose() { system("cls"); cam_dp = {3,20}; ifstream in("level_list.info"); vector<string> name = {""}; string x; while(in>>x)name.push_back(x); int len = name.size() - 1,cur = 1; while(1) { int curx = 0; for(rint i=1; i<=len; ++i) canvas({curx = curx + 2, 1}, 0, name[i]); for(rint i=1;i<=len;++i) if(cur == i)canvas({i*2,-1},0," "); else canvas({i*2,-1},0,">"); // if(1<=cur && cur<=6) char k =getch(); if(press( k, 'w'))cur = (cur-1+len-1)%len+1; if(press( k, 's'))cur = cur%len+1; if(press( k, 'o')) { if(cur==1) enter_game(false); if(cur==2) enter_custom_choose(); if(cur==3) enter_editor(); if(cur==4) enter_setting(); if(cur==5) enter_rule(); if(cur==6) enter_updates(); } } } void enter_menu() { system("cls"); cam_dp = {3,20}; int len = 6,cur = 1; while(1) { int curx=3; cam_dp = {3,20}; canvas({curx,0},0,"多重迷宫 V1.8!!!"); curx += 1; canvas({curx,0},0,"made by Polynswin"); curx += 2; canvas({curx,0},0,"开始游戏"); curx += 2; canvas({curx,0},0,"自定义关卡"); curx += 2; canvas({curx,0},0,"关卡编辑器"); curx += 2; canvas({curx,0},0,"修改迷宫模式"); curx += 2; canvas({curx,0},0,"查看游戏介绍"); curx += 2; canvas({curx,0},0,"更新日志 "); curx += 3; canvas({curx,0},0,"按 W / S 键上下移动"); curx += 1; canvas({curx,0},0,"按 O 键确认"); curx += 1; for(rint i=1;i<=len;++i) canvas({i*2+4,-1},0," "); // if(1<=cur && cur<=6) canvas({cur*2+4,-1},0,">"); char k =getch(); if(press( k, 'w'))cur = (cur-1+len-1)%len+1; if(press( k, 's'))cur = cur%len+1; if(press( k, 'o')) { if(cur==1) enter_game(false); if(cur==2) enter_custom_choose(); if(cur==3) enter_editor(); if(cur==4) enter_setting(); if(cur==5) enter_rule(); if(cur==6) enter_updates(); } } } void enter_setting() { int cur = 1, len = 4; while(1) { cam_dp = {3,20}; system("cls"); if(1<=cur && cur<=3) canvas({cur*2-1,0},0,">"); string text[10]={"", "难度选择", "模式选择", "颜色设置(尚未开放)", "UI设置(尚未开放)", "按 W / S 键改位置", "按 O 键确认", "按 Q 键退出并保存设置" }; for(rint i=1;i<=len+3;i++) { int col=0; canvas({i*2-1,1},col,text[i]); } char k =getch(); if(press( k, 'w'))cur = (cur-1+len-1)%len+1; if(press( k, 's'))cur = cur%len+1; if(press( k, 'o')) { if(cur == 1) enter_difficulty_setting(); if(cur == 2)enter_mode_setting(); if(cur == 3); } if(press( k, 'q'))enter_menu(); } } void enter_mode_setting() { system("cls"); cam_dp = {3,20}; int cur = 1, len = mode_name.size() - 1; while(1) { system("cls"); if(1<=cur && cur<=len) canvas({cur*2-1,0},0,">"); for(rint i=1;i<=len;i++) { int col=0; if(mode[i])col=2; canvas({i*2-1,1},col,mode_name[i]); } canvas({ (len+1<<1) - 1, 1}, 0, "按 W / S 键改位置"); canvas({ len+1 << 1, 1}, 0, "按 O 键确认"); canvas({ len+1 << 1 | 1, 1}, 0, "按 Q 键退出并保存设置"); char k =getch(); if(press(k, 'w'))cur = (cur-1+len-1)%len+1; if(press(k, 's'))cur = cur%len+1; if(press(k, 'o')) { mode[cur] ^= 1; if(mode[2])mode[1]=1; } if(press(k, 'q'))enter_setting(); } } string str(int x) { if(!x) return "0"; string res="",res2="."; // int tot = -99; // if(int(x) != x) // { // double cx = x; // while(cx && tot<2) // { // cx = cx - int(cx); // cx = cx * 10; // res2 += int(cx) + '0'; // tot++; // } //// Setpos(0,-10);test(res2); // } int tx=x; while(tx) { res+=tx%10+'0'; tx=tx/10; } for(int i=0;i< (res.size()>>1) ;i++) { char t=res[i]; res[i]=res[res.size()-i-1]; res[res.size()-i-1]=t; } if(res2==".")return res; else return res+res2; } void enter_updates() { int curx=0,len=2; cam_dp = {3,10}; system("cls"); // canvas({curx,0},0," "); curx += ; canvas({curx,0},0,"V1.5更新"); curx += 2; canvas({curx,0},0,"更新 钥匙收集 模式"); curx += 2; canvas({curx,0},0,"V1.6更新"); curx += 2; canvas({curx,0},0,"修复了一堆显示bug"); curx += 1; canvas({curx,0},0,"优化了游戏算法,反正作者的机房电脑是能在地狱难度\\模式拉满\\视野拉满下也能跑满62fps"); curx += 1; canvas({curx,0},0,"引导之星增添新功能,在钥匙收集模式中,还能显示钥匙大致方位"); curx += 1; canvas({curx,0},0,"新增 怪物追击 模式"); curx += 1; canvas({curx,0},0,"更新 UI"); curx += 2;; canvas({curx,0},0,"V1.7&1.8更新"); curx += 2; canvas({curx,0},0,"新增 自定义关卡&关卡编辑器 模式"); curx += 1; canvas({curx,0},0,"按 Q 键退出"); while(1) { char k =getch(); if(press(k, 'q')) break; } system("cls"); } void enter_rule_editor() { system("cls"); while(1) { int curx = 0; cam_dp = {3,20}; canvas({curx,0},0,"编辑器上方有工具栏,按下相应数字键切换选中物品,按O键即可在预瞄点处摆放"); curx += 2; canvas({curx,0},0,"箭头上方为你的预瞄点,按WASD键进行上下左右移动"); curx += 2; canvas({curx,0},0,"如果要对地图进行设置,按下ESC进入菜单界面"); curx += 2; canvas({curx,0},0,"大部分界面都可以用ESC退出,同时大部分选项都可以按下O键(注意)确认"); curx += 2; canvas({curx,0},0,"编辑好地图后,别忘了在菜单界面保存地图,会导出至与游戏本体同级地址为maze.pm"); curx += 1; canvas({curx,0},0,"如果想加载地图,可在菜单界面选择加载地图确认,会读入文件maze.pm"); curx += 3; canvas({curx,0},0,"按 Q 键退出"); char k =getch(); if(press( k, 'q'))return; } } void enter_rule() { int curx=0,cur=1,len=3; while(1) { curx=0; cam_dp = {3,20}; system("cls"); canvas({curx,0},0,"游戏目标为移动至迷宫位于右下角的终点(符号*)"); curx += 2; canvas({curx,0},0,"按方向键进行上下左右移动"); curx += 2; canvas({curx,0},0,"你拥有道具,需要按下相应的键位使用,使用即可得分"); curx += 2; canvas({curx,0},0,"当你遇到死局时,可双击 R 键紫砂"); curx += 3; canvas({curx,0},0,"查看 道具介绍"); curx += 1; canvas({curx,0},0,"查看 模式介绍"); curx += 1; canvas({curx,0},0,"查看 编辑器介绍"); curx += 2; canvas({curx,0},0,"按 W / S 键上下移动"); curx += 1; canvas({curx,0},0,"按 O 键确认"); curx += 1; canvas({curx,0},0,"按 Q 键退出"); for(rint i=1;i<=len;++i) canvas({i+8,-1},0," "); canvas({cur+8,-1},0,">"); char k =getch(); if(press( k, 'w'))cur = (cur-1+len-1)%len+1; if(press( k, 's'))cur = cur%len+1; if(press( k, 'q'))enter_menu(); if(press( k, 'o')) { if(cur==1)enter_rule_item(); if(cur==2)enter_rule_mode(); if(cur==3)enter_rule_editor(); } } } void enter_rule_mode() { system("cls"); cam_dp = {3,15}; int curx=0; canvas({curx,0},0,"特殊道具: 场上会多出特殊道具"); curx += 2; canvas({curx,0},0,"特殊道具2: 同上"); curx += 2; canvas({curx,0},0,"迷宫塌方:迷宫坍塌,场上会随机出现方块"); curx += 1; canvas({curx,0},0," (强制打开特殊道具)"); curx += 2; canvas({curx,0},0,"收集钥匙:要收集一定钥匙后才能通往终点"); curx += 2; canvas({curx,0},0,"爆炸伤害:炸弹会炸死范围内单位,包括你自己"); curx += 1; canvas({curx,0},0," (强制打开特殊道具)"); curx += 2; canvas({curx,0},0,"怪物追击:场上会存在一定的怪物,它们会随机游走,但当看到你时,它们会向你追击"); curx += 1; canvas({curx,0},0," 但是你可以甩开它们,同时要利用地形卡好视野,同时地图上会出现安全点"); curx += 1; canvas({curx,0},0," 相应的,地图的路径将不再单一,你拥有多种路径通往终点"); curx += 2; canvas({curx,0},0,"灯光不足:玩家出生时会携带灯源,随着时间流逝灯光会减弱,视野也会相应变小,"); curx += 1; canvas({curx,0},0," 需要去地图上搜寻燃料补充灯光,视野也会相应变小,需要去地图上搜寻"); curx += 1; canvas({curx,0},0," 燃料补充灯光"); curx += 2; canvas({curx,0},0,"双人对战:开启双人模式,玩家出生在地图对角线,需不断搜寻道具击败对方"); curx += 1; canvas({curx,0},0," (强制打开特殊道具 & 2)"); curx += 2; canvas({curx,0},0,"按 Q 键退出"); while(1) { char k =getch(); if(press( k, 'q'))break; } } void enter_rule_item() { system("cls"); cam_dp = {3,15}; int curx=0; canvas({curx,0},0,"道具1: 引导之星(guide) U 键"); curx += 1; canvas({curx,0},0," 使用后可以显示通往终点的道路,但只能显示距离你最近的5格"); curx += 1; canvas({curx,0},0," (迷宫塌方中不可用)"); curx += 2; canvas({curx,0},0,"接下来的为特殊道具,只有打开特殊模式才能使用"); curx += 2; canvas({curx,0},0,"道具2:闪现(flash) I 键"); curx += 1; canvas({curx,0},0," 使用后可以闪现至预瞄点"); curx += 2; canvas({curx,0},0,"道具3:炸弹(bomb) O 键"); curx += 1; canvas({curx,0},0," 使用后可以炸掉预瞄点3*3范围内的墙壁(不可炸掉边界,别想着偷鸡)"); curx += 2; canvas({curx,0},0,"道具4:探远星(vision) \\"); curx += 1; canvas({curx,0},0," 收集之后可以增加视野,但存在上限,非线性增长"); curx += 2; canvas({curx,0},0,"按 Q 键退出"); while(1) { char k =getch(); if(press( k, 'q'))break; } } void enter_difficulty_setting() { system("cls"); cam_dp = {3,20}; int cur = 1, len = 5; while(1) { system("cls"); if(1<=cur && cur<=5) canvas({cur*2-1,0},0,">"); vector<string> text={"", "迷宫:简单难度", "迷宫:正常难度", "迷宫:困难难度", "迷宫:地狱难度", "迷宫:自定义模式(尚未开放)", "按 W / S 键改位置", "按 O 键确认", "按 Q 键退出并保存设置" }; for(rint i=1;i<=len+3;i++) { int col=0; if(choose==i)col=2; canvas({i*2-1,1},col,text[i]); } char k =getch(); if(press( k, 'w'))cur = (cur-1+len-1)%len+1; if(press( k, 's'))cur = cur%len+1; if(press( k, 'o')) { if(1<=cur && cur<=5) { choose = cur; if(cur==5) { system("cls"); canvas({1,1},0,"暂未开放 "); choose = 4; // canvas({-1,1},0,"尽量不要进行非合法/常规输入,否则会出bug "); // canvas({1,1},0,"输入迷宫宽度: "); cin>>mode[5][1]; // canvas({3,1},0,"输入迷宫长度: "); cin>>mode[5][2]; // canvas({5,1},0,"输入迷宫引导之星数量: "); cin>>mode_item[5][1]; // canvas({7,1},0,"输入完毕 "); Sleep(2000); } } } if(press( k, 'q'))enter_setting(); } } void lose() { game_over = true; ending_of_game(); system("cls"); cam_dp= {3,20}; string s=str(score); int sx= vision.x>>1, sy= vision.y>>1; Setpos( sx, sy ); Color(0); SlowDisplay(100,"You lost!"); Setpos( sx +1 , sy ); Color(0); SlowDisplay(100,"used time:"+str( (clock()-startTime)/1000 ) + " score:"+str(score)); Setpos( sx +2 , sy ); system("pause"); } void win() { game_over = true; ending_of_game(); system("cls"); string s=str(score); cam_dp= {3,20}; int sx= vision.x>>1, sy= vision.y>>1; Setpos( sx, sy ); Color(0); SlowDisplay(100,"You won!"); Setpos( sx +1 , sy ); Color(0); SlowDisplay(100,"used time:"+str( (clock()-startTime)/1000 ) + " score:"+str(score)); Setpos( sx +2 , sy ); system("pause"); } void ending_of_game() { paint(); game_update(); for(int i=1;i<=3;i++) { Setpos(p.x-cam.x+1,p.y-cam.y+1); Color(4); cout<<"●"; Sleep(500); Setpos(p.x-cam.x+1,p.y-cam.y+1); Color(3); cout<<"●"; Sleep(500); } for(int i=max(vision.y,vision.x);i>=-vision.y-vision.x+2; --i) { for(int j=0;vision.x-j>=1&&i+j<=vision.y; ++j) if(i+j>=1){Setpos(vision.x-j,i+j); Color(0); cout<<" ";} Sleep(50); } } void HideCursor(){CONSOLE_CURSOR_INFO cursor_info = {1,0};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);/*Po*/} void showCursor() { HANDLE h_GAME = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_CURSOR_INFO cursor_info; GetConsoleCursorInfo(h_GAME,&cursor_info); cursor_info.bVisible = true; SetConsoleCursorInfo(h_GAME,&cursor_info); } void Setpos(int x,int y){RealSetpos(x+cam_dp.x,y+cam_dp.y);} void RealSetpos(int x,int y){COORD pos;pos.X=y*2,pos.Y=x;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);} void SlowDisplay(int x,string p) { for(int i=0;i<p.size();i++) { cout<<p[i]; if(kbhit())x = 0; Sleep(x); } } int sprand(int l,int r){return rand()%(r-l+1)+l;} void Color(int a) { if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE); if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE); if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN); if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE); if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED); if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN); if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN); if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|BACKGROUND_RED); } inline void read(int &x) { int f=1;x=0;char ch=getchar(); while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();} while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();} x=x*f; } inline void ffout(int x) { if(x<0){x=-x; putchar('-'); } short sta[63],top=0; do{ sta[top++]=x%10; x/=10; }while(x); while(top) putchar(sta[--top]+'0'); } inline void ffout(int x,char b) { if(x<0){x=-x; putchar('-'); } short sta[63],top=0; do{ sta[top++]=x%10; x/=10; }while(x); while(top) putchar(sta[--top]+'0'); putchar(b); } language ``` ``` ```#include<bits/stdc++.h> using namespace std; typedef long long ll; int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); ll n; cin>>n; string s; cin>>s; ll cnt=0,cnt2=0,cnt3=0; for(int i=0;i<s.size();i++){ if(s[i]=='N'){ cnt++; }else if(s[i]=='O'){ cnt2+=cnt; }else if(s[i]=='I'){ cnt3+=cnt2; } } cout<<cnt3; return 0; } ``` ```刷题是一种出路,枚举是一种思想 打表是一种勇气,搜索是一种信仰 剪枝是一种精神,骗分是一种日常 爆零是一种宿命,WA是一种绝望 TLE是一种痛苦,RE是一种放弃 UKE是一种无奈,AC是一种原谅 AK是一种幻想,弃赛是一种颓废 吊打是一种必然,进队是一种奢望 模拟只会猜题意,贪心只能过样例 数学上来先打表,DP一般看规律 组合数学靠运气,计算几何瞎暴力 图论强行套模板,数论只会GCD 递归递推伤不起,搜索茫然TLE 分治做得像枚举,暴力枚举数第一 数据结构干瞪眼,怒刷水题找信心 涨姿势也不容易,考试一来全懵逼 ```山重水复疑无路,make后面不加to。 秦时明月汉时关,高价氧化低价还。 君问归期未有期,点裂加倍匀两极。 酒酣胸胆尚开张,GM=gR方。 碧云天,黄叶地,高温高压催化剂。 横看成岭侧成峰,洛伦兹力不做功。 草树知春不久归,b方减去4ac。 瀚海阑干百丈冰,酸脱羟基醇脱氢。 ` 各种老师一回头 语文老师一回头,此地空余黄鹤楼。 数学老师一回头,二次函数对称轴。 英语老师一回头,sorry加上三克油。 化学老师一回头,二氧化碳变汽油。 物理老师一回头,一跟杠杆撬地球。 生物老师一回头,试管婴儿水中游。 地理老师一回头,大陆版块乱漂流。 劳技老师一回头,破铜烂铁来走秀。 政治老师一回头,布什改行卖豆油。 美术老师一回头,蒙娜丽莎也风流。 体育老师一回头,奥运取消打篮球。 电脑老师一回头,学生全成阿Q友。 全体老师一回头,世界人民没自由。 少年应有鸿鹄志,当骑骏马踏平川。 山有木兮卿有意,昨夜星辰恰似你。 终南有坟,名不老。 于万人中万幸得以相逢,刹那间澈净明通。 故人依稀天边去,十年孤襟迎秋风。 江湖每逢一夜雨,为谁鞍前系灯笼。 青山远去万里遥,苏澜城外雨潇潇。 孤舟一叶问船家,何日重到苏澜桥。
-
最近活动
- 2024.11.15 ~ 11.17 普及组第二周周赛补题 作业
- 2024.11.15 ~ 11.17 普及组第二周周赛 OI
- 2024.11.8 ~ 11.10 普及组第一周周赛补题 作业
- 2024.11.8 ~ 11.10 普及组第一周周赛 OI
- 2024.10.26 CSP-X 小学组 赛前模拟 ACM/ICPC
- 2024.10.20 图灵 CSP-X 模拟赛补题 IOI
- 2024.10.20图灵编程CSP-X模拟赛 ACM/ICPC
- 10.13普及组模拟赛补题场 IOI
- 2024.10.13 图灵 CSP-X 赛前第二次训练赛 补题 IOI
- 2024.10.13 图灵 CSP-X赛前第二次训练赛 ACM/ICPC
- 2024.9.30 图灵 CSP-X 小学组 试题 OI
- 2024年8月29日CSP-X初赛模拟卷4 补题 作业
- 2024年8月29日 CSP-X初赛模拟卷4 OI
- 2024年8月23日CSP-X初赛模拟赛3-补题 作业
- 2024年8月22日CSP-X初赛模拟赛3 OI
- 24年8月21日 普及组模拟赛DAY1-补题 作业
- 2024年8月16日CSP-X初赛模拟赛2-补题 作业
- 2024年8月16日CSP-X初赛模拟赛2 OI
- 2024.7.9 初赛练习 2【小学组】补题场 作业
- 2024.6.23 图灵六月月赛小学组(CSP-X)模拟赛 作业
- 2024.6.13 周赛补题-小学组 作业
- 2024年6⽉第三场周赛-小学组 IOI
- 2024.6.6 周赛补题-小学组 作业
- 2024年6⽉第二场周赛-小学组 IOI
- 2024年6⽉第一场周赛-小学组 IOI
- 2024图灵5月月赛 - 小学组 作业
- 2024.5.16 周赛补题-小学组 作业
- 2024年5⽉第三场周赛-小学组 IOI
- 2024.5.9 周赛补题-小学组 作业
- 2024年5⽉第二场周赛-小学组 IOI
- 2024图灵4月月赛 - 小学组 作业
- 2024 图灵4月月赛 - 小学组 ACM/ICPC
- 2024.4.26 周赛补题-小学组 作业
- 2024年5⽉第一场周赛-小学组 IOI
- 2024.4.18 周赛补题-小学组 作业
- 2024年4⽉第三场周赛-小学组 IOI
- 2024.4.11 周赛补题-小学组 作业
- 2024年4⽉第二场周赛-小学组 IOI
- 2022-2023年市北区区赛历年真题 - 小学组 IOI
- 2024.4.7 周赛补题-小学组 作业
- 2024年4⽉第一场周赛-小学组 OI
- 2024.3.31 图灵三月月赛 - 小学组 补题场 作业
- 图灵三月月赛 - 小学组 赛题 ACM/ICPC
- 2024.3.25 周赛补题-小学组 作业
- 2024年3⽉第三场周赛-小学组 OI
- 2024年3⽉第二场周赛-小学组 IOI
- 2024.3.11 周赛补题-小学组 作业
- 2024年3⽉第⼀场周赛-小学组 IOI
-
Stat
-
Rating