C++恶魔轮盘赌(道具版)

家人们,更新了昂,前文:来自阳了个阳C++的恶魔轮盘赌无道具版

作为阳了个阳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;
vector<ll> Bullets;
bool now_gun=1,nxt_gun=0;
void Introduction();
ll R(ll left_boundary,ll right_boundary);
void GiveOutTools();
void printOutTools();
void Init_Bullets();
bool Round();
void Do_Dealer_AI();
int main() {
	srand(time(NULL));
	Introduction();
	Init_Bullets();
	GiveOutTools();
	while(Round()) {
		ll a,b;
		a=b=0;
		cout<<"  你 剩余血量"<<player.life<<"滴\n";
		cout<<"对手 剩余血量"<<dealer.life<<"滴\n";
		for(ll i=nw;i<Bullets.size();i++)
			if(Bullets[i]) a++;
			else b++;
		cout<<"剩余"<<a<<"发实弹和"<<b<<"发空弹\n";
		if(nw>Bullets.size()) Init_Bullets(),GiveOutTools();
		Sleep(2000);
		system("cls");
	}
	return 0;
}
void Introduction() {
	system("color 4");
	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";
}
bool Round() {
	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";
					exit(0);
				}
				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";
					exit(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() {
	while(dealer.tls[0]) {
		dealer.life++;
		dealer.tls[0]--;
	}
	if(dealer.tls[1]) if(nxt_gun) {
			nxt_gun=0;
			dealer.tls[1]--;
		}
	if(dealer.tls[2]) {
		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;
			nw++;
			cout<<"你剩"<<player.life<<"滴血\n";
			if(player.life<=0) {
				cout<<"你挂了\n";
				exit(0);
			}
		}
	} else {
		int rnd=rand()%3+1;
		if(rnd<3) {
			cout<<"对手向你开枪,是"<<(Bullets[nw]?"实弹":"空弹")<<"\n";
			if(Bullets[nw]) {
				nw++;
				player.life--;
				cout<<"你剩"<<player.life<<"滴血\n";
				if(player.life<=0) {
					cout<<"你挂了\n";
					exit(0);
				}
				now_gun=nxt_gun;
				nxt_gun=!nxt_gun;
			} else {
				nw++;
				now_gun=nxt_gun;
				nxt_gun=!nxt_gun;
			}
		} else {
			int b=Bullets[nw];
			cout<<"对手向自己开枪,是"<<(b?"实弹\n":"空弹\n");
			if(b) {
				nw++;
				dealer.life--;
				cout<<"对手剩"<<dealer.life<<"滴血\n";
				if(dealer.life<=0) {
					cout<<"对手挂了\n";
					exit(0);
				}
				now_gun=nxt_gun;
				nxt_gun=!nxt_gun;
			} else {
				nw++;
				now_gun=0,nxt_gun=1;
			}
		}
	}
}

耗时2周,手撸的代码,誊抄在电脑上的,创作不易,在下跪求点赞+关注啊!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/560126.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《王者荣耀》Hello Kitty 小兵皮肤完整设置指南

王者荣耀与三丽鸥的联动活动上线了 Hello Kitty 小兵皮肤&#xff0c;让我们的峡谷小兵们也能穿上漂亮的衣服啦&#xff01;这款皮肤极具卡哇伊风格&#xff0c;引起了许多玩家的关注。许多小伙伴都想知道如何使用这款 Hello Kitty 小兵皮肤&#xff0c;今天小编将为大家整理出…

STC单片机与串口触摸屏通讯程序

/***串口1切换通讯测试,单片机发送数据给触摸屏***/ /***切换到3.0 3.1发送数据到串口通信软件 ***/ /***设置温度 加热时间读写EEPROM正确 ***/ #include <REG52.H> //2023 3 5 L330 CODE2667 #include <intrin…

使用JDK自带工具进行JVM内存分析之旅

进行jvm内存分析可以排查存在和潜在的问题。 通过借助jdk自带的常用工具&#xff0c;可以分析大概可能的问题定位以及确定优化方向。 JVM内存分析有很多好处。 内存泄漏排查&#xff1a;JVM 内存泄漏是指应用程序中的对象占用的内存无法被垃圾回收器释放&#xff0c;导致内存…

遥瞻智慧:排水系统远程监控的卓越解决方案

遥瞻智慧&#xff1a;排水系统远程监控的卓越解决方案 在城市脉络的深层肌理中&#xff0c;排水系统犹如一条条隐秘的生命线&#xff0c;默默承载着城市的呼吸与律动。然而&#xff0c;如何以科技之眼&#xff0c;赋予这些无形网络以实时感知、精准调控的能力&#xff0c;使之…

基于机器学习的车辆状态异常检测

基于马氏距离的车辆状态异常检测&#xff08;单一传感器&#xff09; 基于多元自动编码器的车辆状态异常检测 基于单传感器平滑马氏距离的车辆状态异常检测 工学博士&#xff0c;担任《Mechanical System and Signal Processing》等期刊审稿专家&#xff0c;擅长领域&#xff1…

数据分析场景,连号相关业务

连号相关业务 业务场景&#xff1a;现在需要从a列一堆编号中&#xff0c;将连号范围在10以内的数据分别分成一组。 先看实先效果 演示的为db2数据库&#xff0c;需要含有窗口函数&#xff0c;或者可以获取到当前数据偏移的上一位数据 第一步&#xff1a;将A列数据正序第二步…

量子密钥分发系统的设计与实现(三):量子信号的产生、调制及探测技术讨论

之前的文章我们对量子密钥分发系统功能的光路子系统进行了较为全面的分析&#xff0c;我们理解了光路子系统是量子密钥分发系统的基础。本文我们主要探讨下量子信号产生、调制及探测的基础技术&#xff0c;算是一篇承上启下的文章吧&#xff0c;对相关的原理进行探讨&#xff0…

如何使用 ArcGIS Pro 制作边界晕渲效果

在某些出版的地图中&#xff0c;边界有类似于“发光”的晕渲效果&#xff0c;这里为大家介绍一下如何使用ArcGIS Pro 制作这种晕渲效果&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的行政区划数据&#xff0c;除了行政区划数据&#xff0c…

wsl2 Ubuntu子系统内存只有一半的解决办法

物理机的内存是64G&#xff0c;在wsl2安装完Ubuntu20.04后&#xff0c;输入命令&#xff1a; free -g 发现只有32G&#xff0c;原因是默认只能获得物理机一半的内存&#xff1a; WSL 中的高级设置配置 | Microsoft Learn 因此可手动修改为与物理机同等大小&#xff1a; 1&a…

如何解决DDoS攻击?群联科技做出回答。

DDoS攻击&#xff08;分布式拒绝服务攻击&#xff09;是一种恶意利用多台傀儡机协同发起大规模网络流量&#xff0c;旨在压垮目标系统或网络资源&#xff0c;使其无法正常服务的网络攻击手段。由于现代计算机和网络性能的提升&#xff0c;单点发起的DoS攻击已难以奏效&#xff…

Day01——NestJS学习之了解、安装、运行

什么是 Nest.js&#xff1f; NestJs 官方简介: Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的开发框架。它利用 JavaScript 的渐进增强的能力&#xff0c;使用并完全支持 TypeScript &#xff08;仍然允许开发者使用纯 JavaScript 进行开发&#x…

数据仓库作业五:第8章 关联规则挖掘

目录 第8章 关联规则挖掘作业题 第8章 关联规则挖掘 作业题 1、设4-项集 X { a , b , c , d } X\{a,b,c,d\} X{a,b,c,d}&#xff0c;试求出由 X X X 导出的所有关联规则。 解&#xff1a; 首先生成项集的所有非空真子集。这包括&#xff1a; { a } , { b } , { c } , {…

ansible执行mysql脚本

目录 概述实践环境要求ansible yml脚本命令离线包 概述 ansible执行mysql脚本 实践 官网文档 环境要求 环境需要安装以下内容: 1.mysql客户端(安装了mysql即会有)2.安装MySQL-python (Python 2.X) 详细插件安装链接 ansible yml脚本 关键代码如下&#xff1a; # 剧本…

ROS2学习笔记(一) 基本概念

1. Node 节点 节点: 完成具体功能的模块 相关命令 #运行命令 ros2 run <package_name> <executable_name>#当前节点查询查询 ros2 node list#重映射 Remapping ros2 run <package_name> <executable_name> --ros-args --remap __node:<node_na…

KaiwuDB CTO 魏可伟:AIoT,用行业定义数据库

4月12日&#xff0c;由中国 DBA 联盟&#xff08;ACDU&#xff09;与墨天轮社区联合主办的第十三届数据技术嘉年华&#xff08;DTC 2024&#xff09;于北京盛大召开。KaiwuDB CTO 魏可伟受邀发表《智创当下&#xff0c;KaiwuDB 从多模到 AI 的探索实践》主题演讲&#xff0c;向…

Axure如何实现限制选择项数量的交互

大家经常会看到这样的功能设计&#xff1a;可以多选&#xff0c;但是限制多选。比如某招聘网站城市的选择只能选择5个。再选择第6个的时候会提示最多只能选择5项。 这个效果是我们经常会遇到的&#xff0c;在工作中也经常会遇到需要制作这样的效果。今天我们一起来看看&#xf…

Mac M3 安装Ollama和llama3,本地部署LobeChat和刘皇叔聊三国!

OllamaLobeChat&#xff0c;本地部署聊天助手 Ollama安装下载OllamaOllama常用指令和链接运行OllamaAPI 交互Ollama基于Llama 3角色扮演 LobeChat安装首先安装docker安装LobeChat的docker 镜像和运行 Ollama安装 下载Ollama 网址&#xff1a;https://ollama.com/ 支持macOS、…

产废端实时音视频监控系统在运输车辆驾驶室中的应用

实时音视频监控系统可通过在运输车辆驾驶室安装音视频摄录设备&#xff0c;实现将运输车辆内部及周围环境音视频数据通过移动网络实时回传指挥中心的功能。 前端摄录设备主要负责采集车内外的视音频信息&#xff0c;为了保障车辆及运输人员 的安全&#xff0c;应合理选择摄录设…

LeetCode 349.两个数组的交集(HashSet的使用)

给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,2,1], nums2 [2,2] 输出&#xff1a;[2]示例 2&#xff1a; 输入&#xff1a;nums1 …

电商技术揭秘三十:知识产权保护浅析

电商技术揭秘相关系列文章&#xff08;上&#xff09; 相关系列文章&#xff08;中&#xff09; 电商技术揭秘二十&#xff1a;能化供应链管理 电商技术揭秘二十一:智能仓储与物流优化(上) 电商技术揭秘二十二:智能仓储与物流优化(下) 电商技术揭秘二十三&#xff1a;智能…
最新文章