#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
int sleeptime=40,jinruyouxixuanze,temp;
//函数先声明
void clear(int n);
void clean();
void slow(string s);
string math_to_string(int n);
void jinru();
void Cin(int &a,int b,int c);
void game();
void clear(int n){
if(n==1){
slow("请确认您已读完当前界面内容\n读完后请输入1\n");
Cin(temp,1,1);
}else{
Sleep(750);
}system("cls");
return ;
}void clean(){
system("cls");
return ;
}
void slow(string s){
for(int i=0;i<s.size();i++){
cout<<s[i];
Sleep(sleeptime);
}
}string math_to_string(int n){
if(n==0){
return "0";
}string s;
while(n!=0){
s+=n%10+'0';
n/=10;
}reverse(s.begin(),s.end());
return s;
}
void Cin(int &a,int b,int c){
while(true){
if(!(cin>>a)){
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
slow("输入无效 请输入数字!\n");
clear(0);
continue;
}if(a<b||a>c){
slow("请重新输入(范围:"+ math_to_string(b)+"-"+math_to_string(c)+")\n");
clear(0);
}else{
return ;
}
}
}void game(){
int dangqianlunshu=1;
while(dangqianlunshu<=3){
int wanjiaxueliang=dangqianlunshu*2,renjixueliang=dangqianlunshu*2;
vector<int>wanjiadaoju,renjidaoju;
// vecotr<bool>zidan;
while(wanjiaxueliang>=0&&renjixueliang>=0){
int dangqianzidanshu=2+rand()%7;
slow("当前回合有"+math_to_string(dangqianzidanshu)+"发子弹\n");
int shidanshu=1,kongdanshu=1;
shidanshu+=rand()%(dangqianzidanshu-1);
kongdanshu=dangqianzidanshu-shidanshu;
while(shidanshu>0&&kongdanshu>0){
}
}
}return ;
}
void jinru(){
clean();
slow("1.进入游戏\n");
slow("2.开启快速输出\n");
slow("3.游戏玩法说明\n");
slow("4.退出游戏\n");
Cin(jinruyouxixuanze,1,4);
if(jinruyouxixuanze==1){
game();
}else if(jinruyouxixuanze==2){
if(sleeptime==40){
sleeptime=5;
slow("已开启快速输出\n");
}else{
sleeptime=40;
slow("已关闭快速输出\n");
}Sleep(750);
jinru();
}else if(jinruyouxixuanze==3){
Sleep(500);
clean();
slow("玩法如下:\n");
slow("您和人机PK 需要用枪打死对方\n");
slow("有两种子弹\n1.空包弹 无伤害\n2.实弹 一点伤害\n");
slow("每人的血量随游戏的持续而增加\n");
slow("您可以选择用枪打自己或打人机\n");
slow("如您选择前者并且枪膛里是空包弹 则您的回合继续\n");
slow("如果您不幸选择了打自己并且枪膛里是实弹 则您的回合结束\n");
slow("如果您选择打人机 则无论枪膛里什么子弹 您的回合都会结束\n");
clear(1);
slow("游戏分为三轮\n");
slow("第一轮每人两点血量 两个道具 道具效果稍后将会提到\n");
slow("第二轮每人四点血量 四个道具\n");
slow("第三轮每人六点血量 六个道具\n");
slow("让一轮游戏结束很简单 一方无法复活且当前死亡\n");
slow("值得注意的是 血量为零并不是当前游戏轮结束\n");
slow("血量指的是复活次数\n当您还有复活机会时 您可以使用道具恢复复活次数\n");
slow("当您没有复活机会时 请小心\n");
slow("因为此时将无法通过任何道具恢复复活次数\n");
slow("此时如果您收到伤害 此轮游戏将立即结束并进入下一轮\n");
slow("当此轮游戏为第三轮且此轮游戏结束时将进入结算\n");
clear(1);
slow("道具介绍:\n");
slow("1.能量饮料:将当前枪膛里的子弹直接退出枪膛\n");
slow("2.手铐:使对方下一回合无法行动 但是对方可以使用药品\n");
slow("3.转换器:将枪膛里的子弹类型互相转化\n");
slow("4.放大镜:可以查看当前枪膛里的子弹\n");
slow("5.绷带:可以恢复1点血量 血量为0时无效果\n");
slow("6.肾上腺素:选择对方一个道具给自己立即使用\n");
slow("7.小刀:将下一发子弹伤害乘2");
slow("8.过期药品:恢复一点血量或失去一点血量(概率相等)\n");
slow("注意:过期药品在血量为零时无法恢复血量 但可以造成伤害\n");
slow("血量为零时 若使用过期药品有1/2的概率直接结束此轮游戏\n");
clear(1);
jinru();
}else{
return ;
}
}
int main(){
jinru();
return 0;
}