恶魔轮盘赌(改版)
2025-08-11 14:16:20
发布于:广东
by@庞文昊
改编:
主要是增加了一些难度,加入了一个新道具
优化了一下流程
记得去挑战一下N6打完N4解锁
让游戏有趣起来吧: )
不会加强恶魔AI只能增加限制条件了
#include<windows.h>
#include<bits/stdc++.h>
using namespace std;
void play();
int Your=6,Other=6;
int maxY=6,maxO=6;
string daojuname[]={"放大镜","手铐","小刀","烟","饮料","过期药"};
double Yourmoney;
int lv;//1是简单,2是正常,3是困难,4是炼狱,5是不可能
int n,chu=0,bad=10;
int shi,kong;
int q[110],qlen;//1 实 2 空
void Timeother();
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,8);
shi=Rand(1,8);
if(lv==6){
kong=Rand(1,10);
shi=Rand(1,10);
}
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;
if(lv==1){
maxn=min(7,12-daojulen);
}
else if(lv==2){
maxn=min(4,8-daojulen);
}
else if(lv==3){
maxn=min(3,8-daojulen);
}
else if(lv==4){
maxn=min(2,7-daojulen);
}
else if(lv==5){
maxn=0;
}
if(lv==6){
maxn=min(3,6-daojulen);
bad=Rand(0,5);
cout<<daojuname[bad]<<"栏已损坏,不可使用"<<endl;
}
int broken;
Sleep(1145);
printf("你获得了%d个道具:\n",maxn);
daojulen+=maxn;
for(int i=1;i<=maxn;i++){
Sleep(50);
int kkk=bad;
while(kkk==bad){
kkk=Rand(0,5);
}
if(lv==6){
broken=Rand(0,3);
}
if(broken==2){
cout<<daojuname[kkk]<<"是盗版,不可使用 , ";
}
else{
daoju[kkk]++;
cout<<daojuname[kkk];
if(i!=maxn){
printf(" , ");
}
}
}
printf("\n");
maxn=min(4,8-daojulen1);
if(lv==4){
maxn=min(4,10-daojulen);
}
else if(lv==5){
maxn=666;
}
if(lv==6){
maxn=min(5,11-daojulen);
}
printf("恶魔获得了%d个道具:\n",maxn);
daojulen1+=maxn;
for(int i=1;i<=maxn;i++){
int kkk=Rand(0,5);
daoju1[kkk]++;
cout<<daojuname[kkk];
if(i!=maxn){
printf(" , ");
}
}
printf("\n");
system("pause");
system("cls");
}
void IsOver(){
if(Your<=0){
printf("你输了\n");
system("pause");
exit(0);
}
if(Other<=0){
system("cls");
if(lv==1) Yourmoney*=0.5;
else if(lv==3) Yourmoney*=2;
else if(lv==4) Yourmoney*=3;
else if(lv==5) Yourmoney*=114514;
printf("你赢了\n你获得了奖金$%.2lf\n",Yourmoney);
if(n==4 and chu==1){
Sleep(1145);
printf("你真的赢了吗\n");
Sleep(1145);
printf("我还有一次机会\n");
chu--,Other=maxO;
Timeother();
}
else{
n=lv;
system("pause");
return ;
}
}
}
void wait(){
for(int i=1;i<=3;i++){
Sleep(500);
printf(".");
}
Sleep(500);
}
int Hurt=1;
int shoukao_you;
void Timeyou(){
int x;
while(1){
printf("你的生命:%d/%d\n恶魔生命:%d/%d\n",Your,maxY,Other,maxO);
printf("剩余实弹数:%d 剩余空弹数:%d\n",shi,kong);
printf("你现在拥有的道具:\n");
for(int i=0;i<=5;i++){
if(i==bad) continue;
cout<<daojuname[i];
printf("%d",daoju[i]);
printf("个");
if(i!=5){
printf(",");
}
}
printf("\n");
printf("恶魔现在拥有的道具:\n");
for(int i=0;i<=5;i++){
cout<<daojuname[i];
printf("%d",daoju1[i]);
printf("个");
if(i!=5){
printf(",");
}
}
printf("\n");
printf("现在是你的回合\n");
printf("你要\n1.向恶魔开枪\n2.向自己开枪\n");
for(int i=0;i<=5;i++){
printf("%d.使用",i+3);
cout<<daojuname[i]<<'\n';
}
scanf("%d",&x);
if(1<=x&&x<=8){
break;
}
printf("输入不合法\n");
Sleep(1145);
system("cls");
}
if(x==1){
printf("你决定向恶魔开枪");
T++;
wait();
if(q[qlen]==2){
Yourmoney+=(double)(2000.0*(Hurt*1.0)*(1+(double)(shi)*1.0/(double)(shi+kong)));
kong--;
qlen--;
Hurt=1;
printf("是空弹\n");
if(shoukao_you==1){
shoukao_you=0;
printf("因为你使用了手铐,所以可以再来一次\n");
Sleep(500);
T--;
}
}else{
// printf("((%lf))\n",Yourmoney);
Yourmoney+=(double)(5000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
// printf("{{%lf}}\n",Yourmoney);
shi--;
qlen--;
Other-=Hurt;
Hurt=1;
printf("是实弹\n");
Sleep(500);
IsOver();
if(shoukao_you==1){
shoukao_you=0;
Yourmoney+=1000.0;
printf("因为你使用了手铐,所以可以再来一次\n");
Sleep(500);
T--;
}
}
}else if(x==2){
printf("你决定向自己开枪");
wait();
if(q[qlen]==2){
Yourmoney+=(double)(2000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
kong--;
qlen--;
Hurt=1;
printf("是空弹\n");
}else{
Yourmoney+=5000.0*(1+(double)(shi)*1.0/(double)(shi+kong));
T++;
shi--;
qlen--;
Your-=Hurt;
Hurt=1;
printf("是实弹\n");
Sleep(500);
IsOver();
if(shoukao_you==1){
shoukao_you=0;
printf("因为你使用了手铐,所以可以再来一次\n");
Sleep(500);
T--;
}
}
}else if(x==3){//{"放大镜","手铐","小刀","烟","饮料","过期药"};
if(daoju[0]){
daoju[0]--;
daojulen--;
printf("你使用了放大镜\n");
wait();
printf("\n你看到了");
if(q[qlen]==1){
printf("实弹\n");
Yourmoney+=2500.0;
}else{
printf("空弹\n");
}
Sleep(500);
printf("\n");
}else{
printf("你现在没有放大镜\n");
Sleep(1145);
system("cls");
}
}else if(x==4){
if(daoju[1]){
if(!shoukao_you){
daoju[1]--;
daojulen--;
printf("你使用了手铐\n");
printf("你获得了连开两枪的机会\n");
shoukao_you=1;
}else{
printf("你已经用过手铐了\n");
}
Sleep(1145);
system("cls");
}else{
printf("你现在没有手铐\n");
Sleep(1145);
system("cls");
}
}else if(x==5){
if(daoju[2]){
if(Hurt==1){
daoju[2]--;
daojulen--;
printf("你使用了小刀\n");
printf("若下一发为实弹则伤害+1\n");
Yourmoney+=500.0;
Hurt=2;
}else{
printf("你已经用过小刀了\n");
}
Sleep(1145);
system("cls");
}else{
printf("你现在没有小刀\n");
Sleep(1145);
system("cls");
}
}else if(x==6){
if(daoju[3]){
if(Your<maxY){
daoju[3]--;
daojulen--;
printf("你使用了烟\n");
printf("你回复了一点生命\n");
Yourmoney+=500.0;
Your++;
}else{
printf("你现在不需要烟\n");
}
Sleep(1145);
}else{
printf("你现在没有烟\n");
Sleep(1145);
system("cls");
}
}else if(x==7){
if(daoju[4]){
daoju[4]--;
daojulen--;
printf("你使用了饮料\n");
wait();
printf("\n");
printf("你退了一发");
if(q[qlen]==2){
printf("空弹");
kong--;
}else{
printf("实弹");
Yourmoney+=500.0;
shi--;
}
qlen--;
Sleep(500);
}else{
printf("你现在没有饮料\n");
Sleep(1145);
system("cls");
}
}else if(x==8){
if(daoju[5]){
int yao=rand()%2+1;//1则药变质,2则药良好
if(lv==4){
yao=rand()%3;
}
else if(lv==5){
yao=1;
}
else if(n==4){
yao=rand()%4;
}
daoju[5]--;
daojulen--;
printf("你使用了过期药\n");
wait();
printf("\n");
if(yao<=1){
printf("药变质了\n中毒减少了1滴血\n");
Your--;
}
else{
printf("药良好\n你回复了2滴血\n");
Your+=2;
if(Your>maxY) Your=maxY;
}
Sleep(500);
}else{
printf("你现在没有过期药\n");
Sleep(1145);
system("cls");
}
}
Sleep(1000);
system("cls");
}
int Know;//通过放大镜得知下一发子弹
int shoukaoemo;
void fightyou(){
printf("恶魔决定向你开枪");
T++;
wait();
if(q[qlen]==2){
Yourmoney+=(double)(2000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
kong--;
qlen--;
Hurt=1;
Know=0;
printf("是空弹\n");
if(shoukaoemo){
printf("因为恶魔使用了手铐,所以可以再来一次\n");
T--;
Sleep(500);
shoukaoemo=0;
}
}else{
Yourmoney+=(double)(5000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
shi--;
qlen--;
Your-=Hurt;
Hurt=1;
printf("是实弹\n");
Know=0;
Sleep(500);
IsOver();
if(shoukaoemo){
printf("因为恶魔使用了手铐,所以可以再来一次\n");
Yourmoney+=1000.0;
T--;
Sleep(500);
shoukaoemo=0;
}
}
}
void fightemo(){
printf("恶魔决定向自己开枪");
wait();
if(q[qlen]==2){
Yourmoney+=2000.0*(1+(double)(shi)*1.0/(double)(shi+kong));
kong--;
qlen--;
printf("是空弹\n");
Know=0;
}else{
Yourmoney+=5000.0*(1+(double)(kong)*1.0/(double)(shi+kong));
shi--;
T++;
qlen--;
Other-=Hurt;
Hurt=1;
printf("是实弹\n");
Know=0;
Sleep(500);
IsOver();
if(shoukaoemo){
printf("因为恶魔使用了手铐,所以可以再来一次\n");
T--;
Sleep(500);
shoukaoemo=0;
}
}
}
void Timeother(){
printf("你的生命:%d/%d\n恶魔生命:%d/%d\n",Your,maxY,Other,maxO);
printf("剩余实弹数:%d 剩余空弹数:%d\n",shi,kong);
printf("你现在拥有的道具:\n");
for(int i=0;i<=5;i++){
cout<<daojuname[i];
printf("%d",daoju[i]);
printf("个");
if(i!=4){
printf(",");
}
}
printf("\n");
printf("恶魔现在拥有的道具:\n");
for(int i=0;i<=5;i++){
cout<<daojuname[i];
printf("%d",daoju1[i]);
printf("个");
if(i!=4){
printf(",");
}
}
printf("\n");
printf("现在是恶魔的回合\n");
Sleep(1500);
Hurt=2;
if(Other!=maxO){
if(daoju1[3]){
daoju1[3]--;
daojulen1--;
printf("恶魔使用了烟\n");
printf("恶魔回复了一点生命\n");
Other++;
Yourmoney+=500.0;
Sleep(1145);
system("cls");
return ;
}
}
if(Other<=maxO-2){
if(daoju1[5]){
int yao;
if(lv==3){
yao=rand()%3+1;
}
else if(lv==4){
yao=rand()%5+1;
}
else if(lv==5){
yao=2;
}
else{
yao=rand()%2+1;
}
daoju1[5]--;
daojulen1--;
printf("恶魔使用了过期药\n");
if(yao==1){
printf("药变质了\n中毒减少了1滴血\n");
Other--;
}
else{
printf("药良好\n恶魔回复了2滴血\n");
Other+=2;
if(Other>maxO) Other=6;
}
Sleep(500);
Yourmoney+=500.0;
Sleep(1145);
system("cls");
return ;
}
}
if(Know==0&&kong==0){
Know=1;
}
if(Know==0){
if(abs(shi-kong)<2&&kong!=0){
if(daoju1[0]){
daoju1[0]--;
daojulen1--;
printf("恶魔使用了放大镜\n");
wait();
printf("\n恶魔看到了");
if(q[qlen]==1){
printf("实弹");
Yourmoney+=2500.0;
Know=1;
}else{
printf("空弹");
Know=2;
}
Sleep(1145);
system("cls");
return ;
}
}
}else if(Know==1){
if(Hurt==1&&daoju1[2]){
daoju1[2]--;
daojulen1--;
Hurt++;
printf("恶魔使用了小刀\n");
printf("若下一发为实弹则伤害+1");
Yourmoney+=500.0;
Sleep(1145);
system("cls");
return ;
}else{
if(shi>=kong+1&&daoju1[1]&&shoukaoemo!=1){
daoju1[1]--;
daojulen1--;
shoukaoemo=1;
printf("恶魔使用了手铐\n");
printf("恶魔获得了连开两枪的机会\n");
Sleep(1145);
system("cls");
return ;
}
fightyou();
system("cls");
return ;
}
}else{
if(daoju1[4]){
daoju1[4]--;
daojulen1--;
printf("恶魔使用了饮料\n");
wait();
printf("\n");
printf("恶魔退了一发");
if(q[qlen]==2){
printf("空弹");
kong--;
}else{
printf("实弹");
shi--;
}
Know=0;
qlen--;
Sleep(500);
Sleep(1145);
system("cls");
return ;
}else{
fightemo();
Sleep(1145);
system("cls");
return ;
}
}
fightyou();
Sleep(1145);
IsOver();
system("cls");
}
void Play(){
while(1){
if(shi==0){
build();
T=0;
continue;
}
if(T%2==0){
Timeyou();
}else{
Timeother();
}
if(Other<=0) return ;
}
}
void danrenplay(){
for(int i=1;i<=3;i++){
printf(".");
// Sleep(1000);
}
printf("\n");
printf("又来了一位挑战者...\n");
Sleep(1000);
int x;
while(1){
printf("准备好参与恶魔的游戏吗?胜者带走奖金,败者将会在此长眠\n1.好的\n2.没问题\n");
scanf("%d",&x);
if(x==1||x==2){
break;
}
printf("输入不合法\n");
Sleep(1145);
system("cls");
}
while(1){
printf("你清楚我们的规则吗?\n1.清楚\n2.不清楚\n");
scanf("%d",&x);
if(x==1||x==2){
break;
}
printf("输入不合法\n");
Sleep(1145);
system("cls");
}
if(x==1){
}else{
for(int i=1;i<=3;i++){
printf(".");
Sleep(1000);
}
printf("\n");
printf("规则:\n");
printf("你和恶魔都各有6点生命\n") ;
printf("每一回合开始前,你将知道一共有几发实弹,几发空弹,同时双方都将获得4个道具作为补给(上限为8个)\n");
printf("每一回合,你可以选择对自己开枪,对恶魔开枪或者使用道具\n");
printf("如果你对自己开枪,若为空弹,则可以继续行动,否则,停止行动\n");
printf("如果你对恶魔开枪,无论如何,都将停止行动\n");
printf("道具一览:\n");
printf("放大镜:可以知道下一发子弹是空弹还是实弹\n");
printf("手铐:增加一次本回合的行动次数\n");
printf("小刀:若下一发子弹为实弹,则伤害+1\n");
printf("烟:可以回复1点体力\n");
printf("饮料:可以退一发子弹\n");
printf("过期药:可能回复2滴血,也可能减少1滴血(概由被难度影响)\n");
system("pause");
system("cls");
}
if(n==4){
printf("是你?\n");
Sleep(1145);
printf("那我只给你这一个模式选择\n");
Sleep(1145);
printf("6.不容拒绝:(非常变态的难度,作者自己都过不去,想挑战自己的可以尝试(本难度需打完炼狱难度才可解锁)\n");
Sleep(1145);
printf("效果:炼狱词条加强\n恶魔使用的枪械自带一小刀\n恶魔将携带紧急除颤仪\n自己道具栏有一个永久损坏且道具概率损坏\n自己开局受伤\n");
chu=1;
}
else{
printf("你想要选择哪个模式?\n1.新手:道具增加,生命上限增加,0.5倍积分\n2.正常:很正常,没什么特别的\n3.困难:道具减少,恶魔运气增加,2倍积分\n");
printf("4.炼狱:困难词条加强,自己运气降低,恶魔道具增加,生命上限减少,3倍积分\n5.不可能:恶魔很希望你输,在游戏上做了些手脚:)且积分114514倍(反正你也过不了)\n");
}
printf("选错后果自负\n");
cin>>lv;
if(n==4){
printf("来吧\n");
Sleep(1145);
printf("今天你的灵魂不可能逃掉的\n");
Sleep(1145);
printf("呵呵\n");
}
Sleep(1145);
printf("游戏将要开始了哦\n");
Sleep(1145);
if(lv==1 and n!=4){
Your=10,maxY=10;
Other=6,maxO=6;
}
else if(lv==2 and n!=4){
Your=6,maxY=6;
Other=6,maxO=6;
}
else if(lv==3 and n!=4){
Your=5,Other=8;
maxY=5,maxO=8;
}
else if(lv==4 and n!=4){
Your=4,Other=9;
maxY=5,maxO=9;
}
else if(lv==5 and n!=4){
Your=1,Other=114514;
maxY=1,maxO=114514;
}
else if(n==4){
lv=6;
Your=3;Other=0;
maxY=4;maxO=0;
}
else{
printf("你还真的乱选一个是吧\n");
printf("你给我等着昂\n");
lv=6,n=4;
}
system("cls");
Play();
return ;
}
void play(){
while(1){
srand(time(0));
time(0);
int x;
while(1){
printf("请选择你想要的模式:\n1.单人(双人被删了)\n");
scanf("%d",&x);
if(x==1){
break;
}
printf("输入不合法\n");
Sleep(1145);
system("cls");
}
system("cls");
if(x==1){
danrenplay();
}
}
}
int main(){
play();
return 0;
}
全部评论 5
有bug,主角就算没血了只要不退出那游戏也能正常运行4天前 来自 广东
0
bug+1,主角的血上限明明是10,但血量在6以上10以下(包括10)那会显示无法使用烟3天前 来自 广东
0修好了~
3天前 来自 广东
1ok
3天前 来自 广东
0
不行呀,我运行了,会报错
2025-07-01 来自 广东
0修好了
2025-07-02 来自 广东
0我貌似发现Mac用不了“<window.h>”
2025-07-02 来自 广东
0把Sleep都删了就行(
2025-07-02 来自 广东
0
偷偷开挂
2025-07-01 来自 内蒙古
0开桂就不好玩了哈(doge
2025-07-01 来自 广东
0
666
2025-07-01 来自 内蒙古
0顶
2025-07-01 来自 广东
0
有帮助,赞一个