C++恶魔轮盘赌升级版

作者心累,不想说啥,还是求点赞、关注、收藏、转发

直接给代码吧…… 

#include<bits/stdc++.h>
#include<Windows.h>
typedef long long ll;
using namespace std;
enum TOOLS {
    SMOKE,
    HAND_C,
    MAGNIFYING_GALSS,
    KNIFE,
    DRINKS
};
struct PLAYER_INFO {
	ll life;
	ll tls[5];
} player,dealer;
ll emp_bullets,tru_bullets,nw,nw_damage=1,money=10000;
bool Go_On=1;
vector<ll> Bullets;
bool now_gun=1,nxt_gun=0;

void HIDE() {
	CONSOLE_CURSOR_INFO cursor_info= {1,0};
	SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
void SetPos(int x,int y) {
	COORD pos;
	pos.X=y*2-1,pos.Y=x+1;
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void Introduction();
ll R(ll left_boundary,ll right_boundary);
void GiveOutTools();
void printOutTools();
void Init_Bullets();
bool Round();
void Do_Dealer_AI();
void Welcome();
int main() {
	for(ll i=1;i<=100;i++){
		cout<<"正在导入存档";
		ll x=i%4;
		switch(x){
			case 1:
				cout<<"/";
				break;
			case 2:
				cout<<"-";
				break;
			case 3:
				cout<<"\\";
				break;
			case 0:
				cout<<"|";
				break;
		}
		Sleep(50);
		system("cls");
	}
	cout<<"导入完毕!";
	Sleep(850);
	system("cls"); 
	ifstream fin("cundang.yuqiwei.emlpd");
	fin>>money;
	fin.close();
	HIDE();
//	Introduction();
redo:
	emp_bullets=tru_bullets=nw=nxt_gun=0;
	now_gun=nw_damage=Go_On=1;
	vector<ll>().swap(Bullets);
	cout<<"你有"<<money<<"枚金币,胜利翻倍,否则拿去66%\n";
	Sleep(2000);
	Welcome();
	Init_Bullets();
	GiveOutTools();
	while(Round()) {
		srand(time(NULL));
		ll a,b;
		a=b=0;
//		cout<<"  你 剩余血量"<<player.life<<"滴\n";
		cout<<"你  ";
		for(ll i=1; i<=player.life; i++) cout<<"▆";
		cout<<"\n";
//		cout<<"对手 剩余血量"<<dealer.life<<"滴\n";
		cout<<"对手";
		for(ll i=1; i<=dealer.life; i++) cout<<"▆";
		cout<<"\n";
		for(ll i=nw; i<Bullets.size(); i++)
			if(Bullets[i]) a++;
			else b++;
		if(nw>=Bullets.size()) {
			Init_Bullets(),GiveOutTools();
			cout<<"子弹已空,下一轮开始";
		} else {
			cout<<"剩余";
			for(ll i=1; i<=a; i++) cout<<"●";
			for(ll i=1; i<=b; i++) cout<<"○";
//		cout<<"剩余"<<a<<"发实弹和"<<b<<"发空弹\n";
		}
		Sleep(2000);
		system("cls");
	}
	system("cls");
	cout<<"要重新开始请输入1,否则输入0:";
	ll g=-1;
	while(g!=1&&g!=0) cin>>g;
	if(Go_On==0) money*=2;
	else money/=3;
	if(g==1) goto redo;
	ofstream fout("cundang.yuqiwei.emlpd");
	fout<<money;
	fout.close();
	return 0;
}
void Welcome() {
	system("color c");
	string map[7]= {"█▆▆▆▆      ▉▉     ▇▇      █              ██ ▆       █▆▅    ",
	                "▉              ▉ ▍    ▍▉      █              █     ▍     █    ▊  ",
	                "▉              ▉ ▋   ▋ ▉      █              █    ▍      █     ▍ ",
	                "█▆▆▆▆      ▉ ▊   ▎ ▉      █              █▆▇        █      ▍",
	                "▉              ▉  ▍  ▍ ▉      █              █            █      ▍",
	                "▉              ▉  ▋ ▋  ▉      █              █            █    ▆  ",
	                "█▆▆▆▆      ▉  ▇▇   ▉      █▇▇▇▇      █            █▅▇    "
	               };
	ll pos[5]={15,34,50,64,74};
	ll k=0;
	while(k<20) {
		if(k%2){
			for(ll r=0;r<7;r++){
				for(ll i=k;i<map[r].size();i++) cout<<map[r][i];
				cout<<"\n";
			}
		}
		else{
			for(ll r=0;r<7;r++){
				for(ll i=0;i<=k;i++) cout<<" ";
				for(ll i=0;i<map[r].size();i++) cout<<map[r][i];
				cout<<"\n";
			}
		}
		Sleep(25);
		system("cls");
		k++;
	}
	for(ll r=0;r<7;r++){
		for(ll i=0;i<map[r].size();i++) cout<<map[r][i];
		cout<<"\n";
	}
//	Sleep(3000);
	cout<<"\n\n";
	for(ll i=0;i<map[0].size()/2;i++){
		cout<<"█";
		Sleep(25);
	}
	system("cls");
	
	for(ll r=0;r<7;r++){
		for(ll i=0;i<map[r].size();i++) cout<<map[r][i];
		cout<<"\n";
	}
	
	cout<<"请输入每轮真弹数量,假弹数量,以及电量格数\n";
	cin>>tru_bullets>>emp_bullets>>player.life;
	dealer.life=player.life;
	system("cls");
}
void Introduction() {
	system("color c");
	cout<<"欢迎来到恶魔轮盘赌\n";
	cout<<"我是你的对手\n";
	Sleep(2000);
	system("cls");
	cout<<"请输入每轮真弹数量,假弹数量,以及电量格数\n";
	cin>>tru_bullets>>emp_bullets>>player.life;
	dealer.life=player.life;
	system("cls");
}
ll R(ll left_boundary,ll right_boundary) {
	return rand()%(right_boundary-left_boundary)+left_boundary;
}
void Init_Bullets() {
	ll e=emp_bullets,t=tru_bullets;
	while(e+t) {
		ll x=rand()%2;
		if(!x) {
			if(e) {
				e--;
				Bullets.push_back(x);
			} else {
				t--;
				Bullets.push_back(1);
			}
		} else {
			if(t) {
				t--;
				Bullets.push_back(x);
			} else {
				e--;
				Bullets.push_back(0);
			}
		}
	}
}
void GiveOutTools() {
	ll r=R(2,4);
	for(ll i=1; i<=2; i++)
		for(ll k=1; k<=r; k++) {
			ll tr=R(0,4);
			if(i==1) player.tls[tr]++;
			else dealer.tls[tr]++;
		}
}
void printOutTools() {
	cout<<"华子"<<player.tls[0]<<"个\n手铐"<<player.tls[1]<<"个\n放大镜"<<player.tls[2]<<"个\n小刀"<<player.tls[3]<<"个\n饮料"<<player.tls[4]<<"个\n";
	cout<<"手铐同一轮不可叠加,小刀伤害不可叠加\n";
}
void printEnemyTools() {
	cout<<"华子"<<dealer.tls[0]<<"个\n手铐"<<dealer.tls[1]<<"个\n放大镜"<<dealer.tls[2]<<"个\n小刀"<<dealer.tls[3]<<"个\n饮料"<<dealer.tls[4]<<"个\n";
}
bool Round() {
	if(Go_On!=1) return false;
	if(now_gun) {
		cout<<"输入1使用道具\n输入2直接开枪\n请选择:";
		printOutTools();
		ll slt;
		cin>>slt;
		while(slt!=1&&slt!=2) cin>>slt;
		if(slt==1) {
ReUse:
			system("cls");
			printOutTools();
			cout<<"请按顺序输入道具使用序列,道具之间空格隔开\n";
			string Use_tls;
			vector<string> nd_use_tls;
			cin.get();
			getline(cin,Use_tls);
			Use_tls+=" ";
			string getStr,emp;
			for(ll i=0; i<Use_tls.size(); i++)
				if(Use_tls[i]!=' ') getStr+=Use_tls[i];
				else {
					nd_use_tls.push_back(getStr);
					getStr=emp;
				}
			for(auto xx:nd_use_tls) {
				if(xx=="华子") if(player.tls[0]) player.tls[0]--,player.life++;
				if(xx=="手铐") if(player.tls[1]) player.tls[1]--,nxt_gun=1;
				if(xx=="放大镜") if(player.tls[2]) {
						player.tls[2]--;
						cout<<"当前子弹为:"<<(Bullets[nw]?"实弹":"空弹")<<"\n";
					}
				if(xx=="小刀") if(player.tls[3]) {
						nw_damage=min(nw_damage*2,(ll)2);
						player.tls[3]--;
					}
				if(xx=="饮料") if(player.tls[4]) {
						nw++;
						cout<<"退出了一发"<<(Bullets[nw-1]?"实弹":"空弹")<<"\n";
						player.tls[4]--;
					}
			}
			cout<<"qwq道具用好啦,";
		}
		cout<<"你要向谁开枪(1表示自己,2表示对手,3表示还要用道具):";
		cin>>slt;
		while(slt!=1&&slt!=2&&slt!=3) cin>>slt;
		if(slt==3) goto ReUse;
		if(slt==1) {
			if(Bullets[nw]==1) {
				cout<<"是实弹,你扣血了,扣了"<<nw_damage<<"滴,剩余"<<player.life-nw_damage<<"滴血\n";
				player.life-=nw_damage;
				if(player.life<=0) {
					cout<<"你挂了\n";
					Go_On=-1;
				}
				now_gun=nxt_gun;
				nxt_gun=!nxt_gun;
			} else {
				cout<<"是空弹,下一轮还是你\n";
				nxt_gun=1;
				now_gun=nxt_gun;
				nxt_gun=0;
			}
		} else {
			if(Bullets[nw]==1) {
				cout<<"是实弹,对手扣血"<<nw_damage<<"滴,剩余"<<dealer.life-nw_damage<<"滴血\n";
				dealer.life-=nw_damage;
				if(dealer.life<=0) {
					cout<<"对手挂了\n";
					Go_On=0;
				}
				now_gun=nxt_gun;
				nxt_gun=!nxt_gun;
			} else {
				cout<<"是空弹\n";
				now_gun=nxt_gun;
				nxt_gun=!nxt_gun;
			}
		}
		nw++;
		nw_damage=1;
	} else {
		Do_Dealer_AI();
	}
	return true;
}
void Do_Dealer_AI() {
	cout<<"对手有\n";
	printEnemyTools();
	Sleep(6000);
	system("cls");
	if(dealer.tls[0]) cout<<"对手使用了华子"<<dealer.tls[0]<<"个\n";
	while(dealer.tls[0]) {
		dealer.life++;
		dealer.tls[0]--;
	}
	Sleep(2000);
	if(dealer.tls[1]) if(nxt_gun) {
			nxt_gun=0;
			cout<<"对手使用了手铐\n";
			Sleep(2000);
			dealer.tls[1]--;
		}
	if(dealer.tls[2]) {
		cout<<"对手使用了放大镜\n";
		dealer.tls[2]--;
		Sleep(2000);
		int gt=Bullets[nw++];
		if(!gt) {
			cout<<"对手向自己开枪,是空弹\n";
			now_gun=0,nxt_gun=1;
		} else {
			cout<<"对手";
			if(dealer.tls[3]) {
				nw_damage=2;
				dealer.tls[3]--;
				cout<<"用小刀后";
			}
			cout<<"向你开枪\n";
			player.life-=nw_damage;
			cout<<"你剩"<<player.life<<"滴血\n";
			if(player.life<=0) {
				cout<<"你挂了\n";
				Go_On=-1;
			}
		}
	} else {
		int rnd=rand()%5+1;
		if(rnd<3) {
			cout<<"对手向你开枪,是"<<(Bullets[nw]?"实弹":"空弹")<<"\n";
			if(Bullets[nw++]) {
				player.life--;
				cout<<"你剩"<<player.life<<"滴血\n";
				if(player.life<=0) {
					cout<<"你挂了\n";
					Go_On=-1;
				}
				now_gun=nxt_gun;
				nxt_gun=!nxt_gun;
			} else {
				now_gun=nxt_gun;
				nxt_gun=!nxt_gun;
			}
		} else {
			int b=Bullets[nw++];
			cout<<"对手向自己开枪,是"<<(b?"实弹\n":"空弹\n");
			if(b) {
				dealer.life--;
				cout<<"对手剩"<<dealer.life<<"滴血\n";
				if(dealer.life<=0) {
					cout<<"对手挂了\n";
					Go_On=0;
				}
				now_gun=nxt_gun;
				nxt_gun=!nxt_gun;
			} else {
				now_gun=0,nxt_gun=1;
			}
		}
	}
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++小盆友

你的鼓励将是我创作的最大动力呦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值