hangling • 11个月前
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
string a[] = {"药", "药", "眼镜", "汽水", "汽水", "汽水", "汽水", "汽水"};
int P1_Blood = 2, P2_Blood = 2;
bool P1_Gun[14], P2_Gun[14];
int P1_Bullet_Index = 0, P2_Bullet_Index = 0;
int dan;
void gotoxy(int x, int y) {
COORD pos;
pos.X = y;
pos.Y = x;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void slowsay(const char* str, int speed = 35) {
for (int i = 0; i < strlen(str); i++) {
cout << str[i];
Sleep(speed);
}
}
void refillBullets(bool gun[],bool gun2[], int &bulletIndex,int &bulletIndex2) {
int sd = rand() % 3 + 1;
int kd = rand() % 10 + 1;
dan=sd+kd;
int pp1 = sd;
printf("本轮共%d颗子弹,%d颗空弹,%d颗实弹",sd+kd,kd,sd);
while (pp1 > 0) {
int ch = rand() % (sd + kd);
if (gun[ch] == 0) {
pp1--;
gun[ch] = 1;
}
}
bulletIndex = 0;
pp1=sd;
while (pp1 > 0) {
int ch = rand() % (sd + kd);
if (gun2[ch] == 0) {
pp1--;
gun2[ch] = 1;
}
}
bulletIndex2 = 0;
_sleep(3000);
}
void P1() {
system("cls");
slowsay("P1 Turn\n");
slowsay("P1剩余血量:");
cout << P1_Blood << "\n";
string Bag[5];
for (int i = 0; i < rand() % 5 + 1; i++) {
int y = rand() % 6;
Bag[i] = a[y];
cout << i + 1 << ":" << Bag[i] << " ";
}
cout << "\n选择(0开枪, -1射自己):";
int p;
cin >> p;
if (p == -1) {
if (P1_Gun[P1_Bullet_Index]) {
slowsay("P1射自己,扣一滴血\n");
P1_Blood--;
} else {
slowsay("P1射自己,未击中\n");
}
P1_Bullet_Index++;
if (P1_Bullet_Index >= dan) {
slowsay("你的子弹用完了!");
return ;
}
P1();
} else if (p == 0) {
if (P1_Gun[P1_Bullet_Index]) {
slowsay("P1开枪,击中P2\n");
P2_Blood--;
} else {
slowsay("P1开枪,未击中P2\n");
}
P1_Bullet_Index++;
if (P1_Bullet_Index >= dan) {
printf("你的子弹用完了!");
return ;
}
} else if (Bag[p - 1] == "药") {
if (rand() % 3 == 1) {
slowsay("这是一瓶毒药,扣一滴血\n");
slowsay("剩余");
P1_Blood--;
cout << P1_Blood;
slowsay("滴血");
} else {
slowsay("这是一瓶生命药水,加一滴血\n");
slowsay("剩余");
P1_Blood++;
cout << P1_Blood;
slowsay("滴血");
}
} else if (Bag[p - 1] == "汽水") {
slowsay("汽水可以推掉一颗子弹\n");
P1_Gun[P1_Bullet_Index] = false;
slowsay("成功推掉一颗子弹\n");
} else if (Bag[p - 1] == "眼镜") {
slowsay("眼镜可以透视自己枪里下一个子弹是什么\n");
if (P1_Gun[P1_Bullet_Index]) {
slowsay("下一个子弹是实弹\n");
} else {
slowsay("下一个子弹是空弹\n");
}
}
}
void P2() {
system("cls");
slowsay("P2 Turn\n");
slowsay("P2剩余血量:");
cout << P2_Blood << "\n";
string Bag[5];
for (int i = 0; i < rand() % 5 + 1; i++) {
int y = rand() % 6;
Bag[i] = a[y];
cout << i + 1 << ":" << Bag[i] << " ";
}
cout << "\n选择(0开枪, -1射自己):";
int p;
cin >> p;
if (p == -1) {
if (P2_Gun[P2_Bullet_Index]) {
slowsay("P2射自己,扣一滴血\n");
P2_Blood--;
} else {
slowsay("P2射自己,未击中\n");
}
P2_Bullet_Index++;
if (P2_Bullet_Index >= dan) {
printf("你的子弹用完了!");
return ;
}
P2();
} else if (p == 0) {
if (P2_Gun[P2_Bullet_Index]) {
slowsay("P2开枪,击中P1\n");
P1_Blood--;
} else {
slowsay("P2开枪,未击中P1\n");
}
P2_Bullet_Index++;
if (P2_Bullet_Index >= dan) {
printf("你的子弹用完了!");
return ;
}
} else if (Bag[p - 1] == "药") {
if (rand() % 3 == 1) {
slowsay("这是一瓶毒药,扣一滴血\n");
slowsay("剩余");
P2_Blood--;
cout << P2_Blood;
slowsay("滴血");
} else {
slowsay("这是一瓶生命药水,加一滴血\n");
slowsay("剩余");
P2_Blood++;
cout << P2_Blood;
slowsay("滴血");
}
} else if (Bag[p - 1] == "汽水") {
slowsay("汽水可以推掉一颗子弹\n");
P2_Gun[P2_Bullet_Index] = false;
slowsay("成功推掉一颗子弹\n");
} else if (Bag[p - 1] == "眼镜") {
slowsay("眼镜可以透视自己枪里下一个子弹是什么\n");
if (P2_Gun[P2_Bullet_Index]) {
slowsay("下一个子弹是实弹\n");
} else {
slowsay("下一个子弹是空弹\n");
}
}
}
void start() {
refillBullets(P1_Gun,P2_Gun, P1_Bullet_Index,P2_Bullet_Index);
}
int main() {
srand(time(NULL));
start();
while (P1_Blood > 0 && P2_Blood > 0) {
P1();
if (P1_Blood <= 0) {
slowsay("P2获胜\n");
break;
}
P2();
if (P2_Blood <= 0) {
slowsay("P1获胜\n");
break;
}
if(P1_Bullet_Index >= dan&&P2_Bullet_Index >= dan){
slowsay("双方子弹已用完,");
if(P1_Blood>P2_Blood) slowsay("平局!") ;
else if(P1_Blood>P2_Blood) slowsay("P1胜!") ;
else if(P1_Blood>P2_Blood) slowsay("P2胜!") ;
}
}
return 0;
}
评论: