赌枪小游戏v0.0.1

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;
}

评论: