恶魔轮盘(c++小游戏)
2025-07-12 21:54:17
发布于:湖南
#include<windows.h>
#include<bits/stdc++.h>
using namespace std;
// 颜色定义
enum ConsoleColor {
BLACK = 0,
BLUE = 1,
GREEN = 2,
CYAN = 3,
RED = 4,
MAGENTA = 5,
BROWN = 6,
LIGHTGRAY = 7,
DARKGRAY = 8,
LIGHTBLUE = 9,
LIGHTGREEN = 10,
LIGHTCYAN = 11,
LIGHTRED = 12,
LIGHTMAGENTA = 13,
YELLOW = 14,
WHITE = 15
};
// 设置控制台文本颜色
void SetColor(ConsoleColor textColor, ConsoleColor backgroundColor = BLACK) {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, (WORD)((backgroundColor << 4) | textColor));
}
// 重置控制台文本颜色为默认
void ResetColor() {
SetColor(LIGHTGRAY, BLACK);
}
int Your=5,Other=5;
string daojuname[]={"放大镜","手铐","骨刃","外挂2","饮料"};
double Yourmoney;
int shi,kong;
int q[10],qlen;//1 实 2 空
int Rand(int x,int y){
int A=rand(),B=rand();
return A*1ll*B%(y-x+1)+x;
}
int T;//ou->you
int daojulen;
int daoju[10];
int daojulen1;
int daoju1[10];
void build(){
kong=Rand(1,4);
shi=Rand(1,4);
qlen=0;
printf("%d发实弹,%d发空弹\n",shi,kong);
int a1=kong,a2=shi;
for(int i=1;i<=kong+shi;i++){
// Sleep(50);
int sum=Rand(1,a1+a2);
if(sum<=a1){
a1--;
q[++qlen]=2;
}else{
a2--;
q[++qlen]=1;
}
}
int maxn=min(4,8-daojulen);
printf("你获得了%d个道具:\n",maxn);
daojulen+=maxn;
for(int i=1;i<=maxn;i++){
// Sleep(50);
int kkk=Rand(0,4);
daoju[kkk]++;
cout<<daojuname[kkk];
if(i!=maxn){
printf(",");
}
}
printf("\n");
maxn=min(4,8-daojulen1);
printf("Puster获得了%d个道具:\n",maxn);
daojulen1+=maxn;
for(int i=1;i<=maxn;i++){
int kkk=Rand(0,4);
daoju1[kkk]++;
cout<<daojuname[kkk];
if(i!=maxn){
printf(",");
}
}
printf("\n");
system("pause");
system("cls");
}
void IsOver(){
if(Your<=0){
SetColor(RED);
printf("你输了\n");
ResetColor();
system("pause");
exit(0);
}
if(Other<=0){
SetColor(GREEN);
printf("你赢了\n你获得了奖金$%.2lf\n",Yourmoney);
ResetColor();
system("pause");
exit(0);
}
}
void wait(){
for(int i=1;i<=3;i++){
Sleep(500);
printf(".");
}
Sleep(500);
}
int Hurt=1;
int shoukao_you;
void Timeyou(){
// 生命信息使用红色
SetColor(RED);
printf("你的生命:%d/5\nPuster生命:%d/5\n",Your,Other);
ResetColor();
// 子弹信息使用白色
SetColor(WHITE);
printf("剩余实弹数:%d 剩余空弹数:%d\n",shi,kong);
ResetColor();
// 玩家道具使用黄色
SetColor(YELLOW);
printf("你现在拥有的道具:\n");
for(int i=0;i<=4;i++){
cout<<daojuname[i]<<":";
printf("%d",daoju[i]);
printf("个");
printf(",");
}
printf("\n");
ResetColor();
// 对手道具使用蓝色
SetColor(BLUE);
printf("Puster现在拥有的道具:\n");
for(int i=0;i<=4;i++){
cout<<daojuname[i]<<":";
printf("%d",daoju1[i]);
printf("个");
if(i!=4){
printf(",");
}
}
printf("\n");
ResetColor();
// 回合提示使用黄色
SetColor(YELLOW);
printf("--------------------现在是你的回合--------------------\n");
ResetColor();
// 选项使用青色
SetColor(CYAN);
printf("你要\n1.向Puster开枪\n2.向自己开枪\n");
for(int i=0;i<=4;i++){
printf("%d.使用",i+3);
cout<<daojuname[i]<<'\n';
}
ResetColor();
int x;
while(1){
scanf("%d",&x);
if(1<=x&&x<=7){
break;
}
SetColor(RED);
printf("输入不合法\n");
ResetColor();
Sleep(1145);
system("cls");
// 重新显示界面
SetColor(RED);
printf("你的生命:%d/5\nPuster生命:%d/5\n",Your,Other);
ResetColor();
SetColor(BLUE);
printf("剩余实弹数:%d 剩余空弹数:%d\n",shi,kong);
ResetColor();
SetColor(GREEN);
printf("你现在拥有的道具:\n");
for(int i=0;i<=4;i++){
cout<<daojuname[i]<<":";
printf("%d",daoju[i]);
printf("个");
printf(",");
}
printf("\n");
ResetColor();
SetColor(MAGENTA);
printf("Puster现在拥有的道具:\n");
for(int i=0;i<=4;i++){
cout<<daojuname[i]<<":";
printf("%d",daoju1[i]);
printf("个");
if(i!=4){
printf(",");
}
}
printf("\n");
ResetColor();
SetColor(YELLOW);
printf("--------------------现在是你的回合--------------------\n");
ResetColor();
SetColor(CYAN);
printf("你要\n1.向Puster开枪\n2.向自己开枪\n");
for(int i=0;i<=4;i++){
printf("%d.使用",i+3);
cout<<daojuname[i]<<'\n';
}
ResetColor();
}
if(x==1){
SetColor(CYAN);
printf("你决定向Puster开枪");
ResetColor();
T++;
wait();
if(q[qlen]==2){
SetColor(GREEN);
printf("是空弹=)\n");
ResetColor();
Yourmoney+=(double)(2000.0*(Hurt*1.0)*(1+(double)(shi)*1.0/(double)(shi+kong)));
kong--;
qlen--;
Hurt=1;
if(shoukao_you==1){
shoukao_you=0;
SetColor(YELLOW);
printf("因为你使用了手铐,所以可以再来一次\n");
ResetColor();
Sleep(500);
T--;
}
}else{
SetColor(RED);
printf("是实弹=)\n");
ResetColor();
Yourmoney+=(double)(5000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
shi--;
qlen--;
Other-=Hurt;
Hurt=1;
Sleep(500);
IsOver();
if(shoukao_you==1){
shoukao_you=0;
Yourmoney+=1000.0;
SetColor(YELLOW);
printf("因为你使用了手铐,所以可以再来一次\n");
ResetColor();
Sleep(500);
T--;
}
}
}else if(x==2){
SetColor(CYAN);
printf("你决定向自己开枪");
ResetColor();
wait();
if(q[qlen]==2){
SetColor(GREEN);
printf("是空弹\n");
ResetColor();
Yourmoney+=(double)(2000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
kong--;
qlen--;
Hurt=1;
}else{
SetColor(RED);
printf("是实弹\n");
ResetColor();
Yourmoney+=5000.0*(1+(double)(shi)*1.0/(double)(shi+kong));
T++;
shi--;
qlen--;
Your-=Hurt;
Hurt=1;
Sleep(500);
IsOver();
if(shoukao_you==1){
shoukao_you=0;
SetColor(YELLOW);
printf("因为你使用了手铐,所以可以再来一次\n");
ResetColor();
Sleep(500);
T--;
}
}
}else if(x==3){//{"放大镜","手铐","小刀","烟","饮料"};
if(daoju[0]){
daoju[0]--;
daojulen--;
SetColor(YELLOW);
printf("你使用了放大镜\n");
ResetColor();
wait();
printf("\n你看到了");
if(q[qlen]==1){
SetColor(RED);
printf("实弹\n");
ResetColor();
Yourmoney+=2500.0;
}else{
SetColor(GREEN);
printf("空弹\n");
ResetColor();
}
Sleep(500);
printf("\n");
}else{
SetColor(RED);
printf("你现在没有放大镜\n");
ResetColor();
Sleep(1145);
system("cls");
}
}else if(x==4){
if(daoju[1]){
if(!shoukao_you){
daoju[1]--;
daojulen--;
SetColor(YELLOW);
printf("你使用了手铐\n");
printf("你获得了连开两枪的机会\n");
ResetColor();
shoukao_you=1;
}else{
SetColor(RED);
printf("你已经用过手铐了\n");
ResetColor();
}
Sleep(1145);
system("cls");
}else{
SetColor(RED);
printf("你现在没有手铐\n");
ResetColor();
Sleep(1145);
system("cls");
}
}else if(x==5){
if(daoju[2]){
if(Hurt==1){
daoju[2]--;
daojulen--;
SetColor(YELLOW);
printf("你使用了骨刃\n");
printf("若下一发为实弹则伤害+1\n");
ResetColor();
Yourmoney+=500.0;
Hurt=2;
}else{
SetColor(RED);
printf("你已经用过骨刃了\n");
ResetColor();
}
Sleep(1145);
system("cls");
}else{
SetColor(RED);
printf("你现在没有骨刃\n");
ResetColor();
Sleep(1145);
system("cls");
}
}else if(x==6){
if(daoju[3]){
if(Your^5){
daoju[3]--;
daojulen--;
SetColor(YELLOW);
printf("你使用了外挂2\n");
printf("你回复了一点生命\n");
ResetColor();
Yourmoney+=500.0;
Your++;
}else{
SetColor(RED);
printf("你现在不需要开挂\n");
ResetColor();
}
Sleep(1145);
}else{
SetColor(RED);
printf("你现在没有外挂\n");
ResetColor();
Sleep(1145);
system("cls");
}
}else{
if(daoju[4]){
daoju[4]--;
daojulen--;
SetColor(YELLOW);
printf("你使用了饮料\n");
ResetColor();
wait();
printf("\n");
printf("你退了一发");
if(q[qlen]==2){
SetColor(GREEN);
printf("空弹");
ResetColor();
kong--;
}else{
SetColor(RED);
printf("实弹");
ResetColor();
Yourmoney+=500.0;
shi--;
}
qlen--;
Sleep(500);
}else{
SetColor(RED);
printf("你现在没有饮料\n");
ResetColor();
Sleep(1145);
system("cls");
}
}
Sleep(1000);
system("cls");
}
int Know;//通过放大镜得知下一发子弹
int shoukaoemo;
void fightyou(){
printf("Puster决定向你开枪");
T++;
wait();
if(q[qlen]==2){
SetColor(GREEN);
printf("是空弹\n");
ResetColor();
Yourmoney+=(double)(2000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
kong--;
qlen--;
Hurt=1;
Know=0;
if(shoukaoemo){
SetColor(YELLOW);
printf("因为Puster使用了手铐,所以可以再来一次\n");
ResetColor();
T--;
Sleep(500);
shoukaoemo=0;
}
}else{
SetColor(RED);
printf("是实弹\n");
ResetColor();
Yourmoney+=(double)(5000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
shi--;
qlen--;
Your-=Hurt;
Hurt=1;
Know=0;
Sleep(500);
IsOver();
if(shoukaoemo){
SetColor(YELLOW);
printf("因为Puster使用了手铐,所以可以再来一次\n");
ResetColor();
Yourmoney+=1000.0;
T--;
Sleep(500);
shoukaoemo=0;
}
}
}
void fightemo(){
printf("Puster决定向自己开枪");
wait();
if(q[qlen]==2){
SetColor(GREEN);
printf("是空弹\n");
ResetColor();
Yourmoney+=2000.0*(1+(double)(shi)*1.0/(double)(shi+kong));
kong--;
qlen--;
Know=0;
}else{
SetColor(RED);
printf("是实弹\n");
ResetColor();
Yourmoney+=5000.0*(1+(double)(kong)*1.0/(double)(shi+kong));
shi--;
T++;
qlen--;
Other-=Hurt;
Hurt=1;
Know=0;
Sleep(500);
IsOver();
if(shoukaoemo){
SetColor(YELLOW);
printf("因为Puster使用了手铐,所以可以再来一次\n");
ResetColor();
T--;
Sleep(500);
shoukaoemo=0;
}
}
}
// 计算攻击玩家的预期收益
double calculateAttackValue() {
double baseValue = (q[qlen] == 1) ? 5000.0 : 2000.0;
double damageMultiplier = (Hurt > 1) ? 2.0 : 1.0;
double bulletRatio = (q[qlen] == 1) ?
(1.0 + (double)kong / (double)(shi+kong)) :
(1.0 + (double)shi / (double)(shi+kong));
return baseValue * damageMultiplier * bulletRatio;
}
// 计算攻击自己的预期收益
double calculateSelfAttackValue() {
double baseValue = (q[qlen] == 1) ? 5000.0 : 2000.0;
double bulletRatio = (q[qlen] == 1) ?
(1.0 + (double)shi / (double)(shi+kong)) :
(1.0 + (double)kong / (double)(shi+kong));
return baseValue * bulletRatio;
}
void Timeother(){
// 生命信息使用红色
SetColor(RED);
printf("你的生命:%d/5\nPuster生命:%d/5\n",Your,Other);
ResetColor();
// 子弹信息使用蓝色
SetColor(BLUE);
printf("剩余实弹数:%d 剩余空弹数:%d\n",shi,kong);
ResetColor();
// 玩家道具使用绿色
SetColor(GREEN);
printf("你现在拥有的道具:\n");
for(int i=0;i<=4;i++){
cout<<daojuname[i]<<":";
printf("%d",daoju[i]);
printf("个");
printf(",");
}
printf("\n");
ResetColor();
// 对手道具使用紫色
SetColor(MAGENTA);
printf("Puster现在拥有的道具:\n");
for(int i=0;i<=4;i++){
cout<<daojuname[i]<<":";
printf("%d",daoju1[i]);
printf("个");
if(i!=4){
printf(",");
}
}
printf("\n");
ResetColor();
// 回合提示使用黄色
SetColor(YELLOW);
printf("--------------------现在是Puster的回合--------------------\n");
ResetColor();
Sleep(1500);
// 优先回复生命
if(Other < 3 && daoju1[3] > 0) {
daoju1[3]--;
daojulen1--;
SetColor(YELLOW);
printf("Puster使用了外挂2\n");
printf("Puster回复了一点生命\n");
ResetColor();
Other++;
Yourmoney+=500.0;
Sleep(1145);
system("cls");
return;
}
// 分析局势
bool isNextBulletKnown = (Know == 1 || Know == 2);
bool isNextBulletReal = (Know == 1);
bool hasCuff = (daoju1[1] > 0 && !shoukaoemo);
bool hasBoneBlade = (daoju1[2] > 0 && Hurt == 1);
bool hasMagnifier = (daoju1[0] > 0);
bool hasDrink = (daoju1[4] > 0);
// 如果知道下一发是实弹,优先使用骨刃
if(isNextBulletReal && hasBoneBlade) {
daoju1[2]--;
daojulen1--;
Hurt++;
SetColor(YELLOW);
printf("Puster使用了骨刃\n");
printf("若下一发为实弹则伤害+1");
ResetColor();
Yourmoney+=500.0;
Sleep(1145);
system("cls");
return;
}
// 如果知道下一发是空弹,并且有饮料,使用饮料
if(Know == 2 && hasDrink) {
daoju1[4]--;
daojulen1--;
SetColor(YELLOW);
printf("Puster使用了饮料\n");
ResetColor();
wait();
printf("\n");
SetColor(GREEN);
printf("Puster退了一发空弹");
ResetColor();
kong--;
Know=0;
qlen--;
Sleep(500);
system("cls");
return;
}
// 新增:如果已经知道下一发子弹,且有手铐,直接使用手铐
if(isNextBulletKnown && hasCuff) {
daoju1[1]--;
daojulen1--;
shoukaoemo=1;
SetColor(YELLOW);
printf("Puster使用了手铐\n");
printf("Puster获得了连开两枪的机会\n");
ResetColor();
Sleep(1145);
system("cls");
return;
}
// 如果不知道下一发子弹情况,且有放大镜,并且局势需要确认
if(!isNextBulletKnown && hasMagnifier) {
// 计算使用放大镜的价值
bool shouldUseMagnifier = false;
// 当子弹数量接近时,放大镜价值更高
if(abs(shi - kong) <= 1 && shi > 0 && kong > 0) {
shouldUseMagnifier = true;
}
// 当剩余子弹很少时,放大镜价值更高
else if(shi + kong <= 3) {
shouldUseMagnifier = true;
}
// 当有骨刃可用时,放大镜价值更高
else if(hasBoneBlade) {
shouldUseMagnifier = true;
}
if(shouldUseMagnifier) {
daoju1[0]--;
daojulen1--;
SetColor(YELLOW);
printf("Puster使用了放大镜\n");
ResetColor();
wait();
printf("\nPuster看到了");
if(q[qlen]==1){
SetColor(RED);
printf("实弹");
ResetColor();
Yourmoney+=2500.0;
Know=1;
}else{
SetColor(GREEN);
printf("空弹");
ResetColor();
Know=2;
}
Sleep(1145);
system("cls");
return;
}
}
// 如果有手铐,并且下一发是实弹,或者实弹比例高,使用手铐
if(hasCuff) {
bool shouldUseCuff = false;
// 如果知道下一发是实弹
if(isNextBulletReal) {
shouldUseCuff = true;
}
// 如果不知道下一发子弹,但实弹比例高
else if(!isNextBulletKnown && shi > kong && shi > 0) {
shouldUseCuff = true;
}
if(shouldUseCuff) {
daoju1[1]--;
daojulen1--;
shoukaoemo=1;
SetColor(YELLOW);
printf("Puster使用了手铐\n");
printf("Puster获得了连开两枪的机会\n");
ResetColor();
Sleep(1145);
system("cls");
return;
}
}
// 如果有骨刃,并且实弹比例高,使用骨刃
if(hasBoneBlade && shi > kong && shi > 0) {
daoju1[2]--;
daojulen1--;
Hurt++;
SetColor(YELLOW);
printf("Puster使用了骨刃\n");
printf("若下一发为实弹则伤害+1");
ResetColor();
Yourmoney+=500.0;
Sleep(1145);
system("cls");
return;
}
// 如果有饮料,并且知道下一发是空弹,或者空弹比例高,使用饮料
if(hasDrink) {
bool shouldUseDrink = false;
// 如果知道下一发是空弹
if(Know == 2) {
shouldUseDrink = true;
}
// 如果不知道下一发子弹,但空弹比例高
else if(!isNextBulletKnown && kong > shi && kong > 0) {
shouldUseDrink = true;
}
if(shouldUseDrink) {
daoju1[4]--;
daojulen1--;
SetColor(YELLOW);
printf("Puster使用了饮料\n");
ResetColor();
wait();
printf("\n");
printf("Puster退了一发");
if(q[qlen]==2){
SetColor(GREEN);
printf("空弹");
ResetColor();
kong--;
}else{
SetColor(RED);
printf("实弹");
ResetColor();
Yourmoney+=500.0;
shi--;
}
Know=0;
Hurt=1; // 重置骨刃效果
qlen--;
Sleep(500);
system("cls");
return;
}
}
// 根据预期收益决定是攻击玩家还是自己
double attackValue = calculateAttackValue();
double selfAttackValue = calculateSelfAttackValue();
// 如果攻击玩家的预期收益更高,或者自己生命值低,优先攻击玩家
if(attackValue > selfAttackValue || Other <= Your) {
fightyou();
} else {
fightemo();
}
Sleep(1145);
system("cls");
}
void Play(){
while(1){
if(shi==0){
build();
T=0;
continue;
}
if(T%2==0){
Timeyou();
}else{
Timeother();
}
}
}
void danrenplay(){
SetColor(YELLOW);
printf("<Puster>:...");
printf("\n");
printf("<Puster>:又来了...\n");
ResetColor();
Sleep(1000);
int x;
while(1){
SetColor(LIGHTCYAN);
printf("<Puster>:准备好play了吗?胜者拿钱败者Die\n1.ok\n2.没问题\n");
ResetColor();
scanf("%d",&x);
if(x==1||x==2){
break;
}
SetColor(RED);
printf("输入不合法\n");
ResetColor();
Sleep(1145);
system("cls");
}
while(1){
SetColor(LIGHTCYAN);
printf("<Puster>:你清楚我们的规则吗?\n1.清楚\n2.不清楚\n");
ResetColor();
scanf("%d",&x);
if(x==1||x==2){
break;
}
SetColor(RED);
printf("输入不合法\n");
ResetColor();
Sleep(1145);
system("cls");
}
if(x==1){
SetColor(YELLOW);
printf("<Puster>:很好...\n");
ResetColor();
}else{
SetColor(YELLOW);
printf("<Puster>:......");
printf("\n");
printf("<Puster>:规则:\n");
ResetColor();
SetColor(LIGHTGREEN);
printf("<Puster>:你和其他人(me/B)都各有5点生命\n") ;
printf("<Puster>:每一回合开始前,你将知道一共有几发实弹,几发空弹,同时双方都将获得4个道具作为补给(上限为8个)\n");
printf("<Puster>:每一回合,你可以选择对自己开枪,对恶魔开枪或者使用道具\n");
printf("<Puster>:如果你对自己开枪,若为空弹,则可以继续行动,否则,停止行动\n");
printf("<Puster>:如果你对我开枪,无论如何,都将停止行动\n");
ResetColor();
SetColor(LIGHTMAGENTA);
printf("<Puster>:道具一览:\n");
printf("<Puster>: 放大镜:可以知道下一发子弹是空弹还是实弹\n");
printf("<Puster>: 手铐:增加一次本回合的行动次数\n");
printf("<Puster>: 骨刃:若下一发子弹为实弹,则伤害+1\n");
printf("<Puster>: 外挂2:可以回复1点体力\n");
printf("<Puster>: 饮料:可以退一发子弹\n");
ResetColor();
system("pause");
system("cls");
}
SetColor(YELLOW);
printf("<Puster>:ok\n");
printf("<Puster>:游戏开始...\n");
ResetColor();
Sleep(1145);
system("cls");
Play();
}
void IsOver_duo(){
if(Your<=0){
SetColor(RED);
printf("玩家B赢了\n玩家B获得了奖金$%.2lf\n",Yourmoney);
ResetColor();
system("pause");
exit(0);
}else if(Other<=0){
SetColor(GREEN);
printf("玩家A赢了\n玩家A获得了奖金$%.2lf\n",Yourmoney);
ResetColor();
system("pause");
exit(0);
}
}
void build_duo(){
kong=Rand(1,4);
shi=Rand(1,4);
qlen=0;
printf("%d发实弹,%d发空弹\n",shi,kong);
int a1=kong,a2=shi;
for(int i=1;i<=kong+shi;i++){
int sum=Rand(1,a1+a2);
if(sum<=a1){
a1--;
q[++qlen]=2;
}else{
a2--;
q[++qlen]=1;
}
}
int maxn=min(2,8-daojulen);
printf("玩家A获得了%d个道具:\n",maxn);
daojulen+=maxn;
for(int i=1;i<=maxn;i++){
int kkk=Rand(0,4);
daoju[kkk]++;
cout<<daojuname[kkk];
if(i!=maxn){
printf(",");
}
}
printf("\n");
maxn=min(2,8-daojulen1);
printf("玩家B获得了%d个道具:\n",maxn);
daojulen1+=maxn;
for(int i=1;i<=maxn;i++){
int kkk=Rand(0,4);
daoju1[kkk]++;
cout<<daojuname[kkk];
if(i!=maxn){
printf(",");
}
}
printf("\n");
system("pause");
system("cls");
}
void Timeyou_duo(){
SetColor(RED);
printf("玩家A的生命:%d/4\n玩家B的生命:%d/4\n",Your,Other);
ResetColor();
SetColor(BLUE);
printf("剩余实弹数:%d 剩余空弹数:%d\n",shi,kong);
ResetColor();
SetColor(GREEN);
printf("玩家A现在拥有的道具:\n");
for(int i=0;i<=4;i++){
cout<<daojuname[i]<<":";
printf("%d",daoju[i]);
printf("个");
printf(",");
}
printf("\n");
ResetColor();
SetColor(MAGENTA);
printf("玩家B现在拥有的道具:\n");
for(int i=0;i<=4;i++){
cout<<daojuname[i]<<":";
printf("%d",daoju1[i]);
printf("个");
if(i!=4){
printf(",");
}
}
printf("\n");
ResetColor();
SetColor(YELLOW);
printf("--------------------现在是玩家A的回合--------------------\n");
ResetColor();
SetColor(CYAN);
printf("玩家A要\n1.向玩家B开枪\n2.向自己开枪\n");
for(int i=0;i<=4;i++){
printf("%d.使用",i+3);
cout<<daojuname[i]<<'\n';
}
ResetColor();
int x;
while(1){
scanf("%d",&x);
if(1<=x&&x<=7)break;
SetColor(RED);
printf("输入不合法\n");
ResetColor();
Sleep(1145);
system("cls");
SetColor(RED);
printf("玩家A的生命:%d/4\n玩家B的生命:%d/4\n",Your,Other);
ResetColor();
SetColor(BLUE);
printf("剩余实弹数:%d 剩余空弹数:%d\n",shi,kong);
ResetColor();
SetColor(GREEN);
printf("玩家A现在拥有的道具:\n");
for(int i=0;i<=4;i++){
cout<<daojuname[i]<<":";
printf("%d",daoju[i]);
printf("个");
printf(",");
}
printf("\n");
ResetColor();
SetColor(MAGENTA);
printf("玩家B现在拥有的道具:\n");
for(int i=0;i<=4;i++){
cout<<daojuname[i]<<":";
printf("%d",daoju1[i]);
printf("个");
if(i!=4){
printf(",");
}
}
printf("\n");
ResetColor();
SetColor(YELLOW);
printf("--------------------现在是玩家A的回合--------------------\n");
ResetColor();
SetColor(CYAN);
printf("玩家A要\n1.向玩家B开枪\n2.向自己开枪\n");
for(int i=0;i<=4;i++){
printf("%d.使用",i+3);
cout<<daojuname[i]<<'\n';
}
ResetColor();
}
if(x==1){
SetColor(CYAN);
printf("玩家A决定向玩家B开枪");
ResetColor();
T++;
wait();
if(q[qlen]==2){
SetColor(GREEN);
printf("是空弹\n");
ResetColor();
Yourmoney+=(double)(2000.0*(Hurt*1.0)*(1+(double)(shi)*1.0/(double)(shi+kong)));
kong--;
qlen--;
Hurt=1;
if(shoukao_you==1){
shoukao_you=0;
SetColor(YELLOW);
printf("因为玩家A使用了手铐,所以可以再来一次\n");
ResetColor();
Sleep(500);
T--;
}
}else{
SetColor(RED);
printf("是实弹\n");
ResetColor();
Yourmoney+=(double)(5000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
shi--;
qlen--;
Other-=Hurt;
Hurt=1;
Sleep(500);
IsOver_duo();
if(shoukao_you==1){
shoukao_you=0;
Yourmoney+=1000.0;
SetColor(YELLOW);
printf("因为玩家A使用了手铐,所以可以再来一次\n");
ResetColor();
Sleep(500);
T--;
}
}
}else if(x==2){
SetColor(CYAN);
printf("玩家A决定向自己开枪");
ResetColor();
wait();
if(q[qlen]==2){
SetColor(GREEN);
printf("是空弹\n");
ResetColor();
Yourmoney+=(double)(2000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
kong--;
qlen--;
Hurt=1;
}else{
SetColor(RED);
printf("是实弹\n");
ResetColor();
Yourmoney+=5000.0*(1+(double)(shi)*1.0/(double)(shi+kong));
T++;
shi--;
qlen--;
Your-=Hurt;
Hurt=1;
Sleep(500);
IsOver_duo();
if(shoukao_you==1){
shoukao_you=0;
SetColor(YELLOW);
printf("因为玩家A使用了手铐,所以可以再来一次\n");
ResetColor();
Sleep(500);
T--;
}
}
}else if(x==3){//{"放大镜","手铐","小刀","烟","饮料"};
if(daoju[0]){
daoju[0]--;
daojulen--;
SetColor(YELLOW);
printf("玩家A使用了放大镜\n");
ResetColor();
wait();
printf("\n玩家A看到了");
if(q[qlen]==1){
SetColor(RED);
printf("实弹\n");
ResetColor();
Yourmoney+=2500.0;
}else{
SetColor(GREEN);
printf("空弹\n");
ResetColor();
}
Sleep(500);
printf("\n");
}else{
SetColor(RED);
printf("玩家A现在没有放大镜\n");
ResetColor();
Sleep(1145);
system("cls");
}
}else if(x==4){
if(daoju[1]){
if(!shoukao_you){
daoju[1]--;
daojulen--;
SetColor(YELLOW);
printf("玩家A使用了手铐\n");
printf("玩家A获得了连开两枪的机会\n");
ResetColor();
shoukao_you=1;
}else{
SetColor(RED);
printf("玩家A已经用过手铐了\n");
ResetColor();
}
Sleep(1145);
system("cls");
}else{
SetColor(RED);
printf("玩家A现在没有手铐\n");
ResetColor();
Sleep(1145);
system("cls");
}
}else if(x==5){
if(daoju[2]){
if(Hurt==1){
daoju[2]--;
daojulen--;
SetColor(YELLOW);
printf("玩家A使用了骨刃\n");
printf("若下一发为实弹则伤害+1\n");
ResetColor();
Yourmoney+=500.0;
Hurt=2;
}else{
SetColor(RED);
printf("玩家A已经用过骨刃了\n");
ResetColor();
}
Sleep(1145);
system("cls");
}else{
SetColor(RED);
printf("玩家A现在没有骨刃\n");
ResetColor();
Sleep(1145);
system("cls");
}
}else if(x==6){
if(daoju[3]){
if(Your^4){
daoju[3]--;
daojulen--;
SetColor(YELLOW);
printf("玩家A使用了外挂2\n");
printf("玩家A回复了一点生命\n");
ResetColor();
Yourmoney+=500.0;
Your++;
}else{
SetColor(RED);
printf("玩家A现在不需要开挂\n");
ResetColor();
}
Sleep(1145);
}else{
SetColor(RED);
printf("玩家A现在没有外挂\n");
ResetColor();
Sleep(1145);
system("cls");
}
}else{
if(daoju[4]){
daoju[4]--;
daojulen--;
SetColor(YELLOW);
printf("玩家A使用了饮料\n");
ResetColor();
wait();
printf("\n");
printf("玩家A退了一发");
if(q[qlen]==2){
SetColor(GREEN);
printf("空弹");
ResetColor();
kong--;
}else{
SetColor(RED);
printf("实弹");
ResetColor();
Yourmoney+=500.0;
shi--;
}
qlen--;
Sleep(500);
}else{
SetColor(RED);
printf("玩家A现在没有饮料\n");
ResetColor();
Sleep(1145);
system("cls");
}
}
Sleep(1000);
system("cls");
}
void Timeother_duo(){
SetColor(RED);
printf("玩家A的生命:%d/4\n玩家B的生命:%d/4\n",Your,Other);
ResetColor();
SetColor(BLUE);
printf("剩余实弹数:%d 剩余空弹数:%d\n",shi,kong);
ResetColor();
SetColor(GREEN);
printf("玩家A现在拥有的道具:\n");
for(int i=0;i<=4;i++){
cout<<daojuname[i]<<":";
printf("%d",daoju[i]);
printf("个");
printf(",");
}
printf("\n");
ResetColor();
SetColor(MAGENTA);
printf("玩家B现在拥有的道具:\n");
for(int i=0;i<=4;i++){
cout<<daojuname[i]<<":";
printf("%d",daoju1[i]);
printf("个");
if(i!=4)printf(",");
}
printf("\n");
ResetColor();
SetColor(YELLOW);
printf("--------------------现在是玩家B的回合--------------------\n");
ResetColor();
Sleep(1500);
int x;
while(1){
SetColor(CYAN);
printf("玩家B要\n1.向玩家A开枪\n2.向自己开枪\n");
for(int i=0;i<=4;i++){
printf("%d.使用",i+3);
cout<<daojuname[i]<<'\n';
}
ResetColor();
scanf("%d",&x);
if(1<=x&&x<=7){
break;
}
SetColor(RED);
printf("输入不合法\n");
ResetColor();
Sleep(1145);
system("cls");
SetColor(RED);
printf("玩家A的生命:%d/4\n玩家B的生命:%d/4\n",Your,Other);
ResetColor();
SetColor(BLUE);
printf("剩余实弹数:%d 剩余空弹数:%d\n",shi,kong);
ResetColor();
SetColor(GREEN);
printf("玩家A现在拥有的道具:\n");
for(int i=0;i<=4;i++){
cout<<daojuname[i]<<":";
printf("%d",daoju[i]);
printf("个");
printf(",");
}
printf("\n");
ResetColor();
SetColor(MAGENTA);
printf("玩家B现在拥有的道具:\n");
for(int i=0;i<=4;i++){
cout<<daojuname[i]<<":";
printf("%d",daoju1[i]);
printf("个");
if(i!=4){
printf(",");
}
}
printf("\n");
ResetColor();
SetColor(YELLOW);
printf("--------------------现在是玩家B的回合--------------------\n");
ResetColor();
}
if(x==1){
SetColor(CYAN);
printf("玩家B决定向玩家A开枪");
ResetColor();
T++;
wait();
if(q[qlen]==2){
SetColor(GREEN);
printf("是空弹\n");
ResetColor();
Yourmoney+=(double)(2000.0*(Hurt*1.0)*(1+(double)(shi)*1.0/(double)(shi+kong)));
kong--;
qlen--;
Hurt=1;
if(shoukao_you==1){
shoukao_you=0;
SetColor(YELLOW);
printf("因为玩家B使用了手铐,所以可以再来一次\n");
ResetColor();
Sleep(500);
T--;
}
}else{
SetColor(RED);
printf("是实弹\n");
ResetColor();
Yourmoney+=(double)(5000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
shi--;
qlen--;
Your-=Hurt;
Hurt=1;
Sleep(500);
IsOver_duo();
if(shoukao_you==1){
shoukao_you=0;
Yourmoney+=1000.0;
SetColor(YELLOW);
printf("因为玩家B使用了手铐,所以可以再来一次\n");
ResetColor();
Sleep(500);
T--;
}
}
}else if(x==2){
SetColor(CYAN);
printf("玩家B决定向自己开枪");
ResetColor();
wait();
if(q[qlen]==2){
SetColor(GREEN);
printf("是空弹\n");
ResetColor();
Yourmoney+=(double)(2000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
kong--;
qlen--;
Hurt=1;
}else{
SetColor(RED);
printf("是实弹\n");
ResetColor();
Yourmoney+=5000.0*(1+(double)(shi)*1.0/(double)(shi+kong));
T++;
shi--;
qlen--;
Other-=Hurt;
Hurt=1;
Sleep(500);
IsOver_duo();
if(shoukao_you==1){
shoukao_you=0;
SetColor(YELLOW);
printf("因为玩家B使用了手铐,所以可以再来一次\n");
ResetColor();
Sleep(500);
T--;
}
}
}else if(x==3){//{"放大镜","手铐","小刀","烟","饮料"};
if(daoju1[0]){
daoju1[0]--;
daojulen1--;
SetColor(YELLOW);
printf("玩家B使用了放大镜\n");
ResetColor();
wait();
printf("\n玩家B看到了");
if(q[qlen]==1){
SetColor(RED);
printf("实弹\n");
ResetColor();
}else{
SetColor(GREEN);
printf("空弹\n");
ResetColor();
}
Sleep(500);
printf("\n");
}else{
SetColor(RED);
printf("玩家B现在没有放大镜\n");
ResetColor();
Sleep(1145);
system("cls");
}
}else if(x==4){
if(daoju1[1]){
if(!shoukao_you){
daoju1[1]--;
daojulen1--;
SetColor(YELLOW);
printf("玩家B使用了手铐\n");
printf("玩家B获得了连开两枪的机会\n");
ResetColor();
shoukao_you=1;
}else{
SetColor(RED);
printf("玩家B已经用过手铐了\n");
ResetColor();
}
Sleep(1145);
system("cls");
}else{
SetColor(RED);
printf("玩家B现在没有手铐\n");
ResetColor();
Sleep(1145);
system("cls");
}
}else if(x==5){
if(daoju1[2]){
if(Hurt==1){
daoju1[2]--;
daojulen1--;
SetColor(YELLOW);
printf("玩家B使用了骨刃\n");
printf("若下一发为实弹则伤害+1\n");
ResetColor();
Hurt=2;
}else{
SetColor(RED);
printf("玩家B已经用过骨刃了\n");
ResetColor();
}
Sleep(1145);
system("cls");
}else{
SetColor(RED);
printf("玩家B现在没有骨刃\n");
ResetColor();
Sleep(1145);
system("cls");
}
}else if(x==6){
if(daoju1[3]){
if(Other^4){
daoju1[3]--;
daojulen1--;
SetColor(YELLOW);
printf("玩家B使用了外挂2\n");
printf("玩家B回复了一点生命\n");
ResetColor();
Yourmoney+=500.0;
Other++;
}else{
SetColor(RED);
printf("玩家B现在不需要开挂\n");
ResetColor();
}
Sleep(1145);
}else{
SetColor(RED);
printf("玩家B现在没有外挂\n");
ResetColor();
Sleep(1145);
system("cls");
}
}else{
if(daoju1[4]){
daoju1[4]--;
daojulen1--;
SetColor(YELLOW);
printf("玩家B使用了饮料\n");
ResetColor();
wait();
printf("\n");
printf("玩家B退了一发");
if(q[qlen]==2){
SetColor(GREEN);
printf("空弹");
ResetColor();
kong--;
}else{
SetColor(RED);
printf("实弹");
ResetColor();
shi--;
}
qlen--;
Sleep(500);
}else{
SetColor(RED);
printf("玩家B现在没有饮料\n");
ResetColor();
Sleep(1145);
system("cls");
}
}
Sleep(1000);
system("cls");
}
void Play_duo(){
while(1){
if(shi==0){
build_duo();
T=0;
continue;
}
if(T%2==0)Timeyou_duo();
else Timeother_duo();
}
}
int main(){
srand(time(0));
Yourmoney=0;
while(1){
SetColor(YELLOW);
printf("欢迎来到恶魔轮盘赌游戏\n");
ResetColor();
SetColor(CYAN);
printf("1.单人游戏\n");
printf("2.双人游戏\n");
printf("3.退出游戏\n");
ResetColor();
int x;
while(1){
scanf("%d",&x);
if(1<=x&&x<=3){
break;
}
SetColor(RED);
printf("输入不合法\n");
ResetColor();
Sleep(1145);
system("cls");
SetColor(YELLOW);
printf("欢迎来到恶魔轮盘赌游戏\n");
ResetColor();
SetColor(CYAN);
printf("1.单人游戏\n");
printf("2.双人游戏\n");
printf("3.退出游戏\n");
ResetColor();
}
if(x==1){
system("cls");
danrenplay();
}else if(x==2){
system("cls");
Play_duo();
}else{
SetColor(YELLOW);
printf("游戏已退出\n");
ResetColor();
break;
}
}
}
尽量加强AI了
DEV-C++下载
全部评论 14
顶
2025-07-02 来自 广东
1顶
2025-07-02 来自 广东
0顶
2025-07-02 来自 广东
0顶
2025-07-02 来自 广东
0顶
2025-06-27 来自 广东
0顶
2025-06-27 来自 广东
0顶
2025-06-27 来自 广东
0顶
2025-06-27 来自 广东
0顶
2025-06-27 来自 广东
0顶
2025-06-27 来自 广东
0顶
2025-06-27 来自 广东
0顶
2025-06-27 来自 广东
0顶
2025-06-27 来自 广东
0顶
2025-06-27 来自 广东
0
有帮助,赞一个