作者心累,不想说啥,还是求点赞、关注、收藏、转发
直接给代码吧……
#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;
}
}
}
}