仿动物园规则怪谈类小游戏
近来我闲来无事,写了一个动物园小游戏,现将代码放在这里,有bug什么的跟我说哈。(开心:我终于真地写了一个游戏!)
代码:
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
using namespace std;
const int maxn=15;
int first_read=1,sr,jj[maxn],sd=1,s=5;
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
string jjm[maxn]={"","到此一游","地覆天翻","外卖到了","寄人篱下","天国旅人","爱墨能助","狮口亡魂","白象之争","真假狮羊","数据删除","无知水母","园区保安","笼中之兔","口中之食"};
void empty(){
sd=1;
for(int i=1;i<=maxn;i++){
jj[i]=0;
}
}
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;
in>>first_read>>sd;
for(int i=1;i<=15;i++) in>>jj[i];
in.close();
}
void Save()
{
ofstream out("动物园存档.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;
out<<first_read<<" "<<sd<<endl;
for(int i=1;i<=15;i++) out<<jj[i]<<" ";
out.close();
}
void slowsay(string a){
for(int i=0;i<int(a.size());i++){
if(sd!=2147483647&&sd!=10) Sleep(int(sd*50));
else if(sd==10) Sleep(25);
else sr=_getch();
cout<<a[i];
}
}
void input(int l,int r){
cin>>sr;
while(sr<l||sr>r){
cout<<"请重新输入!\n";
cin>>sr;
}
}
void Login(){
slowsay("世界上有个地方,叫A岛(Acfun)。在这座城中,有一个动物园.\n");
//sr=_getch();
slowsay("这个动物园非常得奇怪,大路上有兔子出现,大象区中有长耳白色大象,海洋馆和动物园互不承认,鲸鱼区中有溺死的大象,猿猴区有时有一条路,有时有两条路。\n");
sr=_getch();
slowsay("诡异怪诞,扑朔迷离,众多谜团等你来破解!\n");
sr=_getch();
slowsay("那么,就让我们开始吧!\n");
sr=_getch();
//system("cls");
first_read=0;
}
void syx(){
slowsay("因为在树荫下休息,你被寄了。\n");
slowsay("达成结局:寄人篱下\n");
sr=_getch();
jj[4]=1;
}
void jj1(){
srand(s*rand());
s=rand()%100;
if(s<50){
slowsay("你被那头大象干掉了。\n");
//slowsay("")
}else{
slowsay("你干掉了那头大象,但是又被随即冲来的一头大象干掉了。\n");
}
slowsay("达成结局:白象之争。\n");
jj[8]=1;
sr=_getch();
}
void btz(){
slowsay("你的认知被污染了。你变成了一只兔子。你被“它”吃了,变成了兔子血摆在货架上。\n");
slowsay("达成结局:口中之食");
jj[14]=1;
sr=_getch();
}
void bcl(){
slowsay("你被兔子吃掉了.\n");
slowsay("达成结局:外卖到了\n");
jj[3]=1;
sr=_getch();
}
void bds(){
slowsay("你被那只白色大象给干掉了。\n");
slowsay("达成结局:白象之争。\n");
jj[8]=1;
sr=_getch();
}
void dba(){
slowsay("从此以后,你成为了一名光荣的保安。\n");
slowsay("你知道,你最后肯定会变成大象,被白色大象打死。\n但是你义无反顾地担起了这个责任。毕竟正如他人所说,“团结、勇气和绝不动摇的忠诚是人类最大的优点。”\n");
slowsay("达成成就:园区保安\n");
jj[12]=1;
sr=_getch();
}
void bys(){
slowsay("你因为污染严重,被狮子咬死了。\n");
slowsay("达成结局:狮口亡魂。\n");
jj[7]=1;
sr=_getch();
}
void bpl(){
slowsay("黑衣员工骗走了你地图上的虚线。\n你因为没有虚线保护,被寄了。\n");
slowsay("达成结局:爱墨能助.\n");
jj[6]=1;
sr=_getch();
}
void jlz(){
slowsay("你凭借自己的智商,发现自己将要变成兔子。\n你不想死,于是你就进入了笼子,等待每周的喂食.\n");
slowsay("达成成就:笼中之兔.\n");
jj[13]=1;
sr=_getch();
}
void lkl(){
slowsay("你离开了动物园.\n");
slowsay("达成结局:到此一游.\n");
jj[1]=1;
sr=_getch();
}
void cybcc(){
slowsay("你走入了右侧通道。\n突然,不知道怎么回事的,你没了。\n");
slowsay("达成结局:天国旅人。\n");
jj[5]=1;
sr=_getch();
}
void bfx(){
slowsay("你大晚上开灯,吸引到了“它”,于是你被它给干掉了。\n");
slowsay("达成结局:无知水母\n");
jj[11]=1;
sr=_getch();
}
void bsc(){
slowsay("你在海洋馆里停留超过了半个小时,你被它盯上了.\n");
slowsay("为了不增强它的势力,海洋馆把你删除了。\n");
slowsay("达成结局:数据删除。\n");
jj[10]=1;
sr=_getch();
}
void hll(){
slowsay("你过早地离开了海洋馆。你被绞入了时空乱流。你死了\n");
slowsay("达成结局:地覆天翻\n");
jj[2]=1;
sr=_getch();
}
void open(){
if(first_read==1){
Login();
first_read==0;
}
system("cls");
slowsay("你是一名A岛的居民。今天天气不错,你打算去动物园玩。\n");
sr=_getch();
slowsay("你到了动物园,买票之后,工作人员给了你一份地图。\n地图上有一小部分空白,被虚线框了起来。\n你问工作人员这是干嘛用的,他回答:关键时刻有大用,保命工具\n");
sr=_getch();
system("cls");
slowsay("你在动物园内闲逛。突然,你看见了一只兔子从你面前跑过。\n");
int ptz=0,bwr=0;
slowsay("此时你要:\n1.追上这只兔子。\n2.不理它。\n");
input(1,2);
if(sr==1){
bwr++;
srand(s*rand());
s=rand()%100;
if(s<50){
slowsay("你跟着这只兔子,到了一棵树的树荫中。兔子就停在树下不动,回头望着你。\n");
slowsay("此时你要:\n1.抱起这只兔子,拍张照片。\n2.不对劲,赶紧离开。\n");
input(1,2);
if(sr==1){
srand(s*rand());
s=rand()%100;
if(s<50) syx();
else bcl();
return ;
}
}else{
slowsay("那只兔子调头向你扑来!\n");
sr=_getch();
srand(s*rand());
s=rand()%100;
if(s<33){
slowsay("你以为那只兔子喜欢你,所以向你扑来。你向前一步,抱住了那只兔子.\n");
bcl();
return ;
}else if(s<66){
slowsay("你掉头就跑,但是没跑过那只兔子。\n");
sr=_getch();
bcl();
return ;
}else{
slowsay("你逃过了兔子的魔爪。\n");
ptz=1;
}
//bcl();
}
}
system("cls");
slowsay("你继续游览,慢慢走到了大象区。\n你看见一个带兔子耳饰的男人跟着人流一同进入了园区,你心想:“什么怪癖好!”\n");
sr=_getch();
slowsay("突然,一个员工冲了出来,要求大家立刻离开园区。\n");
slowsay("此时你要\n1.听从员工的话,离开。\n2.我行我素,继续在大象区中游览。\n");
input(1,2);
if(sr==2){
bwr++;
slowsay("你在园区中走来走去,走到一处告示牌前,一抬头:你看见的大象竟然是白色的!而告示牌前的大象则是一般的大象。\n");
sr=_getch();
srand(s*rand());
s=rand()%100;
if(s<33){
slowsay("你的认知被污染了.你成为了一只兔子。你吃掉了地上的一条虚线。你变成了白色大象。\n");
sr=_getch();
slowsay("本能驱使着你冲向一头特别的大象(虽然不知道它为什么很特别)。你与那头大象打了起来\n");
sr=_getch();
jj1();
return ;
}else if(s<66){
//slowsay("你的认知被污染了。你变成了一只兔子")
btz();
return ;
}else{
slowsay("这时,大象区保安突然冲了出来!他捡起地上的虚线,变成了大象与白色大象打了起来。\n");
slowsay("你看见了之后热血沸腾,你也捡起了地上的一条虚线,变成了一只大象,与另一只白色大象厮打起来。\n");
sr=_getch();
srand(s*rand());
s=rand()%100;
if(s<50){
bds();
return ;
}
slowsay("你们一起干掉了那些白色大象。\n");
slowsay("战斗结束后,那名保安很感激你,邀请你成为一名保安。\n这时,你的选择是:\n1.加入他。\n2.谢绝他\n");
input(1,2);
if(sr==1){
dba();
return ;
}else{
slowsay("你谢绝了他,离开了大象园区。\n");
}
}
}
system("cls");
slowsay("离开大象园区后,你感觉有些无聊。\n");
sr=_getch();
slowsay("路边有个人在售卖兔子玩偶。\n");
slowsay("请问你要买下玩偶吗?\n1.买 2.不买\n");
input(1,2);
if(sr==1){
btz();
return ;
}
slowsay("你走到了狮子区.\n");
if(bwr>=2){
bys();
return ;
}
//slowsay("这里怎么只有4只狮子?连大吼都不会……你离开了狮子区")
slowsay("狮子们突然对着你大吼.你被吓得够呛,赶紧离开了狮子区.\n");
slowsay("你又在路边看见了一只兔子。\n");
bwr++;
if(ptz==1){
slowsay("你不敢轻举妄动,打算将此告诉员工。\n");
sr=_getch();
slowsay("路边有两个员工,请问你打算告诉哪个人?\n1.蓝衣员工\n 2.黑衣员工\n");
input(1,2);
if(sr==1){
slowsay("蓝衣员工将你和兔子引至狮子园。\n");
slowsay("兔子被狮子给咬死了。\n");
if(bwr>=2){
bys();
return ;
}
}else{
bpl();
return ;
}
}else{
if(bwr>=2){
//slowsay("你发现自己变成了兔子,但又不想死,所以就去了兔子那个笼子里")
jlz();
return ;
}
slowsay("你没有理那只兔子。\n");
}
system("cls");
slowsay("你逛到了猿猴区。\n你竟然在猿猴区里发现了兔子!“真是奇怪。”你想。\n");
sr=_getch();
slowsay("这时又冲出来一个员工,要求你离开猿猴区。\n");
slowsay("你选择:\n1.听员工的话离开。\n2.继续游玩猿猴区。\n");
input(1,2);
if(sr==2){
srand(s*rand());
s=rand()%100;
if(s<20){
slowsay("你拿出一根香蕉,打算喂猴子。\n");
sr=_getch();
slowsay("结果猴子没过来,一只兔子向你冲来!\n");
bcl();
return;
}
slowsay("你看了看地图,似乎游玩地差不多了。你打算出去了。\n");
sr=_getch();
if(s<40){
slowsay("猿猴区只有一条在左侧的路通往外界.\n");
slowsay("你从这里出去了。");
lkl();
return ;
}else if(s<60){
slowsay("猿猴区只有一条在右侧的路通往外界.\n");
slowsay("你从这里出去了。");
cybcc();
return ;
}else if(s<80){
slowsay("猿猴区有两条路.\n");
slowsay("你打算从哪条路出去?\n1.左侧\n2.右侧\n");
input(1,2);
if(sr==1){
lkl();
return ;
}else{
cybcc();
return ;
}
}else{
slowsay("猿猴区似乎没有路……\n去别的地方找出口吧.\n");
}
}
slowsay("离开猿猴区后,你四处晃悠,发现了海洋馆。你进入了海洋馆。\n");
sr=_getch();
slowsay("海洋馆没有地图,于是你打算找个导游。\n");
sr=_getch();
slowsay("前面有两个员工,你打算找那个当导游?\n1.红衣员工\n2.黑衣员工\n");
input(1,2);
if(sr==1){
slowsay("他引你到了鲸鱼区。\n");
slowsay("鲸鱼区里竟然有大象?真是奇特!你这么想着。\n");
}else{
bpl();
return ;
}
srand(s*rand());
s=rand()%100;
if(s<50){
slowsay("海洋馆的告示中说,白天进入这里,不能超过半个小时。\n");
slowsay("现在半个小时已到,你要:\n1.离开这里\n2.留在这里。\n");
input(1,2);
if(sr==2){
bsc();
return ;
}
slowsay("你离开了海洋馆,回到了动物园大门,从大门出去了。\n");
lkl();
return ;
}
slowsay("现在是晚上了,员工带你进了一间钟点房。\n");
slowsay("你在床上玩了一会手机,一看表,到凌晨1点钟了。");
slowsay("这时,员工进来,强行关掉了你的水母小夜灯。\n");
slowsay("你打算:\n1.睡觉\n2.重新打开水母小夜灯。\n");
input(1,2);
if(sr==2){
bfx();
return ;
}
slowsay("起床了.\n");
slowsay("员工们马上下班了。你打算自己现在离开,还是跟员工们一起离开?\n");
slowsay("请选择:\n1.现在离开\n2.跟员工一起离开\n");
input(1,2);
if(sr==1){
hll();
return ;
}
slowsay("你离开了海洋馆,从动物园大门出去了。\n");
lkl();
}
int main(){
Read();
//tys();
/*if(first_read){
Login();
first_read=0;
}*/
while(1){
system("cls");
Save();
slowsay("1--开始游戏--\n");
slowsay("2--查看达成结局--\n");
slowsay("3--游戏介绍--\n");
slowsay("4--设置--\n");
slowsay("5--退出--\n");
slowsay("6--清空数据,重开一次--\n");
slowsay("7--灵感来源--\n");
slowsay("8--攻略--\n");
input(1,8);
if(sr==1){
open();
}else if(sr==2){
slowsay("共14");
//slowsay(jjs);
slowsay("个成就\n");
for(int i=1;i<maxn;i++){
slowsay(" ");
if(i==9){
slowsay("游戏还没写完,这个成就日后再解锁。\n");
continue;
}
if(jj[i]){
//cout<<" "<<jjm[i]<<endl;
slowsay(jjm[i]);
slowsay("\n");
}else{
//cout<<"未达成"<<endl;
slowsay("未达成\n");
}
sr=_getch();
}
}else if(sr==3){
slowsay("游戏名称:怪异的动物园\n");
slowsay("想必你也发现了,这个动物园规则非常奇怪。\n");
slowsay("接下来,你将作为一名游客/员工,进入这个奇怪的动物园,游玩后出园或一探究竟!\n");
sr=_getch();
}else if(sr==4){
slowsay("吐字速度:1.瞬间 2. 很快 3.正常 4.很慢 5.手动(按一下吐一个英文,中文要按两下)\n");
input(1,5);
if(sr==1){
sd=0;
}else if(sr==2){
sd=10;
}else if(sr==3){
sd=1;
}else if(sr==4){
sd=4;
}else{
sd=2147483647;
}
}else if(sr==5){
slowsay("真得要退出吗?退出输1\n");
cin>>sr;
if(sr==1){
slowsay("再见!\n");
return 0;
}
}else if(sr==6){
empty();
slowsay("已经清空。\n");
}else if(sr==7){
system("start https://www.zhihu.com/question/501736883/answer/2246982450");
}else{
slowsay("其实也没什么好说的,我就说两点:\n1.警惕黑衣人。\n2.很多地方使用了随机数,也就是不止一个结局,可能有好几个结局。\n");
}
}
}