#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;
}