#define BUG 1
#include <bits/stdc++.h>
#include<conio.h>
#include<windows.h>
#include<bits/stdc++.h>
#define cls system("cls")
#define kd(VK_NONAME) ((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)
using namespace std;
namespace ginit
{
void init()
{
HANDLE hStdin=GetStdHandle(STD_INPUT_HANDLE);//隐藏光标
DWORD mode;
GetConsoleMode(hStdin,&mode);
mode&=~ENABLE_QUICK_EDIT_MODE;//移除快速编辑模式
mode&=~ENABLE_INSERT_MODE;
mode&=~ENABLE_MOUSE_INPUT;
SetConsoleMode(hStdin,mode);
CONSOLE_CURSOR_INFO cur={1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cur);
}
void gotoxy(int x,int y)//移动光标
{
COORD pos={short(x),short(y)};
HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut,pos);
return;
}
void color(int a)
{
/*亮白*/if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
/*蓝色*/if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
/*绿色*/if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
/*紫色*/if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
/*红色*/if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
/*黄色*/if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
/*深蓝*/if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
/*土黄*/if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);
/*灰白*/if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
void print(string s,int c,int t,bool hh,bool rf)
{
color(c);
int l=s.size();
for(int i=0;i<l;i++) printf("%c",s[i]),Sleep(t);//停顿
color(0);
if(rf)
{
color(8);
printf("(按Enter继续)");
while(1)if(kd(VK_RETURN)) break;
color(0);
}
color(0);
if(hh)puts("");
}
}
using namespace ginit;
//1.手铐 2.烟 3.啤酒 4.手锯 5.放大镜 6.肾上腺素 7.过期药品 8.逆转器
int pd,bd,kd,sd,ps,bs,sk,js,ti=30;//p1,p2死亡次数 空弹,实弹数量 ti=输出间隔时间
int h[50][20],zzb,FF;
bool nz;
queue<int> q;
const int HH=8;//道具数量
string n[20]={"","手铐","烟","啤酒","手锯","放大镜","肾上腺素","过期药品","逆转器"};
char p1[100],p2[100];
void use(int,bool);
void g_init();
void get_d(int,int);
void get_j(int);
void in_game();
void game_begin();
void pvp_start();
void pva_start();
void pvzzb_start();
void use(int A,bool F,int w)
{
cls;
if(A==1&&!sk)
{
sk=1,h[w][F]=0;
print("咔,手铐铐住了对方的手",0,ti,0,1);
}
if(A==2)
{
if(!F&&((bd+pd==1&&ps==3)||(bd+pd==2&&ps==4)||(bd+pd==2&&ps==4)||(bd+pd==3&&ps==5)||(bd+pd==4&&ps==6))) goto No;
if(F&&((bd+pd==1&&bs==3)||(bd+pd==2&&bs==4)||(bd+pd==2&&bs==4)||(bd+pd==3&&bs==5)||(bd+pd==4&&bs==6))) goto No;
!F?ps++:bs++;
h[w][F]=0;
if(bd+pd==1) bs=min(bs,3),ps=min(ps,3);
if(bd+pd==2) bs=min(bs,4),ps=min(ps,4);
if(bd+pd==2) bs=min(bs,4),ps=min(ps,4);
if(bd+pd==3) bs=min(bs,5),ps=min(ps,5);
if(bd+pd==4) bs=min(bs,6),ps=min(ps,6);
print("你吸了烟,血量+1",0,ti,0,1);
goto out;
No:
{
print("当前血量不需要吸烟",0,ti,0,1);
h[w][F]=A;
goto out;
}
}
if(A==3)
{
h[w][F]=0;
print("你喝了啤酒,退出了一颗",0,ti,0,0);
int D=q.front();q.pop();
if(D==2&&sd) print("实弹",0,ti,0,1),sd--;
else if(D==1&&kd) print("空弹",0,ti,0,1),kd--;
else cls,printf("游戏bug,请等候1s"),Sleep(1000),h[w][F]=3;
}
if(A==4)
{
h[w][F]=0,js=1;
print("小刀割掉了手锯,下一颗实弹伤害+1",0,ti,0,1);
}
if(A==5)
{
h[w][F]=0;
print("放大镜碎了,你看见下一颗子弹是",0,ti,0,0);
int D=q.front();
if(D==2&&sd) print("实弹",0,ti,0,1);
else if(D==1&&kd) print("空弹",0,ti,0,1);
else cls,printf("游戏bug,请等候1s"),Sleep(1000),h[w][F]=5;
}
if(A==6)
{
h[w][F]=0;
print("肾上腺素起效,你觉得你心跳加速了",5,ti,0,1);
cls;
print("请选择对方的一件道具",0,0,1,0);
puts("");
for(int i=1;i<=((bd+pd==4)?8:4);i++)
if(h[i][F==0?1:0]) color(5),printf("%d:%s ",i,n[h[i][F==0?1:0]].c_str()),color(0);
else printf("%d:空 ",i);
int V=0;
while(1)
{
if(kd('1')||kd(VK_NUMPAD1)){V=1;break;}
if(kd('2')||kd(VK_NUMPAD2)){V=2;break;}
if(kd('3')||kd(VK_NUMPAD3)){V=3;break;}
if(kd('4')||kd(VK_NUMPAD4)){V=4;break;}
if(kd('5')||kd(VK_NUMPAD5)){V=5;break;}
if(kd('6')||kd(VK_NUMPAD6)){V=6;break;}
if(kd('7')||kd(VK_NUMPAD7)){V=7;break;}
if(kd('8')||kd(VK_NUMPAD8)){V=8;break;}
}
h[w][F]=h[V][!F];
h[V][!F]=0;
print("\n你得到了",5,ti,0,0);
color(5);
printf("%s",n[h[w][F]].c_str());
color(0);
print("",0,0,0,1);
}
if(A==7)
{
h[w][F]=0;
print("你一仰头,吞完了一整瓶药",5,ti,1,1);
int R=rand()%5;
if(R==0||R==1)
{
print("伤口治愈了,加了两点血",0,ti,0,1);
!F?ps+=2:bs+=2;
h[w][F]=0;
if(bd+pd==1) bs=min(bs,3),ps=min(ps,3);
if(bd+pd==2) bs=min(bs,4),ps=min(ps,4);
if(bd+pd==3) bs=min(bs,5),ps=min(ps,5);
if(bd+pd==4) bs=min(bs,6),ps=min(ps,6);
}
else
{
print("但,伤口反而更恶劣了,扣1血",0,ti,0,1);
!F?ps--:bs--;
}
}
if(A==8)
{
h[w][F]=0;
print("逆转器生效,下一颗子弹将被反转",0,ti,0,1);
nz=1;
}
out:
cls;
}
void g_init()
{
for(int i=1;i<=8;i++) h[i][0]=h[i][1]=0;
bd=pd=0;
kd=sd=0;
bs=ps=3;
}
void get_d(int A,int B)
{
sd=rand()%A;
while(sd<B)sd=rand()%A;
kd=A-sd;
}
void get_j(int o)
{
for(int i=1;i<=o;i++)
{
int j;
for(j=1;j<=((bd+pd==4)?9:5);j++)if(h[j][0]==0)break;
if((bd+pd!=4&&j!=5)||(bd+pd==4&&j!=9))h[j][0]=rand()%HH+1;
}
for(int i=1;i<=o;i++)
{
int j;
for(j=1;j<=((bd+pd==4)?9:5);j++)if(h[j][1]==0)break;
if((bd+pd!=4&&j!=5)||(bd+pd==4&&j!=9))h[j][1]=rand()%HH+1;
}
}
void bug(bool f)
{
if(!BUG) return;
cls;
cout<<sd<<" "<<kd<<" "<<f<<" "<<q.size()<<" "<<q.empty();
Sleep(1000);
print("",0,0,0,1);
cls;
}
void findbug()
{
if(!BUG) return;
cls;
int k=q.size();
for(int i=0;i<k;i++)
{
cout<<q.front()<<" ";
q.push(q.front());
q.pop();
}
cout<<"\n"<<sd<<" "<<kd<<"\n";
Sleep(1000);
print("",0,0,0,1);
cls;
}
void in_game()
{
int T=ti;
print("是否选择疾速模式?(Y:N)",0,ti,1,0);
while(1)
{
if(kd('Y')){T=0;break;}
if(kd('N')) break;
}
if(T!=0)
{
print("你是一名OIer",0,T,1,T==0?0:1);
print("那一天,你参加了€€£的比赛,被骗得倾家荡产",0,T,1,T==0?0:1);
print("为了凑够下一场比赛的钱,你被迫找到恶魔,以性命为赌注,来获得你想要的钱...",0,T,1,T==0?0:1);
}
cls;
print("游戏作者:L('ω')┘脏脏包└('ω')?(洛谷名z_z_b_)",5,0,1,0);
print("玩法说明",5,T,1,T==0?0:1);
print("1.开局时告诉你实弹数量和空弹数量,每次你可以选择打谁",0,T,1,T==0?0:1);
print("2.打自己:下一回合仍是你操作。打对方反之。",0,T,1,T==0?0:1);
print("3.每人有一定血量(每局不一样),被实弹击中则要扣血,血为0时进入下一局且对方积分+1",0,T,1,T==0?0:1);
print("4.总共三局,积分多者胜",0,T,1,1);
cls;
print("游戏作者:L('ω')┘脏脏包└('ω')?(洛谷名z_z_b_)",5,0,1,0);
Sleep(300);
print("道具说明",5,T,1,0);
print("1.手铐:使用后能多攻击一次对方",0,T,1,0);
print("2.烟:使用后加一滴血,但不能超过本局上限",0,T,1,0);
print("3.啤酒:退出下颗子弹",0,T,1,0);
print("4.放大镜:告诉你下颗子弹是实弹还是空弹",0,T,1,0);
print("5.手锯:如果下颗子弹是实弹,那么伤害+1,反之无效",0,T,1,0);
print("6.肾上腺素:偷走对方的一个道具",0,T,1,0);
print("7.过期药品:40%概率加两滴血,60%概率扣1血",0,T,1,0);
print("8.逆转器:反转下颗子弹",0,T,1,1);
cls;
print("游戏作者:L('ω')┘脏脏包└('ω')?(洛谷名z_z_b_)",5,0,1,0);
Sleep(300);
print("玩法:",5,T,1,0);
print("A选择打自己,D选择打对方",0,T,1,0);
print("输入数字 i 表示使用第i个位置上的道具",0,T,1,1);
return;
}
void pvp_start()
{
fflush(stdin);
bool f=0,cz=1;//cz判断是否操作,操作了就要额外cls来保障不闪屏。
print("请给P1取个名字:",0,ti,0,0),scanf("%s",p1),cls;
print("请给P2取个名字:",0,ti,0,0),scanf("%s",p2),cls;
nz=0;
while(1)
{
Sleep(50);
if(cz) cz=0,cls;
gotoxy(0,0);
printf("当前比分(三局两胜) ");
if(pd>bd) color(4),printf("%d",pd),color(0),printf(":%d",bd);
else if(bd>pd) color(0),printf("%d:",pd),color(4),printf("%d",bd);
else printf("%d:%d",pd,bd);
color(0);
printf("\n\n\n当前血量 %d:%d\n\n当前实弹:%d 当前空弹:%d\n\n当前进行:P%d( %s )\n请选择方式:a.攻击自己 d.攻击对方\n按1~%d选择道具\n当前道具:",ps,bs,sd,kd,(f?2:1),(f?p2:p1),(bd+pd==4?8:4));
for(int i=1;i<=((bd+pd==4)?8:4);i++)
if(h[i][f]) color(5),printf("%s ",n[h[i][f]].c_str()),color(0);
else printf("空 ");
if(q.empty()) goto B3;
if(h[1][f]&&(kd('1')||kd(VK_NUMPAD1))) use(h[1][f],f,1),cz=1;
if(h[2][f]&&(kd('2')||kd(VK_NUMPAD2))) use(h[2][f],f,2),cz=1;
if(h[3][f]&&(kd('3')||kd(VK_NUMPAD3))) use(h[3][f],f,3),cz=1;
if(h[4][f]&&(kd('4')||kd(VK_NUMPAD4))) use(h[4][f],f,4),cz=1;
if(h[5][f]&&(kd('5')||kd(VK_NUMPAD5))) use(h[5][f],f,5),cz=1;
if(h[6][f]&&(kd('6')||kd(VK_NUMPAD6))) use(h[6][f],f,6),cz=1;
if(h[7][f]&&(kd('7')||kd(VK_NUMPAD7))) use(h[7][f],f,7),cz=1;
if(h[8][f]&&(kd('8')||kd(VK_NUMPAD8))) use(h[8][f],f,8),cz=1;
if(kd('A'))
{
cz=1;
int D=q.front();q.pop();
cls;
if((nz==1&&D==2&&sd>0)||(nz==0&&D==1&&kd>0))
{
print("咔擦,是空弹",0,ti,0,1);
D==1?kd--:sd--;
nz=0,js=0;
cls;
continue;
}
else if((nz==1&&D==1&&kd>0)||(nz==0&&D==2&&sd>0))
{
system("color f7");Sleep(100);system("color 0f");
color(0);
cls;
print("砰,枪响了",0,ti,0,1);
(!f)?(ps-=1+js):(bs-=1+js);
if(D==2)sd--;
else kd--;
nz=0,js=0;
cls;
}
else bug(D),cls,printf("游戏bug,请等待1s"),Sleep(1000),cls;
}
if(kd('D'))
{
cz=1;
int D=q.front();q.pop();
f=!f;
cls;
if((nz==0&&D==1&&kd>0)||(nz==1&&D==2&&sd>0))
{
print("咔擦,是空弹",0,ti,0,1);
color(0);
sk?f=!f:f=f;
if(D==1) kd--;
else sd--;
nz=0;
js=sk=0,cls;
continue;
}
else if((nz==1&&D==1&&kd>0)||(nz==0&&D==2&&sd>0))
{
system("color f7"),Sleep(100),system("color 0f");
color(0);
cls;
if(D==1) kd--;
else sd--;
print("砰,枪响了",0,ti,0,1);
if(sk) f=!f,f?ps-=1+js:bs-=1+js;
else !f?ps-=1+js:bs-=1+js;
sk=js=0;
nz=0;
cls;
}
else bug(D),cls,f=!f,printf("游戏bug,请等待1s"),Sleep(1000),color(0),cls;
}
if(ps<=0&&bd!=2)
{
cls,sk=js=0;
system("color 4f"),Sleep(300),system("color 0f");
printf("%s,died",p1),print("",0,0,0,1);
kd=sd=0;
bd++;
if(bd+pd==1) bs=ps=3;
if(bd+pd==2) bs=ps=4;
if(bd+pd==2) bs=ps=4;
if(bd+pd==3) bs=ps=5;
if(bd+pd==4) bs=ps=6;
cls;
}
if(bs<=0&&pd!=2)
{
cls,sk=js=0;
system("color 4f"),Sleep(300),system("color 0f");
printf("%s,died",p2),print("",0,0,0,1);
kd=sd=0;
pd++;
if(bd+pd==1) bs=ps=3;
if(bd+pd==2) bs=ps=4;
if(bd+pd==2) bs=ps=4;
if(bd+pd==3) bs=ps=5;
if(bd+pd==4) bs=ps=6;
cls;
}
if(ps<=0&&bd==2)
{
cls;
color(2);
printf("游戏结束,%s胜利",p2);
Sleep(1000);
system("pause");
return;
}
if(bs<=0&&pd==2)
{
cls;
color(2);
printf("游戏结束,%s胜利\n\n",p1);
Sleep(1000);
system("pause");
return;
}
B3:
if(kd==0&&sd==0)
{
cls;
if(bd+pd==0) get_d(5,1);
if(bd+pd==1) get_d(5,2);
if(pd+bd==2) get_d(7,2);
if(pd+bd==3) get_d(7,3);
if(bd+pd==4) get_d(9,3);
color(0);
print("桌面翻转,",0,ti,0,0);printf("%d",kd);
print("个空弹与",0,ti,0,0);printf("%d",sd);
print("实弹出现了",0,ti,0,1);color(0);cls;
int S=sd,K=kd;
vector<int> v;v.clear();
while(S>0||K>0)
{
int r=rand()%2;
if(r==0&&S>0) S--,v.push_back(2);
if(r==1&&K>0) K--,v.push_back(1);
}
while(!v.empty())
{
int w=rand()%v.size();
q.push(v[w]);
v.erase(v.begin()+w);
}
if(pd+bd==0) continue;
if(bd+pd==1) get_j(2);
if(bd+pd==2) get_j(2);
if(bd+pd==2) get_j(3);
if(bd+pd==3) get_j(4);
if(bd+pd==4) get_j(4);
cls;
color(0);
print("P1面前的桌面翻转,",0,ti,1,0);
for(int i=1;i<=((bd+pd==4)?8:4);i++)
if(h[i][0]) color(5),printf("%s ",n[h[i][0]].c_str()),color(0);
else printf("空 ");
print("",0,0,0,1);
cls;
print("P2面前的桌面翻转,",0,ti,1,0);
for(int i=1;i<=((bd+pd==4)?8:4);i++)
if(h[i][1]) color(5),printf("%s ",n[h[i][1]].c_str()),color(0);
else color(0),printf("空 ");
print("",0,0,0,1);
cls;
}
}
}
void pva_start()
{
fflush(stdin);
bool f=0,cz=1;//cz判断是否操作,操作了就要额外cls来保障不闪屏。
print("请取个名字:",0,ti,0,0),scanf("%s",p1),cls;
p2[0]='A',p2[1]='I';
nz=0;
while(1)
{
Sleep(50);
if(cz) cz=0,cls;
gotoxy(0,0);
printf("当前比分(三局两胜) ");
if(pd>bd) color(4),printf("%d",pd),color(0),printf(":%d",bd);
else if(bd>pd) color(0),printf("%d:",pd),color(4),printf("%d",bd);
else printf("%d:%d",pd,bd);
color(0);
printf("\n\n\n当前血量 %d:%d\n\n当前实弹:%d 当前空弹:%d\n\n当前进行:P%d( %s )\n请选择方式:a.攻击自己 d.攻击对方\n按1~%d选择道具\n当前道具:",ps,bs,sd,kd,(f?2:1),(f?p2:p1),(bd+pd==4?8:4));
for(int i=1;i<=((bd+pd==4)?8:4);i++)
if(h[i][f]) color(5),printf("%s ",n[h[i][f]].c_str()),color(0);
else printf("空 ");
if(q.empty()) goto B1;
if(h[1][f]&&(kd('1')||kd(VK_NUMPAD1))) use(h[1][f],f,1),cz=1;
if(h[2][f]&&(kd('2')||kd(VK_NUMPAD2))) use(h[2][f],f,2),cz=1;
if(h[3][f]&&(kd('3')||kd(VK_NUMPAD3))) use(h[3][f],f,3),cz=1;
if(h[4][f]&&(kd('4')||kd(VK_NUMPAD4))) use(h[4][f],f,4),cz=1;
if(h[5][f]&&(kd('5')||kd(VK_NUMPAD5))) use(h[5][f],f,5),cz=1;
if(h[6][f]&&(kd('6')||kd(VK_NUMPAD6))) use(h[6][f],f,6),cz=1;
if(h[7][f]&&(kd('7')||kd(VK_NUMPAD7))) use(h[7][f],f,7),cz=1;
if(h[8][f]&&(kd('8')||kd(VK_NUMPAD8))) use(h[8][f],f,8),cz=1;
if(kd('A')||(f&&kd>sd))
{
if(f)
{
Sleep(500);
cls;
print("AI 瞄准了自己",0,ti,0,1);
cls;
}
cz=1;
int D=q.front();q.pop();
cls;
if((nz==1&&D==2&&sd>0)||(nz==0&&D==1&&kd>0))
{
print("咔擦,是空弹",0,ti,0,1);
D==1?kd--:sd--;
nz=0,js=0;
cls;
continue;
}
else if((nz==1&&D==1&&kd>0)||(nz==0&&D==2&&sd>0))
{
system("color f7");Sleep(100);system("color 0f");
color(0);
cls;
print("砰,枪响了",0,ti,0,1);
(!f)?(ps-=1+js):(bs-=1+js);
if(D==2)sd--;
else kd--;
nz=0,js=0;
cls;
}
else bug(D),cls,printf("游戏bug,请等待1s"),Sleep(1000),cls;
}
if(kd('D')||(f&&kd<=sd))
{
if(f)
{
Sleep(500);
cls;
print("AI 瞄准了你",0,ti,0,1);
cls;
}
cz=1;
int D=q.front();q.pop();
f=!f;
cls;
if((nz==0&&D==1&&kd>0)||(nz==1&&D==2&&sd>0))
{
print("咔擦,是空弹",0,ti,0,1);
color(0);
sk?f=!f:f=f;
if(D==1) kd--;
else sd--;
nz=0;
js=sk=0,cls;
continue;
}
else if((nz==1&&D==1&&kd>0)||(nz==0&&D==2&&sd>0))
{
system("color f7"),Sleep(100),system("color 0f");
color(0);
cls;
if(D==1) kd--;
else sd--;
print("砰,枪响了",0,ti,0,1);
if(sk) f=!f,f?ps-=1+js:bs-=1+js;
else !f?ps-=1+js:bs-=1+js;
sk=js=0;
nz=0;
cls;
}
else bug(D),cls,f=!f,printf("游戏bug,请等待1s"),Sleep(1000),color(0),cls;
}
if(ps<=0&&bd!=2)
{
cls,sk=js=0;
system("color 4f"),Sleep(300),system("color 0f");
printf("%s,died",p1),print("",0,0,0,1);
kd=sd=0;
bd++;
if(bd+pd==1) bs=ps=3;
if(bd+pd==2) bs=ps=4;
if(bd+pd==2) bs=ps=4;
if(bd+pd==3) bs=ps=5;
if(bd+pd==4) bs=ps=6;
cls;
}
if(bs<=0&&pd!=2)
{
cls,sk=js=0;
system("color 4f"),Sleep(300),system("color 0f");
printf("%s,died",p2),print("",0,0,0,1);
kd=sd=0;
pd++;
if(bd+pd==1) bs=ps=3;
if(bd+pd==2) bs=ps=4;
if(bd+pd==2) bs=ps=4;
if(bd+pd==3) bs=ps=5;
if(bd+pd==4) bs=ps=6;
cls;
}
if(ps<=0&&bd==2)
{
cls;
color(2);
printf("游戏结束,%s胜利\n\n",p2);
Sleep(1000);
system("pause");
return;
}
if(bs<=0&&pd==2)
{
zzb++;
cls;
color(2);
printf("游戏结束,%s胜利\n\n",p1);
Sleep(1000);
system("pause");
return;
}
B1:
if(kd==0&&sd==0)
{
cls;
if(bd+pd==0) get_d(5,1);
if(bd+pd==1) get_d(5,2);
if(pd+bd==2) get_d(7,2);
if(pd+bd==3) get_d(7,3);
if(bd+pd==4) get_d(9,3);
color(0);
print("桌面翻转,",0,ti,0,0);printf("%d",kd);
print("个空弹与",0,ti,0,0);printf("%d",sd);
print("实弹出现了",0,ti,0,1);color(0);cls;
int S=sd,K=kd;
vector<int> v;v.clear();
while(S>0||K>0)
{
int r=rand()%2;
if(r==0&&S>0) S--,v.push_back(2);
if(r==1&&K>0) K--,v.push_back(1);
}
while(!v.empty())
{
int w=rand()%v.size();
q.push(v[w]);
v.erase(v.begin()+w);
}
findbug();
if(pd+bd==0) continue;
if(bd+pd==1) get_j(2);
if(bd+pd==2) get_j(2);
if(bd+pd==2) get_j(3);
if(bd+pd==3) get_j(4);
if(bd+pd==4) get_j(4);
cls;
color(0);
print("P1面前的桌面翻转,",0,ti,1,0);
for(int i=1;i<=((bd+pd==4)?8:4);i++)
if(h[i][0]) color(5),printf("%s ",n[h[i][0]].c_str()),color(0);
else printf("空 ");
print("",0,0,0,1);
cls;
print("P2面前的桌面翻转,",0,ti,1,0);
for(int i=1;i<=((bd+pd==4)?8:4);i++)
if(h[i][1]) color(5),printf("%s ",n[h[i][1]].c_str()),color(0);
else color(0),printf("空 ");
print("",0,0,0,1);
cls;
}
}
}
void pvzzb_start()
{
fflush(stdin);
bool f=0,cz=1;//cz判断是否操作,操作了就要额外cls来保障不闪屏。
print("请取个名字:",0,ti,0,0),scanf("%s",p1),cls;
p2[0]='z',p2[1]='z',p2[2]='b';
nz=0;
while(1)
{
kd=max(kd,0),sd=max(sd,0);
Sleep(50);
if(cz) cz=0,cls;
gotoxy(0,0);
printf("当前比分(三局两胜) ");
if(pd>bd) color(4),printf("%d",pd),color(0),printf(":%d",bd);
else if(bd>pd) color(0),printf("%d:",pd),color(4),printf("%d",bd);
else printf("%d:%d",pd,bd);
color(0);
printf("\n\n\n当前血量 %d:%d\n\n当前实弹:%d 当前空弹:%d\n\n当前进行:P%d( %s )\n请选择方式:a.攻击自己 d.攻击对方\n按1~%d选择道具\n当前道具:",ps,bs,sd,kd,(f?2:1),(f?p2:p1),(bd+pd==4?8:4));
for(int i=1;i<=((bd+pd==4)?8:4);i++)
if(h[i][f]) color(5),printf("%s ",n[h[i][f]].c_str()),color(0);
else printf("空 ");
if(q.empty()) goto B2;
if(f)
{
cz=1;
int NZ=0,JS=0;
for(int i=1;i<=8;i++)
{
if(h[i][1]==8) NZ=i;
if(h[i][1]==7)
if((pd+bd==1&&bs!=3)||(pd+bd==2&&bs!=4)||(pd+bd==3&&bs!=5)||(pd+bd==4&&bs!=6))
{
Sleep(500);
cls;
h[i][1]=0;
print("zzb 一仰头,吞完了一整瓶药",5,ti,1,1);
print("伤口治愈了,加了两点血",0,ti,0,1);
bs+=2;
if(bd+pd==1) bs=min(bs,3);
if(bd+pd==2) bs=min(bs,4);
if(bd+pd==3) bs=min(bs,5);
if(bd+pd==4) bs=min(bs,6);
cls;
}
if(h[i][1]==4) JS=i;
}
if(sd==0||(q.front()==1&&!NZ&&kd))
{
Sleep(1000);
cz=1;
q.pop();
cls;
print("zzb 瞄准了自己",0,ti,0,1);
cls;
print("咔擦,是空弹",0,ti,0,1);
kd--;
js=0;
cls;
}
else if(kd==0||(q.front()==1&&NZ&&kd)||(q.front()==2&&sd))
{
if(q.front()==1) Sleep(500),use(h[NZ][1],f,NZ);
if(JS) Sleep(500),use(h[JS][1],f,JS);
cz=1;
int D=q.front();q.pop();
f=!f;
cls;
Sleep(500);
print("zzb 瞄准了你",0,ti,0,1);
cls;
system("color f7"),Sleep(100),system("color 0f");
color(0);
cls;
if(D==1) kd--;
else sd--;
print("砰,枪响了",0,ti,0,1);
ps-=1+js;
js=nz=0;
cls;
}
else bug(q.front()),q.pop(),cls,printf("游戏bug,请等待1s"),Sleep(1000),cls;
}
else
{
if(h[1][f]&&(kd('1')||kd(VK_NUMPAD1))) use(h[1][f],f,1),cz=1;
if(h[2][f]&&(kd('2')||kd(VK_NUMPAD2))) use(h[2][f],f,2),cz=1;
if(h[3][f]&&(kd('3')||kd(VK_NUMPAD3))) use(h[3][f],f,3),cz=1;
if(h[4][f]&&(kd('4')||kd(VK_NUMPAD4))) use(h[4][f],f,4),cz=1;
if(h[5][f]&&(kd('5')||kd(VK_NUMPAD5))) use(h[5][f],f,5),cz=1;
if(h[6][f]&&(kd('6')||kd(VK_NUMPAD6))) use(h[6][f],f,6),cz=1;
if(h[7][f]&&(kd('7')||kd(VK_NUMPAD7))) use(h[7][f],f,7),cz=1;
if(h[8][f]&&(kd('8')||kd(VK_NUMPAD8))) use(h[8][f],f,8),cz=1;
if(kd('A'))
{
cz=1;
int D=q.front();q.pop();
cls;
if((nz==1&&D==2&&sd>0)||(nz==0&&D==1&&kd>0))
{
print("咔擦,是空弹",0,ti,0,1);
D==1?kd--:sd--;
nz=0,js=0;
cls;
continue;
}
else if((nz==1&&D==1&&kd>0)||(nz==0&&D==2&&sd>0))
{
system("color f7");Sleep(100);system("color 0f");
color(0);
cls;
print("砰,枪响了",0,ti,0,1);
(!f)?(ps-=1+js):(bs-=1+js);
if(D==2)sd--;
else kd--;
nz=0,js=0;
cls;
}
else bug(D),cls,printf("游戏bug,请等待1s"),Sleep(1000),cls;
}
if(kd('D'))
{
cz=1;
int D=q.front();q.pop();
f=!f;
cls;
if((nz==0&&D==1&&kd>0)||(nz==1&&D==2&&sd>0))
{
print("咔擦,是空弹",0,ti,0,1);
color(0);
sk?f=!f:f=f;
if(D==1) kd--;
else sd--;
nz=0;
js=sk=0,cls;
continue;
}
else if((nz==1&&D==1&&kd>0)||(nz==0&&D==2&&sd>0))
{
system("color f7"),Sleep(100),system("color 0f");
color(0);
cls;
if(D==1) kd--;
else sd--;
print("砰,枪响了",0,ti,0,1);
if(sk) f=!f,f?ps-=1+js:bs-=1+js;
else !f?ps-=1+js:bs-=1+js;
sk=js=0;
nz=0;
cls;
}
else bug(D),cls,f=!f,printf("游戏bug,请等待1s"),Sleep(1000),color(0),cls;
}
}
if(ps<=0&&bd!=2)
{
cls,sk=js=0;
system("color 4f"),Sleep(300),system("color 0f");
printf("%s,died",p1),print("",0,0,0,1);
kd=sd=0;
bd++;
if(bd+pd==1) bs=ps=3;
if(bd+pd==2) bs=ps=4;
if(bd+pd==2) bs=ps=4;
if(bd+pd==3) bs=ps=5;
if(bd+pd==4) bs=ps=6;
cls;
}
if(bs<=0&&pd!=2)
{
cls,sk=js=0;
system("color 4f"),Sleep(300),system("color 0f");
printf("%s,died",p2),print("",0,0,0,1);
kd=sd=0;
pd++;
if(bd+pd==1) bs=ps=3;
if(bd+pd==2) bs=ps=4;
if(bd+pd==2) bs=ps=4;
if(bd+pd==3) bs=ps=5;
if(bd+pd==4) bs=ps=6;
cls;
}
if(ps<=0&&bd==2)
{
cls;
color(2);
printf("游戏结束,%s胜利\n\n",p2);
Sleep(1000);
system("pause");
return;
}
if(bs<=0&&pd==2)
{
cls;
color(2);
printf("游戏结束,%s胜利\n\n",p1);
Sleep(1000);
system("pause");
return;
}
B2:
if(kd==0&&sd==0)
{
cls;
if(bd+pd==0) get_d(5,1);
if(bd+pd==1) get_d(5,2);
if(pd+bd==2) get_d(7,2);
if(pd+bd==3) get_d(7,3);
if(bd+pd==4) get_d(9,3);
color(0);
print("桌面翻转,",0,ti,0,0);printf("%d",kd);
print("个空弹与",0,ti,0,0);printf("%d",sd);
print("实弹出现了",0,ti,0,1);color(0);cls;
int S=sd,K=kd;
vector<int> v;v.clear();
while(S>0||K>0)
{
int r=rand()%2;
if(r==0&&S>0) S--,v.push_back(2);
if(r==1&&K>0) K--,v.push_back(1);
}
while(!v.empty())
{
int w=rand()%v.size();
q.push(v[w]);
v.erase(v.begin()+w);
}
if(pd+bd==0) continue;
if(bd+pd==1) get_j(2);
if(bd+pd==2) get_j(2);
if(bd+pd==2) get_j(3);
if(bd+pd==3) get_j(4);
if(bd+pd==4) get_j(4);
cls;
color(0);
print("P1面前的桌面翻转,",0,ti,1,0);
for(int i=1;i<=((bd+pd==4)?8:4);i++)
if(h[i][0])
{
while(h[i][0]==6) h[i][0]=rand()%HH+1;
color(5),printf("%s ",n[h[i][0]].c_str()),color(0);
}
else printf("空 ");
print("",0,0,0,1);
cls;
print("P2面前的桌面翻转,",0,ti,1,0);
for(int i=1;i<=((bd+pd==4)?8:4);i++)
if(h[i][1])
{
h[i][1]=rand()%2==0?4:(rand()%2==0?8:7);
color(5),printf("%s ",n[h[i][1]].c_str()),color(0);
}
else color(0),printf("空 ");
print("",0,0,0,1);
cls;
}
}
}
void game_begin()
{
while(1)
{
color(0);
gotoxy(25,8);
print("恶魔轮盘赌",5,0,0,0);
gotoxy(25,12);
printf("1. 双人模式");
gotoxy(25,14);
printf("2. 单机模式");
if(kd('1')||kd(VK_NUMPAD1)) fflush(stdin),cls,g_init(),pvp_start(),cls,init();
if(kd('2')||kd(VK_NUMPAD2))
{
fflush(stdin);
cls,g_init();
if(zzb!=3) pva_start();
else
{
if(!FF)
{
FF=1;
print("可以啊,竟然连续打败了三次我设计的AI",0,ti,1,1);
print("那么接下来,就让我陪你好好玩玩吧",4,ti,1,1);
}
pvzzb_start();
}
cls;
init();
}
gotoxy(25,16);
printf("3. 游戏介绍");
if(kd('3')||kd(VK_NUMPAD3)) cls,in_game(),cls;
}
}
int main()
{
zzb=FF=0;
srand(time(NULL));
color(0);
system("mode con cols=60 lines=26");
system("title 恶魔轮盘赌");
init();
game_begin();
return 0;
}