话不多说,上游戏代码:
更新了,去看看吧!
#ifndef SOMETHING_H
#define SOMETHING_H
#include<bits/stdc++.h>
#include<windows.h>
void ycgb() {
CONSOLE_CURSOR_INFO cursor;
cursor.bVisible = FALSE;
cursor.dwSize = sizeof(cursor);
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorInfo(handle, &cursor);
return ;
}
#endif
using namespace std;
int tot=1,num=100,m,x,x1[5];
string xx;
bool flag=false,root=false,game=false;
string str;
void gj() {
system("shutdown -s -t 1");
}
void zt() {
system("pause");
}
void qp() {
system("cls");
}
void ys() {
for(int i=1; i<=100000010*2.5; i++) {}
}
int zhuan(int l,int r,string ing) {
int sum=0;
l--,r--;
for(int i=l; i<=r; i++) sum=sum*10+int(ing[i])-48;
return sum;
}
void h() {
int mam=0;
while(++mam!=1) {
system("color 1");
system("color 2");
system("color 3");
system("color 4");
system("color 5");
system("color 6");
system("color 7");
system("color 8");
system("color 9");
system("color 10");
system("color 11");
system("color 12");
system("color 13");
system("color 14");
system("color 15");
system("color 16");
system("color 17");
system("color 18");
system("color 19");
system("color 20");
}
}
void djs() {
system("color 4");
ys();
qp();
cout<<"关机倒计时开始:"<<endl;
ys();
qp();
h();
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" ************"<<endl;
cout<<" ***"<<endl;
cout<<" ***"<<endl;
cout<<" ************"<<endl;
cout<<" ***"<<endl;
cout<<" ***"<<endl;
cout<<" ************"<<endl;
ys();
h();
qp();
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" ************"<<endl;
cout<<" ***"<<endl;
cout<<" ***"<<endl;
cout<<" ************"<<endl;
cout<<" *** "<<endl;
cout<<" *** "<<endl;
cout<<" ************"<<endl;
ys();
h();
qp();
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<" ****** "<<endl;
cout<<" ** ** "<<endl;
cout<<" ** ** "<<endl;
cout<<" ** "<<endl;
cout<<" ** "<<endl;
cout<<" ** "<<endl;
cout<<" ************"<<endl;
ys();
h();
if(!flag&&!root) gj();
else qp(),cout<<"游戏失败!"<<endl,zt(),game=true;
}
void pt() {
qp();
srand(time(0));
while(tot!=7) {
int sum;
srand(time(0));
memset(x1,67,sizeof x1);
printf("第%d轮:请输入一个1-%d之间的数\n\n",tot,num);
if(tot==1) system("color 1"),x1[1]=rand()%num+1,x1[2]=rand()%num+1,x1[3]=rand()%num+1,x1[4]=rand()%num+1,sum=5;
if(tot==2) system("color 2"),x1[1]=rand()%num+1,x1[2]=rand()%num+1,x1[3]=rand()%num+1,x1[4]=rand()%num+1,sum=5;
if(tot==3) system("color 3"),x1[1]=rand()%num+1,x1[2]=rand()%num+1,x1[3]=rand()%num+1,sum=4;
if(tot==4) system("color 8"),x1[1]=rand()%num+1,x1[2]=rand()%num+1,sum=3;
if(tot==5) system("color 5"),x1[1]=rand()%num+1,sum=2;
if(tot==6) system("color 6"),sum=1;
printf("此轮有%d个炸弹\n踩到炸弹的概率为%d/%d\n",sum,sum/__gcd(sum,num),num/__gcd(sum,num));
x1[0]=rand()%num+1;
map<int,int> mp;
for(int i=0; i<sum; i++) {
if(mp[x1[i]]==0) mp[x1[i]]++;
else {
while(mp[x1[i]]) x1[i]=rand()%num+1;
mp[x1[i]]++;
}
}
srand(time(0));
sort(x1,x1+5);
if(flag) {
cout<<"炸弹为:";
for(int i=0; i<sum; i++) cout<<x1[i]<<" ";
cout<<endl;
}
string a;
cin>>a;
m=zhuan(1,a.size(),a);
if(m==x1[0]||m==x1[1]||m==x1[2]||m==x1[3]||m==x1[4]) {
qp();
cout<<"你踩到了炸弹,游戏结束"<<endl;
djs();
return ;
}
if(m<1||m>num) {
qp();
cout<<"你的输入超出了范围,游戏结束"<<endl;
djs();
return ;
}
qp();
cout<<"成功进入下一个关卡"<<endl;
ys();
num/=2;
qp();
tot++;
}
system("color 4");
cout<<"恭喜你来到了最后一关"<<endl;
zt();
qp();
srand(time(0));
cout<<"接下来是一个生死存亡的关键时刻"<<endl;
zt();
qp();
cout<<"最后一轮:请输入0或1中的一个数"<<endl;
x=rand()%2;
if(flag) cout<<"炸弹为:"<<x<<endl;
string a;
cin>>a;
m=zhuan(1,a.size(),a);
if(m==x) {
qp();
cout<<"你踩到了炸弹,游戏结束"<<endl;
djs();
return ;
}
if(m!=1&&m!=0) {
qp();
cout<<"你的输入超出了范围,游戏结束"<<endl;
djs();
return ;
}
}
void dk() {
qp();
cout<<"此模式输入炸弹有要求,如下:"<<endl;
cout<<"1.炸弹不能重复"<<endl;
cout<<"2.炸弹不能超出范围"<<endl;
cout<<"你准备好了吗?"<<endl;
zt();
qp();
srand(time(0));
while(tot!=7) {
int sum;
srand(time(0));
memset(x1,67,sizeof x1);
if(tot==1) system("color 1"),sum=5;
if(tot==2) system("color 2"),sum=5;
if(tot==3) system("color 3"),sum=4;
if(tot==4) system("color 8"),sum=3;
if(tot==5) system("color 5"),sum=2;
if(tot==6) system("color 6"),sum=1;
while(1) {
printf("第%d轮:请输入一个1-%d之间的数\n\n",tot,num);
printf("出题者请输入%d个炸弹:\n",sum);
string a;
for(int i=0; i<sum; i++) cin>>a,x1[i]=zhuan(1,a.size(),a);
sort(x1,x1+sum);
map<int,int> mp;
bool gm=true;
for(int i=0; i<sum; i++) {
mp[x1[i]]++;
if(mp[x1[i]]>1) {
gm=false;
break;
}
}
if(x1[0]<1||x1[sum-1]>num) gm=false;
qp();
if(gm==false) cout<<"输入不符合要求,请重新输入!"<<endl,ys();
else break;
qp();
}
printf("第%d轮:请输入一个1-%d之间的数\n\n",tot,num);
printf("此轮有%d个炸弹\n踩到炸弹的概率为%d/%d\n",sum,sum/__gcd(sum,num),num/__gcd(sum,num));
if(flag) {
cout<<"炸弹为:";
for(int i=0; i<sum; i++) cout<<x1[i]<<" ";
cout<<endl;
}
printf("玩家请输入数字:\n");
string a;
cin>>a;
m=zhuan(1,a.size(),a);
if(m==x1[0]||m==x1[1]||m==x1[2]||m==x1[3]||m==x1[4]) {
qp();
cout<<"你踩到了炸弹,游戏结束"<<endl;
djs();
return ;
}
if(m<1||m>num) {
qp();
cout<<"你的输入超出了范围,游戏结束"<<endl;
djs();
return ;
}
qp();
cout<<"成功进入下一个关卡"<<endl;
ys();
num/=2;
qp();
tot++;
}
system("color 4");
cout<<"恭喜你来到了最后一关"<<endl;
zt();
qp();
cout<<"接下来是一个生死存亡的关键时刻"<<endl;
zt();
qp();
while(1) {
cout<<"最后一轮:请输入0或1中的一个数"<<endl;
printf("出题者请输入1个炸弹:\n");
string a;
cin>>a,x=zhuan(1,a.size(),a);
bool gm=true;
if(x%2!=x) gm=false;
qp();
if(gm==false) cout<<"输入不符合要求,请重新输入!"<<endl,ys();
else break;
qp();
}
qp();
cout<<"最后一轮:请输入0或1中的一个数"<<endl;
if(flag) cout<<"炸弹为:"<<x<<endl;
printf("玩家请输入数字:\n");
string a;
cin>>a;
m=zhuan(1,a.size(),a);
if(m==x) {
qp();
cout<<"你踩到了炸弹,游戏结束"<<endl;
djs();
return ;
}
if(m!=1&&m!=0) {
qp();
cout<<"你的输入超出了范围,游戏结束"<<endl;
djs();
return ;
}
}
void jj() {
qp();
srand(time(0));
int peo,zhu,m;
while(1) {
qp();
printf("游戏前,请先回答2个问题\n");
printf(" 2<=people<=10 \n");
printf("1.此次游戏人数有几个:");
string a;
cin>>a;
peo=zhuan(1,a.size(),a);
if(peo<2||peo>10) cout<<"输入不符合要求,请重新输入!"<<endl,ys();
else break;
qp();
}
qp();
while(1) {
printf("游戏前,请先回答2个问题\n");
printf("2.本机的主人想成为玩家几:\n");
string a;
cin>>a;
zhu=zhuan(1,a.size(),a);
if(zhu<1||zhu>peo) cout<<"输入不符合要求,请重新输入!"<<endl,ys();
else break;
qp();
}
qp();
printf("开始游戏!\t");
ys();
qp();
bool f_new[11],f_old[11];
memset(f_old,true,sizeof f_old);
while(tot!=7) {
memset(f_new,true,sizeof f_new);
int sum;
srand(time(0));
memset(x1,67,sizeof x1);
printf("第%d轮:请输入一个1-%d之间的数\n\n",tot,num);
if(tot==1) system("color 1"),x1[1]=rand()%num+1,x1[2]=rand()%num+1,x1[3]=rand()%num+1,x1[4]=rand()%num+1,sum=5;
if(tot==2) system("color 2"),x1[1]=rand()%num+1,x1[2]=rand()%num+1,x1[3]=rand()%num+1,x1[4]=rand()%num+1,sum=5;
if(tot==3) system("color 3"),x1[1]=rand()%num+1,x1[2]=rand()%num+1,x1[3]=rand()%num+1,sum=4;
if(tot==4) system("color 8"),x1[1]=rand()%num+1,x1[2]=rand()%num+1,sum=3;
if(tot==5) system("color 5"),x1[1]=rand()%num+1,sum=2;
if(tot==6) system("color 6"),sum=1;
printf("此轮有%d个炸弹\n踩到炸弹的概率为%d/%d\n",sum,sum/__gcd(sum,num),num/__gcd(sum,num));
x1[0]=rand()%num+1;
map<int,int> mp;
for(int i=0; i<sum; i++) {
if(mp[x1[i]]==0) mp[x1[i]]++;
else {
while(mp[x1[i]]) x1[i]=rand()%num+1;
mp[x1[i]]++;
}
}
sort(x1,x1+5);
if(flag) {
cout<<"炸弹为:";
for(int i=0; i<sum; i++) cout<<x1[i]<<" ";
cout<<endl;
}
for(int i=1; i<=peo; i++)
if(f_old[i]) {
printf("玩家%d:",i);
string a;
cin>>a;
m=zhuan(1,a.size(),a);
if(m==x1[0]||m==x1[1]||m==x1[2]||m==x1[3]||m==x1[4]) f_new[i]=false;
if(m<1||m>num) f_new[i]=false;
}
qp();
srand(time(0));
int jj_f=0;
for(int i=1; i<=peo; i++) {
if(f_new[i]==false) jj_f=1,printf("玩家%d死亡\n",i);
}
for(int i=1; i<=peo; i++)
if(f_new[i]==false) f_old[i]=false;
int jj_ff=0;
for(int i=1; i<=peo; i++)
if(f_old[i]==false) jj_ff++;
if(jj_ff==peo) {
cout<<"无人胜利"<<endl;
zt();
printf("因本机主人死亡\n");
djs();
return ;
}
if(jj_f==0) printf("无人死亡\n");
cout<<"下一个关卡"<<endl;
zt();
num/=2;
qp();
tot++;
}
system("color 4");
cout<<"恭喜你来到了最后一关"<<endl;
zt();
qp();
cout<<"接下来是一个生死存亡的关键时刻"<<endl;
zt();
qp();
cout<<"最后一轮:请输入0或1中的一个数"<<endl;
x=rand()%2;
if(flag) cout<<"炸弹为:"<<x<<endl;
for(int i=1; i<=peo; i++)
if(f_old[i]) {
printf("玩家%d:",i);
string a;
cin>>a;
m=zhuan(1,a.size(),a);
if(m==x) f_old[i]=false;
if(m!=0&&m!=1) f_old[i]=false;
}
qp();
int jj_f=0;
for(int i=1; i<=peo; i++) {
if(f_old[i]) jj_f=1;
}
if(jj_f) {
cout<<"玩家 ";
for(int i=1; i<=peo; i++)
if(f_old[i]) cout<<i<<" ";
cout<<"胜利!"<<endl;
} else cout<<"无人胜利"<<endl;
zt();
if(f_old[zhu]==false) {
printf("因本机主人死亡\n");
djs();
}
srand(time(0));
}
void jjdk() {
qp();
cout<<"此模式输入炸弹有要求,如下:"<<endl;
cout<<"1.炸弹不能重复"<<endl;
cout<<"2.炸弹不能超出范围"<<endl;
cout<<"你准备好了吗?"<<endl;
zt();
qp();
srand(time(0));
int peo,zhu,m;
while(1) {
qp();
printf("游戏前,请先回答2个问题\n");
printf(" 2<=people<=10 \n");
printf("1.此次游戏人数有几个:");
string a;
cin>>a;
peo=zhuan(1,a.size(),a);
if(peo<2||peo>10) cout<<"输入不符合要求,请重新输入!"<<endl,ys();
else break;
qp();
}
qp();
while(1) {
printf("游戏前,请先回答2个问题\n");
printf("2.本机的主人想成为玩家几:\n");
string a;
cin>>a;
zhu=zhuan(1,a.size(),a);
if(zhu<1||zhu>peo) cout<<"输入不符合要求,请重新输入!"<<endl,ys();
else break;
qp();
}
qp();
printf("开始游戏!\t");
ys();
qp();
bool f_new[11],f_old[11];
memset(f_old,true,sizeof f_old);
while(tot!=7) {
memset(f_new,true,sizeof f_new);
int sum;
srand(time(0));
memset(x1,67,sizeof x1);
if(tot==1) system("color 1"),sum=5;
if(tot==2) system("color 2"),sum=5;
if(tot==3) system("color 3"),sum=4;
if(tot==4) system("color 8"),sum=3;
if(tot==5) system("color 5"),sum=2;
if(tot==6) system("color 6"),sum=1;
while(1) {
printf("第%d轮:请输入一个1-%d之间的数\n\n",tot,num);
printf("出题者请输入%d个炸弹:\n",sum);
string a;
for(int i=0; i<sum; i++) cin>>a,x1[i]=zhuan(1,a.size(),a);
sort(x1,x1+sum);
map<int,int> mp;
bool gm=true;
for(int i=0; i<sum; i++) {
mp[x1[i]]++;
if(mp[x1[i]]>1) {
gm=false;
break;
}
}
if(x1[0]<1||x1[sum-1]>num) gm=false;
qp();
if(gm==false) cout<<"输入不符合要求,请重新输入!"<<endl,ys();
else break;
qp();
}
printf("第%d轮:请输入一个1-%d之间的数\n\n",tot,num);
printf("此轮有%d个炸弹\n踩到炸弹的概率为%d/%d\n",sum,sum/__gcd(sum,num),num/__gcd(sum,num));
if(flag) {
cout<<"炸弹为:";
for(int i=0; i<sum; i++) cout<<x1[i]<<" ";
cout<<endl;
}
for(int i=1; i<=peo; i++)
if(f_old[i]) {
printf("玩家%d:",i);
string a;
cin>>a;
m=zhuan(1,a.size(),a);
if(m==x1[0]||m==x1[1]||m==x1[2]||m==x1[3]||m==x1[4]) f_new[i]=false;
if(m<1||m>num) f_new[i]=false;
}
qp();
srand(time(0));
int jj_f=0;
for(int i=1; i<=peo; i++) {
if(f_new[i]==false) jj_f=1,printf("玩家%d死亡\n",i);
}
for(int i=1; i<=peo; i++)
if(f_new[i]==false) f_old[i]=false;
int jj_ff=0;
for(int i=1; i<=peo; i++)
if(f_old[i]==false) jj_ff++;
if(jj_ff==peo) {
cout<<"无人胜利"<<endl;
zt();
printf("因本机主人死亡\n");
djs();
return ;
}
if(jj_f==0) printf("无人死亡\n");
cout<<"下一个关卡"<<endl;
zt();
num/=2;
qp();
tot++;
}
system("color 4");
cout<<"恭喜你来到了最后一关"<<endl;
zt();
qp();
cout<<"接下来是一个生死存亡的关键时刻"<<endl;
zt();
qp();
while(1) {
cout<<"最后一轮:请输入0或1中的一个数"<<endl;
printf("出题者请输入1个炸弹:\n");
string a;
cin>>a,x=zhuan(1,a.size(),a);
bool gm=true;
if(x%2!=x) gm=false;
qp();
if(gm==false) cout<<"输入不符合要求,请重新输入!"<<endl,ys();
else break;
qp();
}
cout<<"最后一轮:请输入0或1中的一个数"<<endl;
if(flag) cout<<"炸弹为:"<<x<<endl;
for(int i=1; i<=peo; i++)
if(f_old[i]) {
printf("玩家%d:",i);
string a;
cin>>a;
m=zhuan(1,a.size(),a);
if(m==x) f_old[i]=false;
if(m!=0&&m!=1) f_old[i]=false;
}
qp();
int jj_f=0;
for(int i=1; i<=peo; i++) {
if(f_old[i]) jj_f=1;
}
if(jj_f) {
cout<<"玩家 ";
for(int i=1; i<=peo; i++)
if(f_old[i]) cout<<i<<" ";
cout<<"胜利!"<<endl;
} else cout<<"无人胜利"<<endl;
zt();
if(f_old[zhu]==false) {
printf("因本机主人死亡\n");
djs();
}
srand(time(0));
}
void js() {
cout<<"每一轮中都有一个或以上的炸弹"<<endl;
cout<<"千万不要踩到炸弹"<<endl;
cout<<"或超出给定的范围哟......"<<endl;
cout<<"如果你是admin/root"<<endl;
cout<<"请输入admin/root密码"<<endl;
zt();
}
void yxjs() {
cout<<"普通模式:单人游戏"<<endl;
cout<<"对抗模式:双人游戏"<<endl;
cout<<"竞技模式:三人及以上人游戏"<<endl;
cout<<"竞技对抗:竞技和对抗模式的结合体"<<endl;
cout<<"如果你输入的数是字符"<<endl;
cout<<"系统会将其变为ascall码"<<endl;
zt();
}
void win() {
qp();
cout<<"恭喜你通关此游戏!"<<endl;
zt();
}
void mm(bool &flag) {
cout<<"请输入密码:";
cin>>str;
int hash=0;
for(int i=0; i<str.size(); i++) hash=(hash*37+str[i])%9999991;
srand(hash);
rand();
int code1=rand();
hash=0;
for(int i=0; i<str.size(); i++) hash=(hash*51+str[i])%10241023;
srand(hash);
rand();
int code2=rand();
hash=0;
for(int i=0; i<str.size(); i++) hash=(hash*13+str[i])%54088025;
srand(hash);
rand();
int code3=rand();
if(code1!=27591||code2!=18068||code3!=1177||str.size()>8) cout<<"密码错误!"<<endl;
else flag=!flag,root=false;
}
void ss(bool &root) {
int s1=rand()%100+1000,s2=rand()%100+1000,s3;
cout<<"请输入"<<s1<<"和"<<s2<<"的和:"<<endl;
if(flag) cout<<"和为:"<<s1+s2<<endl;
cin>>s3;
if(s3!=s1+s2) cout<<"密码错误!"<<endl;
else flag=false,root=!root;
}
void show() {
cout<<" 欢迎来到数字炸弹! "<<endl;
cout<<"******************************"<<endl;
cout<<"*********1.开始游戏***********"<<endl;
cout<<"*********2.玩法介绍***********"<<endl;
cout<<"*********3.admin模式**********"<<endl;
cout<<"*********4.root模式***********"<<endl;
cout<<"*********5.退出游戏***********"<<endl;
cout<<"******************************"<<endl;
}
void adminshow() {
cout<<" 欢迎来到数字炸弹(admin) "<<endl;
cout<<"******************************"<<endl;
cout<<"*********1.开始游戏***********"<<endl;
cout<<"*********2.玩法介绍***********"<<endl;
cout<<"*********3.退出admin**********"<<endl;
cout<<"*********4.root模式***********"<<endl;
cout<<"*********5.退出游戏***********"<<endl;
cout<<"******************************"<<endl;
}
void rootshow() {
cout<<" 欢迎来到数字炸弹(root) "<<endl;
cout<<"******************************"<<endl;
cout<<"*********1.开始游戏***********"<<endl;
cout<<"*********2.玩法介绍***********"<<endl;
cout<<"*********3.admin模式**********"<<endl;
cout<<"*********4.退出root***********"<<endl;
cout<<"*********5.退出游戏***********"<<endl;
cout<<"******************************"<<endl;
}
void gameshow() {
cout<<" 开始游戏 "<<endl;
cout<<"******************************"<<endl;
cout<<"*********1.普通模式***********"<<endl;
cout<<"*********2.对抗模式***********"<<endl;
cout<<"*********3.竞技模式***********"<<endl;
cout<<"*********4.竞技对抗***********"<<endl;
cout<<"*********5.模式介绍***********"<<endl;
cout<<"*********6.返回主页***********"<<endl;
cout<<"******************************"<<endl;
}
void ks() {
while(1) {
qp();
gameshow();
cin>>xx;
if(xx=="1") {
pt();
if(!game) win();
qp();
tot=1,num=100,game=false;
}
if(xx=="2") {
dk();
if(!game) win();
qp();
tot=1,num=100,game=false;
}
if(xx=="3") {
jj();
if(!game) win();
qp();
tot=1,num=100,game=false;
}
if(xx=="4") {
jjdk();
if(!game) win();
qp();
tot=1,num=100,game=false;
}
if(xx=="5") {
qp();
yxjs();
qp();
}
if(xx=="6") {
return ;
}
qp();
}
}
void zjm() {
while(1) {
system("color 0");
if(!flag&&!root) show();
else if(flag&&!root) adminshow();
else rootshow();
cin>>xx;
if(xx=="1") {
qp();
ks();
qp();
continue;
}
if(xx=="2") {
qp();
js();
qp();
}
if(xx=="3") {
qp();
mm(flag);
}
if(xx=="4") {
qp();
ss(root);
}
if(xx=="5") {
qp();
return ;
}
qp();
}
}
int main() {
ycgb();
system("mode con cols=30 lines=15");
srand(time(0));
zjm();
return 0;
}