绝密文件,禁止查看!(上)
2025-09-21 11:07:02
发布于:浙江
#include <bits/stdc++.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
using namespace std;
bool Black;
void Color(int a) {
if (Black == 1) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0);
return;
}
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_GREEN | FOREGROUND_BLUE);
if (a == 8)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
if (a == 9)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_BLUE);
if (a == 10)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
if (a == 11)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN);
if (a == 12)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
void SetPos(int x, int y) {
COORD pos;
pos.X = y * 2, pos.Y = x;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void Slow(int a, char *p) {
while (1) {
if (*p != 0)
printf("%c", *p++);
else
break;
Sleep(a);
}
}
struct node {
char Name[201];
int Blood, Bloodmax, Bloodjia;
int Skilnum, Skilmax, Money, EXP, Shan;
int Skil[1001], Skilstr[1001]; //触发率
int Blp, Blpt, Duk, Dut, Ice, Yun, Wudi, Wudit, Qipt;
float Qi, Qip, Qijia;
} You[1001], Guai[1001];
struct node2 {
char Name[201];
float Qi;
int Kill, What, color; //物法
int Any, Anykill[1001], Anywhat[1001], Time[1001]; //额外种类
float Anyqi[1001];
} Skill[1001];
int Skkk[1001], Skll, skk, Tong, Tongmax, Ju, Juk, Jiao, Shen, Ji, Yuan, Shan, Fu;
int dy, dd, Dy, Dd, sa, sb, sc, ss, k1 = -1, k2, k3, k4;
bool Y[10001], D[10001];
void CheckMe() {
int aa = 0;
system("cls");
Color(0);
SetPos(1, 1), printf("--------查看本体技能--------");
SetPos(3, 1), printf("技能数量上限:%d", You[0].Skilmax);
for (int i = 1; i <= You[0].Skilmax; i++) {
if (You[0].Skilnum < i) {
SetPos(5, i * 11 - 10), cout << "技能" << i << ":空技能槽";
continue;
}
SetPos(5, i * 11 - 10), cout << "技能" << i << ":";
Color(Skill[You[0].Skil[i]].color);
printf("%s", Skill[You[0].Skil[i]].Name);
Color(0);
SetPos(7, i * 11 - 10), cout << "耗气量:";
printf("%0.1f", Skill[You[0].Skil[i]].Qi);
SetPos(9, i * 11 - 10), cout << "技能类型:";
if (Skill[You[0].Skil[i]].What == 1)
cout << "单体伤害";
if (Skill[You[0].Skil[i]].What == 2)
cout << "群体伤害";
if (Skill[You[0].Skil[i]].What == 3)
cout << "防御与辅助";
if (Skill[You[0].Skil[i]].What <= 2)
SetPos(11, i * 11 - 10), cout << "攻击力:" << Skill[You[0].Skil[i]].Kill;
else
SetPos(11, i * 11 - 10), cout << "无攻击力......";
SetPos(13, i * 11 - 10);
if (Skill[You[0].Skil[i]].What % 10 != 4)
cout << "额外";
cout << "效果:";
if (Skill[You[0].Skil[i]].Any == 0)
cout << "无";
else {
for (int j = 1; j <= Skill[You[0].Skil[i]].Any; j++) {
aa = max(aa, j);
int Sk = Skill[You[0].Skil[i]].Anywhat[j];
SetPos(14 + j * 3 - 2, i * 11 - 10);
printf("%d. ", j);
if (Skill[You[0].Skil[i]].What <= 2) {
if (Sk == 1)
printf("冰冻"), SetPos(14 + j * 3 - 1, i * 11 - 9), printf(" 持续时间:%d", Skill[You[0].Skil[i]].Time[j]);
if (Sk == 2)
printf("毒伤"), SetPos(14 + j * 3 - 1, i * 11 - 9), printf(" 攻击力:%d", Skill[You[0].Skil[i]].Anykill[j]),
SetPos(14 + j * 3, i * 11 - 9), printf(" 持续时间:%d", Skill[You[0].Skil[i]].Time[j]);
if (Sk == 3)
printf("暴击率"), SetPos(14 + j * 3 - 1, i * 11 - 9), printf(" 触发百分比:%d", Skill[You[0].Skil[i]].Anykill[j]),
cout << '%';
if (Sk == 4)
printf("连击率"), SetPos(14 + j * 3 - 1, i * 11 - 9), printf(" 触发百分比:%d", Skill[You[0].Skil[i]].Anykill[j]),
cout << '%';
if (Sk == 5)
printf("眩晕率"), SetPos(14 + j * 3 - 1, i * 11 - 9), printf(" 触发百分比:%d", Skill[You[0].Skil[i]].Anykill[j]),
cout << '%';
if (Sk == 6)
printf("百分比伤害"), SetPos(14 + j * 3 - 1, i * 11 - 9), printf(" 伤害百分比:%d", Skill[You[0].Skil[i]].Anykill[j]),
cout << '%';
if (Sk == 7)
printf("吸血"), SetPos(14 + j * 3 - 1, i * 11 - 9), printf(" 加血量:%d", Skill[You[0].Skil[i]].Kill);
} else {
if (Sk == 1)
printf("加血"), SetPos(14 + j * 3 - 1, i * 11 - 9), printf(" 增幅量:%d", Skill[You[0].Skil[i]].Anykill[j]);
if (Sk == 2)
printf("无敌"), SetPos(14 + j * 3 - 1, i * 11 - 9), printf(" 持续时间:%d", Skill[You[0].Skil[i]].Time[j]);
if (Sk == 3)
printf("持续加血"), SetPos(14 + j * 3 - 1, i * 11 - 9), printf(" 增幅量:%d", Skill[You[0].Skil[i]].Anykill[j]),
SetPos(14 + j * 3, i * 11 - 9), printf(" 持续时间:%d", Skill[You[0].Skil[i]].Time[j]);
if (Sk == 4)
printf("持续加气"), SetPos(14 + j * 3 - 1, i * 11 - 9), printf(" 增幅量:%0.1f", Skill[You[0].Skil[i]].Anyqi[j]),
SetPos(14 + j * 3, i * 11 - 9), printf(" 持续时间:%d", Skill[You[0].Skil[i]].Time[j]);
}
}
}
}
SetPos(16 + aa * 3, 1), cout << "按任意键退出。";
char a;
a = _getch();
}
void ChangeSkill() {
system("cls");
Color(0);
if (Jiao == 4) {
SetPos(22, 1), Color(5),
printf("教程提示 4 :你现在最多可以装备2个技能,\n 技能均需要“气”来使用,你可以“蓄气”来增加你的气数。\n 按 2 1 装备,否则退出教程。"),
Color(0);
SetPos(0, 0);
}
if (Jiao == 8) {
SetPos(22, 1), Color(5),
printf("教程提示 8 :群攻技能无需瞄准,\n 其会在发出时攻击所有人。\n 按 1 1 装备,否则退出教程。"),
Color(0);
SetPos(0, 0);
}
SetPos(1, 1), printf("--------修改本体技能--------");
SetPos(3, 1), printf("本体技能:\n");
int i;
for (i = 1; i <= You[0].Skilnum; i++)
Color(0), printf("\n %d: ", i), Color(Skill[You[0].Skil[i]].color), printf("%s", Skill[You[0].Skil[i]].Name);
if (You[0].Skilnum < You[0].Skilmax)
Color(0), printf("\n %d: 放入空技能槽", You[0].Skilnum + 1), i++;
Color(0), printf("\n\n 闲置技能:\n");
if (skk == 0)
printf("\n 无");
else
for (int i = 1; i <= skk; i++)
Color(0), SetPos(9 + i, 1), printf("\n %d: ", i), Color(Skill[Skkk[i]].color), printf("%s", Skill[Skkk[i]].Name);
Color(0), printf("\n\n 请输入你想交换的两个技能的编号(回车确定,输 0 0 退出)----- ");
int a, b;
cin >> a >> b;
if (a == 2 && b == 1 && Jiao == 4)
Jiao++;
if ((a != 2 || b != 1) && Jiao == 4)
Jiao = -1;
if (a == 1 && b == 1 && Jiao == 8)
Jiao++;
if ((a != 1 || b != 1) && Jiao == 8)
Jiao = -1;
if (a == You[0].Skilnum + 1) {
You[0].Skilnum++, You[0].Skil[You[0].Skilnum] = Skkk[b];
for (int i = b; i < skk; i++)
swap(Skkk[i], Skkk[i + 1]);
Skkk[skk] = 0;
skk--;
ChangeSkill();
} else if (a != 0)
swap(You[0].Skil[a], Skkk[b]), ChangeSkill();
}
void CheckUs() {
system("cls");
Color(0);
SetPos(1, 1), printf("--------查看同伴技能--------");
SetPos(3, 1), printf("同伴数量:%d 同伴上限:%d", Tong, Tongmax);
for (int i = 1; i <= Tong; i++) {
SetPos(5, i * 11 - 10), cout << "同伴" << i << ":";
SetPos(7, i * 11 - 10), cout << "技能数量上限:" << You[i].Skilmax;
SetPos(9, i * 11 - 10), cout << "技能数量:" << You[i].Skilnum;
for (int j = 1; j <= You[i].Skilnum; j++)
SetPos(9 + 2 * j, i * 11 - 10), printf("第%d技能:", j), Color(Skill[You[i].Skil[j]].color),
cout << Skill[You[i].Skil[j]].Name, Color(0);
}
SetPos(22, 1), cout << "按任意键退出。";
char a;
a = _getch();
}
void StartSkill() {
system("cls");
Color(0);
SetPos(1, 1), printf("Hi,请输入你的新技能的名字......");
int x = 100 + Skll;
Skll++;
float X = 1, Sha = 0;
skk++, Skkk[skk] = x;
scanf("%s", &Skill[x].Name);
printf("\n 请输入技能种类......\n\n");
printf(" 1.单体伤害 2.群体伤害 3.防御与辅助 ..... ");
cin >> Skill[x].What;
if (Skill[x].What == 2)
X *= 3;
if (Skill[x].What <= 2) {
printf("\n 请输入技能攻击力(建议<100,不然耗气量会巨多)......");
cin >> Skill[x].Kill;
Sha += Skill[x].Kill;
printf("\n 请输入技能额外效果数(建议<3,不然耗气量会巨多)......");
cin >> Skill[x].Any;
for (int i = 1; i <= Skill[x].Any; i++) {
printf("\n 请输入技能 额外效果 %d:", i);
printf("\n\n 1.冰冻 2.毒伤 3.暴击率 4.连击率");
printf("\n 5.眩晕率 6.百分比伤害 7.吸血 ..... ");//10为 偷钱
cin >> Skill[x].Anywhat[i];
int a = Skill[x].Anywhat[i];
if (a >= 3 && a <= 6)
printf("\n 请输入其的百分比(必须<80!建议<30,不然耗气量会巨多)......"), cin >> Skill[x].Anykill[i];
if (a == 2)
printf("\n 请输入其的攻击力(建议<30,不然耗气量会巨多)......"), cin >> Skill[x].Anykill[i];
if (a <= 2)
printf("\n 请输入其的持续时间(建议<4,不然耗气量会巨多)......"), cin >> Skill[x].Time[i];
int w = Skill[x].Kill, z = Skill[x].Anykill[i], t = Skill[x].Time[i];
if (a == 1)
Sha += 50 * t;
if (a == 2)
Sha += 0.5 * z * t;
if (a == 3) {
if (z < 20)
X *= 1 + z / 100;
else if (z < 50)
X *= 1 + z / 50;
else
X *= z / 20;
}
if (a == 4) {
if (z < 30)
X *= 1 + z / 80;
else if (z < 60)
X *= 0.8 + z / 30;
else
X *= z / 5 - 3;
}
if (a == 5) {
if (z < 30)
X *= 1 + z / 100;
else if (z < 50)
X *= 0.8 + z / 40;
else
X *= z / 10 - 3;
}
if (a == 6)
Sha += 3 * z;
if (a == 7)
Sha += 1.3 * w;
}
} else {
printf("\n 请输入技能效果数(建议<3,不然耗气量会巨多)......");
cin >> Skill[x].Any;
for (int i = 1; i <= Skill[x].Any; i++) {
printf("\n 请输入技能 额外效果 %d ......", i);
printf("\n\n 1.加血 2.无敌 3.持续加血 4.持续加气"); //5为 召唤
cin >> Skill[x].Anywhat[i];
int a = Skill[x].Anywhat[i];
if (a == 1 || a == 3)
printf("\n 请输入其的增幅量(建议<30,不然耗气量会巨多)......"), cin >> Skill[x].Anykill[i];
if (a == 4)
printf("\n 请输入其的增幅量(可输入一位小数,建议<3,不然耗气量会巨多)......"), cin >> Skill[x].Anyqi[i];
if (a >= 2)
printf("\n 请输入其的持续时间(建议<4,不然耗气量会巨多)......"), cin >> Skill[x].Time[i];
int w = Skill[x].Kill, z = Skill[x].Anykill[i], t = Skill[x].Time[i];
float v = Skill[x].Anyqi[i];
if (a == 1)
Sha += z;
if (a == 2)
Sha += 20 * t;
if (a == 3)
Sha += t * z;
if (a == 4)
Sha += 20 * t * v;
if (a == 4 && t == 1)
Sha *= 500;
if (a == 4 && t == 2)
Sha *= 100;
}
}
printf("\n 请输入其的颜色......");
Color(1), cout << "\n 1.蓝 ";
Color(2), cout << "2.绿 ";
Color(3), cout << "3.紫 ";
Color(4), cout << "4.红 ";
Color(5), cout << "5.黄 ";
Color(6), cout << "6.深蓝 ";
Color(7), cout << "\n 7.青 ";
Color(8), cout << "8.深绿 ";
Color(9), cout << "9.深紫 ";
Color(10), cout << "10.深红 ";
Color(11), cout << "11.木色 ";
Color(12), cout << "12.灰 ";
Color(0), cin >> Skill[x].color;
if (Sha < 20)
Sha = Sha / 30;
else if (Sha < 50)
Sha = Sha / 40 + 0.5;
else if (Sha < 200)
Sha = Sha / 150 + 1.5;
else
Sha = Sha / 70;
Skill[x].Qi = Sha * X * 10 / (0.8 + 0.1 * Ju);
int skillqi = Skill[x].Qi;
Skill[x].Qi = (float)skillqi / 10;
printf("\n 计算已完成,这个技能的耗气量为------- %0.1f\n", Skill[x].Qi);
cout << "\n 按 y 更改技能,按 0 退出。";
char a;
cin >> a;
if (a == 'y')
ChangeSkill();
}
void Main();
void Killk(int c, int a, int b) { //单体
int RR = 0, bxb = 0;
if (Guai[b].Blood <= 0)
return;
int RRR = rand() % 100;
if (Skill[a].Kill > 5)
RR = rand() % (Skill[a].Kill / 5) - Skill[a].Kill / 10;
printf("\n %s攻击了%s!\n", You[c].Name, Guai[b].Name);
Sleep(200);
if (Guai[b].Wudi > 0) {
printf("\n 但是!%s是无敌的!\n", Guai[b].Name);
Sleep(200);
return;
}
if (Guai[b].Shan > RRR) {
printf("\n 但是!%s闪避开了!\n", Guai[b].Name);
Sleep(200);
return;
}
int ki = Skill[a].Kill + RR;
Guai[b].Blood -= ki;
if (Skill[a].Kill > 0) {
printf("\n %s受到%d点伤害,血量还剩%d。\n", Guai[b].Name, ki, Guai[b].Blood);
Sleep(200);
}
for (int i = 1; i <= Skill[a].Any; i++) {
int j = Skill[a].Anywhat[i], k = Skill[a].Time[i], l = Skill[a].Anykill[i], m = Skill[a].Kill, mmm;
int r1 = rand() % 100 + 1, r2 = rand() % 50 + 51, r3 = rand() % 100 + 1;
if (j == 1)
Guai[b].Ice += k, printf("\n %s被冰冻!冰冻时间还剩%d。\n", Guai[b].Name, Guai[b].Ice);
if (j == 2)
Guai[b].Dut += k, Guai[sb].Duk = l, printf("\n %s中毒!中毒时间还剩%d。\n", Guai[b].Name, Guai[b].Dut);
if (j == 3 && r1 <= l)
mmm = m * r2 / 100, Guai[b].Blood -= mmm, printf("\n %s被暴击!多受到%d点伤害,血量还剩%d。\n", Guai[b].Name, mmm,
Guai[b].Blood);
if (j == 4 && r1 <= l && Guai[b].Blood > 0)
Guai[b].Blood -= m, printf("\n %s被连击!再次受到%d点伤害,血量还剩%d。\n", Guai[b].Name, m, Guai[b].Blood), i--;
if (j == 5 && r1 <= l)
Guai[b].Yun++, printf("\n %s被击晕!击晕时间还剩%d。\n", Guai[b].Name, Guai[b].Yun);
if (j == 6)
mmm = Guai[b].Blood * l / 100, Guai[b].Blood -= mmm, printf("\n %s遭受百分比伤害!受到%d点伤害,血量还剩%d。\n",
Guai[b].Name, mmm, Guai[b].Blood);
if (j == 7)
You[c].Blood = min(You[c].Bloodmax, You[c].Blood + Skill[a].Kill + RR),
printf("\n %s被吸血! %s的血量增加%d,还剩%d。\n", Guai[b].Name, You[c].Name, Skill[a].Kill + RR, You[c].Blood);
Sleep(200);
}
if (Guai[b].Blood <= 0)
Color(4), printf("\n %s阵亡!", Guai[b].Name), dy--, Color(0), printf("你的金币+%d!\n", Guai[b].Money),
You[0].Money += Guai[b].Money;
}
void Killkk(int c, int a) { //辅助
for (int i = 1; i <= Skill[a].Any; i++) {
int j = Skill[a].Anywhat[i], k = Skill[a].Time[i], l = Skill[a].Anykill[i];
float m = Skill[a].Anyqi[i];
int r1 = rand() % 100 + 1, r2 = rand() % 100 + 1, r3 = rand() % 100 + 1;
if (j == 1)
You[c].Blood += l, You[c].Blood = min(You[c].Bloodmax, You[c].Blood), printf("\n %s加血%d!血量还剩%d。\n",
You[c].Name, l, You[c].Blood);
if (j == 2)
You[c].Wudi += k, printf("\n %s开启无敌!无敌时间还剩%d。\n", You[c].Name, You[c].Wudi);
if (j == 3)
You[c].Blpt += k, You[c].Blp = l, printf("\n %s开启持续加血!持续时间还剩%d。\n", You[c].Name, You[c].Blpt);
if (j == 4)
You[c].Qipt += k, You[c].Qip = m, printf("\n %s开启持续加气!持续时间还剩%d。\n", You[c].Name, You[c].Qipt);
Sleep(200);
}
}
void Killkkk(int c, int a) { //群攻
bool k[1001];
memset(k, 0, sizeof(k));
int R = min(rand() % 3 + 4, dy), ll = 0;
for (int i = 1; i <= R; i++) {
int j = rand() % Dy + 1;
if (Guai[j].Blood > 0 && k[j] == 0)
Killk(c, a, j), k[j] = 1, ll = 0;
else
i--, ll++;
if (ll >= 5)
break;
}
}
void Killk2(int b, int a, int c) { //怪单体
int RR = 0;
if (Skill[a].Kill > 5)
RR = rand() % (Skill[a].Kill / 5) - Skill[a].Kill / 10;
int RRR = rand() % 100;
printf("\n %s攻击了%s!\n", Guai[b].Name, You[c].Name);
Sleep(200);
if (You[c].Wudi > 0) {
printf("\n 但是!%s是无敌的!\n", You[c].Name);
Sleep(200);
return;
}
if (You[c].Shan > RRR) {
printf("\n 但是!%s闪避开了!\n", You[c].Name);
Sleep(200);
return;
}
int ki = Skill[a].Kill + RR;
You[c].Blood -= ki;
if (Skill[a].Kill > 0) {
printf("\n %s受到%d点伤害,血量还剩%d。\n", You[c].Name, ki, You[c].Blood);
Sleep(200);
}
for (int i = 1; i <= Skill[a].Any; i++) {
int j = Skill[a].Anywhat[i], k = Skill[a].Time[i], l = Skill[a].Anykill[i], m = Skill[a].Kill, mmm;
int r1 = rand() % 100 + 1, r2 = rand() % 50 + 51, r3 = rand() % 100 + 1;
if (j == 1)
You[c].Ice += k, printf("\n %s被冰冻!冰冻时间还剩%d。\n", You[c].Name, You[c].Ice);
if (j == 2)
You[c].Dut += k, You[c].Duk = l, printf("\n %s中毒!中毒时间还剩%d。\n", You[c].Name, You[c].Dut);
if (j == 3 && r1 <= l)
mmm = m * r2 / 100, You[c].Blood -= mmm, printf("\n %s被暴击!多受到%d点伤害,血量还剩%d。\n", You[c].Name, mmm,
You[c].Blood);
if (j == 4 && r1 <= l && You[c].Blood > 0)
You[c].Blood -= m, printf("\n %s被连击!再次受到%d点伤害,血量还剩%d。\n", You[c].Name, m, You[c].Blood), i--;
if (j == 5 && r1 <= l)
You[c].Yun++, printf("\n %s被击晕!击晕时间还剩%d。\n", You[c].Name, You[c].Yun);
if (j == 6)
mmm = You[c].Blood * l / 100, You[c].Blood -= mmm, printf("\n %s遭受百分比伤害!受到%d点伤害,血量还剩%d。\n",
You[c].Name, mmm, You[c].Blood);
if (j == 7)
Guai[b].Blood = min(Guai[b].Bloodmax, Guai[b].Blood + Skill[a].Kill + RR),
printf("\n %s被吸血! %s的血量增加%d,还剩%d。\n", You[c].Name, Guai[b].Name, Skill[a].Kill + RR, Guai[b].Blood);
if (j == 10)
l = min(You[0].Money, l), You[0].Money -= l, Guai[b].Money += l,
printf("\n 你队被偷钱!金币数量减少%d,还剩%d,%s金币加为%d。\n", l, You[0].Money, Guai[b].Name, Guai[b].Money);
Sleep(200);
}
int as = rand() % 5;
if (You[c].Skilnum == 0)
as = 0;
if (Skill[a].What == 1 && Skill[a].Anywhat[1] == 10)
as = 1; //偷钱
if (c != 0 && You[c].Skilmax != You[c].Skilnum && as == 0)
Color(5), printf("\n 但是!%s学会了此技能!\n", You[c].Name), You[c].Skilnum++, You[c].Skil[You[c].Skilnum] = a,
Color(0), Sleep(200);
if (You[c].Blood <= 0) {
Color(4), printf("\n %s阵亡!\n", You[c].Name), dd--;
int rrR = rand() % 30;
if (rrR == 0 && c != 0) {
Tong = max(0, Tong - 1);
Slow(70, "\n 你的同伴对你们黑暗的前途叹了口气...\n 毅然决然地拖着已失去知觉的身体,走出了战场...\n 消失在地平线上!\n");
for (int i = c; i <= Tong; i++)
swap(You[i], You[i + 1]);
}
Color(0);
}
if (You[0].Blood <= 0 && Fu != 0)
Color(5), printf("\n 但是!%s复活!\n", You[c].Name), You[0].Blood = 20, dd++, Fu--, Color(0);
}
void Startguai(int a);
void Killkk2(int a, int b) { //怪辅助
for (int i = 1; i <= Skill[a].Any; i++) {
int j = Skill[a].Anywhat[i], k = Skill[a].Time[i], l = Skill[a].Anykill[i];
int r1 = rand() % 100 + 1, r2 = rand() % 100 + 1, r3 = rand() % 100 + 1;
if (j == 1)
Guai[b].Blood += l, Guai[b].Blood = min(Guai[b].Bloodmax, Guai[b].Blood), printf("\n %s加血%d!血量还剩%d。\n",
Guai[b].Name, l, Guai[b].Blood);
if (j == 2)
Guai[b].Wudi += k, printf("\n %s开启无敌!无敌时间还剩%d。\n", Guai[b].Name, Guai[b].Wudi);
if (j == 3)
Guai[b].Blpt += k, Guai[b].Blp = l, printf("\n %s开启持续加血!持续时间还剩%d。\n", Guai[b].Name, Guai[b].Blpt);
if (j == 5)
Startguai(Skill[a].Anykill[i]), printf("\n %s召唤了%s!%s加入战场。\n", Guai[b].Name, Guai[Dy].Name, Guai[Dy].Name);
Sleep(200);
}
}
void Killkkk2(int a, int b) { //怪群攻
bool k[1001];
memset(k, 0, sizeof(k));
int R = min(rand() % 3 + 3 + Ju, dd), ll = 0;
for (int i = 1; i <= R; i++) {
int j = rand() % Dd;
if (You[j].Blood > 0 && k[j] == 0)
Killk2(b, a, j), k[j] = 1, ll = 0;
else
i--, ll++;
if (ll >= 5)
break;
}
}
void Killguai(int aa) { //你队
int kk = 0;
Color(5);
printf("\n %s的回合!\n\n", You[aa].Name), Sleep(500);
Color(0);
if (You[aa].Wudi > 0)
You[aa].Wudi--, printf(" %s还在无敌!持续时间还剩%d。\n\n", You[aa].Name, You[aa].Wudi), Sleep(200);
if (You[aa].Qipt > 0)
You[aa].Qipt--, You[aa].Qi += You[aa].Qip, printf(" %s的气增加%0.1f,还剩%0.1f,持续时间还剩%d。\n\n", You[aa].Name,
You[aa].Qip, You[aa].Qi, You[aa].Qipt), Sleep(200);
if (You[aa].Blpt > 0)
You[aa].Blpt--, You[aa].Blood += You[aa].Blp, You[aa].Blood = min(You[aa].Bloodmax, You[aa].Blood),
printf(" %s的血量增加%d,还剩%d,持续时间还剩%d。\n\n", You[aa].Name, You[aa].Blp, You[aa].Blood, You[aa].Blpt),
Sleep(200);
if (You[aa].Dut > 0)
You[aa].Dut--, You[aa].Blood -= You[aa].Duk, printf(" %s毒发!其的血量减少%d,还剩%d,持续时间还剩%d。\n\n",
You[aa].Name, You[aa].Duk, You[aa].Blood, You[aa].Dut), Sleep(200);
if (You[aa].Ice > 0)
kk = 1, You[aa].Ice--, printf(" %s被冰冻了......,冰冻时间还剩%d。\n\n", You[aa].Name, You[aa].Ice), Sleep(200);
if (You[aa].Yun > 0) {
You[aa].Yun--;
if (kk == 1)
cout << endl << " 同时,";
else
cout << endl << " ";
printf("%s被击晕了......,击晕时间还剩%d\n\n", You[aa].Name, You[aa].Yun), Sleep(200);
return;
}
if (You[aa].Blood <= 0)
Color(4), printf("\n %s阵亡!\n", You[aa].Name), dd--, kk = 1, Color(0);
if (kk == 1)
return;
if (aa == 0) {
You[aa].Qi += You[aa].Qijia;
You[aa].Blood += You[aa].Bloodjia;
You[aa].Blood = min(You[aa].Blood, You[aa].Bloodmax);
Color(0), printf(" 你的气数+%0.1f: %0.1f\n", You[aa].Qijia, You[aa].Qi);
Color(0), printf("\n 你的血量+%d: %d\n", You[aa].Bloodjia, You[aa].Blood);
printf("\n 你的技能:\n");
Sleep(200);
Color(0), printf("\n 0: 蓄气");
for (int i = 1; i <= You[aa].Skilnum; i++) {
Color(0), printf("\n %d: ", i), Color(Skill[You[aa].Skil[i]].color), printf("%s", Skill[You[aa].Skil[i]].Name);
Color(0);
if (Skill[You[aa].Skil[i]].Qi > You[aa].Qi)
cout << "(不可用)";
}
printf("\n\n 请输入你想使用技能的编号----- ");
int a, b;
cin >> a;
if (a == 0)
You[aa].Qi += 1, printf("\n %s蓄气!你的气数 +1,还剩%0.1f。\n", You[aa].Name, You[aa].Qi);
else {
int c = You[aa].Skil[a];
if (You[aa].Qi - Skill[c].Qi < 0)
return;
You[aa].Qi -= Skill[c].Qi;
if (Skill[c].What == 1) {
Color(0), printf("\n 当前敌人:\n");
for (int i = 1; i <= Dy; i++)
if (Guai[i].Blood > 0) {
printf("\n %d: %s (血量:%d)", i, Guai[i].Name, Guai[i].Blood);
}
printf("\n\n 请输入你想攻击敌人的编号----- ");
cin >> b;
}
printf("\n\n 你使用技能:");
Color(Skill[c].color);
printf("%s", Skill[c].Name);
Color(0), cout << " !" << endl;
if (Skill[c].What == 1)
Killk(0, c, b);
if (Skill[c].What == 2)
Killkkk(0, c);
if (Skill[c].What == 3)
Killkk(0, c);
}
} else {
int R = rand() % 100 + 1, l = 0, kk = 0, o = rand() % 5;
if (You[aa].Skilnum != 0)
l = rand() % You[aa].Skilnum + 1;
if (o == 0)
l = 0;
printf(" %s使用技能:", You[aa].Name);
Color(Skill[You[aa].Skil[l]].color);
Sleep(200);
if (l == 0) {
cout << "蓄气 !" << endl;
return;
}
printf("%s", Skill[You[aa].Skil[l]].Name);
Color(0), cout << " !" << endl;
KR:
int sc = rand() % Dy + 1;
Sleep(200);
if (Skill[You[aa].Skil[l]].What == 1)
if (Guai[sc].Blood > 0)
Killk(aa, You[aa].Skil[l], sc);
else
goto KR;
if (Skill[You[aa].Skil[l]].What == 2)
Killkkk(aa, You[aa].Skil[l]);
if (Skill[You[aa].Skil[l]].What == 3)
Killkk(aa, You[aa].Skil[l]);
}
}
void Killyou(int sb) { //怪
sa = rand() % dd;
int R = rand() % (100 - min(10, Ju * 3)) + 1, l = 0, kk = 0;
Color(5);
printf("\n %s的回合!\n", Guai[sb].Name), Sleep(500);
Color(0);
if (Guai[sb].Wudi > 0)
Guai[sb].Wudi--, printf(" %s还在无敌!持续时间还剩%d。\n\n", Guai[sb].Name, Guai[sb].Wudi), Sleep(200);
if (Guai[sb].Blpt > 0)
Guai[sb].Blpt--, Guai[sb].Blood += Guai[sb].Blp, Guai[sb].Blood = min(Guai[sb].Bloodmax, Guai[sb].Blood),
printf(" %s的血量增加%d,还剩%d,持续时间还剩%d。\n\n", Guai[sb].Name, Guai[sb].Blp, Guai[sb].Blood, Guai[sb].Blpt),
Sleep(200);
if (Guai[sb].Dut > 0)
Guai[sb].Dut--, Guai[sb].Blood -= Guai[sb].Duk, printf(" %s毒发!它的血量减少%d,还剩%d,持续时间还剩%d。\n\n",
Guai[sb].Name, Guai[sb].Duk, Guai[sb].Blood, Guai[sb].Dut), Sleep(200);
if (Guai[sb].Ice > 0)
kk = 1, Guai[sb].Ice--, printf(" %s被冰冻了......,冰冻时间还剩%d。\n\n", Guai[sb].Name, Guai[sb].Ice), Sleep(200);
if (Guai[sb].Yun > 0) {
Guai[sb].Yun--;
if (kk == 1)
cout << endl << " 同时,";
else
cout << endl << " ";
printf("%s被击晕了......,击晕时间还剩%d\n\n", Guai[sb].Name, Guai[sb].Yun), Sleep(200);
return;
}
if (Guai[sb].Blood <= 0)
Color(4), printf("\n %s阵亡!\n", Guai[sb].Name), dy--, kk = 1, Color(0);
if (kk == 1)
return;
for (int i = 1; i <= Guai[sb].Skilnum; i++) {
if (R > Guai[sb].Skilstr[i])
continue;
else {
l = Guai[sb].Skil[i];
break;
}
}
printf("\n %s使用技能:", Guai[sb].Name);
Color(Skill[l].color);
Sleep(200);
if (l == 0) {
cout << "蓄气 !" << endl;
return;
}
printf("%s", Skill[l].Name);
Color(0), cout << " !" << endl;
KR:
int sc = rand() % Dd;
Sleep(200);
if (Skill[l].What == 1)
if (You[sc].Blood > 0)
Killk2(sb, l, sc);
else
goto KR;
if (Skill[l].What == 3)
Killkk2(l, sb);
if (Skill[l].What == 2)
Killkkk2(l, sb);
}
void Juing() {
system("cls");
Color(5);
if (Ju == 1)
Slow(50, "\n -----------第一章-----------\n\n 这个世界是由SLFDC政府掌管的。\n\n 近几年,由于太上皇的暴政,有10%的诸侯国脱离了此政府。\n\n 为此,SLFDC创立了强大的军事力量,\n\n 由三大教,七武科代表统管。\n\n 而你方则立下了四皇来与之抗衡。\n\n 现在,世界混乱,而你,必定是可以称霸世界,重拾和平的人!\n\n 于是,你走上了与天下人抗争的道路,\n\n 辉煌的前途正向你驶来!");
if (Ju == 2)
Slow(50, "\n -----------第二章-----------\n\n 在这一年中,四皇小P,老狗,梢公与小梁终于在思想上达成了一致\n\n 一个名为信奥班的群体终于崛起!\n\n 与此同时,因为救下了一位小P的手下,\n\n 你也光荣地入队!\n\n 现在,你开始承受SLFDC更为激烈的打击,\n\n 你一定要创造计策与机会,存活下去!");
if (Ju == 3)
Slow(50, "\n -----------第三章-----------\n\n 前线传来坏消息,\n\n 太上皇用自己无敌的能力击溃了大部分军队,\n\n 而继续反扑向信奥班本部!\n\n 于是,四皇们决定进军SLFDC本部!\n\n 政府在这时风雨飘摇,欲摧不倒!\n\n 江山即将易主,已经可以看到黎明的曙光!");
if (Ju == 4)
Slow(50, "\n -----------第四章-----------\n\n 震撼人心的“SLFDC顶上战争”终于爆发了!\n\n 前线军队战斗的轰轰烈烈,尸横遍地!\n\n 在弹尽粮绝之时,你忽然发现,自己已变得超乎想象的强大!\n\n 你从尸山血海中站起,\n\n 经历的所有战争均是超乎想象的宏大!\n\n 你始终相信,终有一天,希望将照在这辽阔的大地上!");
if (Ju == 5)
Slow(50, "\n -----------第五章-----------\n\n 战争结束了!\n\n 你的目标终于达成了!\n\n 接下来,你就可以肆无忌惮的在你的国度除恶扬善了!\n .\n .\n .\n .\n .\n .\n\n 剧情走完,游戏继续!");
Sleep(3000), system("cls");
if (Ju <= 1)
return;
printf("\n 升级了!\n\n");
Sleep(1000);
printf(" 闪避率+2%\n\n");
Sleep(500);
printf(" 同伴现有技能攻击力+20%\n\n");
Sleep(500);
printf(" 新创自定义技能气量*90%\n\n");
Sleep(500);
printf(" 战斗金币量+10%\n\n");
Sleep(500);
printf(" 胜利EXP量+10%\n\n");
Sleep(500);
printf(" 游戏难度加大!\n\n");
Sleep(500);
You[0].Shan += 2;
for (int i = 1; i < 100; i++) {
Skill[i].Kill * 1.2;
for (int j = 1; j <= Skill[i].Any; j++)
Skill[i].Anykill[j] * 1.2;
}
Sleep(3000), system("cls");
Color(0);
}
void LaoHu() {
system("cls");
Color(0);
printf("\n -----------老虎机-----------\n");
for (int i = 1; i <= 50; i++) {
SetPos(5, 5);
cout << " ";
Color(rand() % 13);
SetPos(5, 5);
cout << "出奖中。。。";
Sleep(30);
}
Color(5);
SetPos(5, 2);
cout << "恭喜获得";
Re:
int ssa = rand() % 6, sr;
if (ssa == 0) {
sr = rand() % 400 + 100;
cout << "金币" << sr << "个!";
You[0].Money += sr;
}
if (ssa == 1) {
sr = rand() % 50 + 30;
cout << "经验" << sr << "点!";
You[0].EXP += sr;
}
if (ssa == 2) {
KKP:
sr = rand() % 24 + 4;
for (int i = 1; i <= You[0].Skilnum; i++)
if (You[0].Skil[i] == sr)
goto KKP;
for (int i = 1; i <= skk; i++)
if (Skkk[i] == sr)
goto KKP;
if (Skill[sr].What == 3 && Skill[sr].Anywhat[1] == 5)
goto KKP; //召唤
if (Skill[sr].What == 1 && Skill[sr].Anywhat[1] == 10)
goto KKP; //偷钱
skk++, Skkk[skk] = sr;
cout << "系统特惠技能:";
Color(Skill[Skkk[skk]].color);
cout << Skill[Skkk[skk]].Name;
Color(5), cout << "!";
}
if (ssa == 3) {
if (Tong == Tongmax)
goto Re;
Tong++;
int i = Tong;
You[i].Skilnum = 0;
You[i].Bloodmax = You[0].Bloodmax - 10 + rand() % 21;
You[i].Skilmax = 3 + rand() % 3;
printf("新同伴(血量%d,技能上限%d,会学习)!", You[i].Bloodmax, You[i].Skilmax);
}
if (ssa == 4) {
cout << "新技能槽!";
You[0].Skilmax++;
}
if (ssa == 5) {
cout << "血量上限+20%!";
You[0].Bloodmax *= 1.2;
}
Sleep(1000);
}
void Store() {
St:
system("cls");
Color(0);
if (Jiao == 12) {
SetPos(22, 1), Color(5),
printf("教程提示 12 :但是,此游戏的成功方式只有一个:\n 将游戏的剧情完结!\n 按 0 退出,否则退出教程。"),
Color(0);
SetPos(0, 0);
}
printf("\n ------------商店------------\n");
printf("\n Money:%d\n", You[0].Money);
printf("\n 1.同伴招募 --- $300\n");
printf("\n 2.药水商店\n");
printf("\n 3.经验升级区\n");
printf("\n 4.老虎机 (会抽出什么呢?...) --- $300\n");
printf("\n 输入 0 退出。----- ");
int a;
cin >> a;
if (a == 0 && Jiao == 12)
Jiao++, You[0].EXP = 100;
else if (Jiao != 14)
Jiao = -1;
if (a == 1 && You[0].Money >= 300 && Tong < Tongmax) {
Tong++;
int i = Tong;
You[i].Skilnum = 0;
You[0].Money -= 300;
You[i].Bloodmax = You[0].Bloodmax - 10 + rand() % 21;
You[i].Skilmax = 3 + rand() % 3;
Color(5), printf("\n 恭喜获得新同伴(血量%d,技能上限%d,会学习)!", You[i].Bloodmax, You[i].Skilmax);
Color(0), Sleep(3000);
}
if (a == 2) {
Sto:
system("cls");
Color(0);
printf("\n ----------药水商店----------\n");
printf("\n 注意:所有药水均为自动使用一次性。\n");
printf("\n Money:%d\n", You[0].Money);
printf("\n 1.生命药水 (初始血量+10%) [已有%d个] --- $30\n", Shen);
printf("\n 2.复活药水 (且回血20) [已有%d个] --- $50\n", Fu);
printf("\n 3.敏捷药水 (闪避率+20%) [已有%d个] --- $50\n", Shan);
printf("\n 4.狂暴药水 (回合率+20%) [已有%d个] --- $50\n", Ji);
printf("\n 5.元气药水 (开局1口气) [已有%d个] --- $30\n", Yuan);
printf("\n 6.经验药水 (+10 EXP) --- $100\n");
printf("\n 输入 0 退出。----- ");
int aa;
cin >> aa;
if (aa == 1 && You[0].Money >= 30)
Shen++, You[0].Money -= 30;
if (aa == 2 && You[0].Money >= 50)
Fu++, You[0].Money -= 50;
if (aa == 3 && You[0].Money >= 50)
Shan++, You[0].Money -= 50;
if (aa == 4 && You[0].Money >= 50)
Ji++, You[0].Money -= 50;
if (aa == 5 && You[0].Money >= 30)
Yuan++, You[0].Money -= 30;
if (aa == 6 && You[0].Money >= 100)
You[0].EXP += 20, You[0].Money -= 100;
if (aa != 0)
goto Sto;
}
if (a == 3) {
Stoo:
system("cls");
Color(0);
printf("\n ---------经验升级区---------\n");
printf("\n EXP:%d\n", You[0].EXP);
printf("\n 1.血量上限+10% [已为%d点] --- 50 EXP\n", You[0].Bloodmax);
printf("\n 2.回合加气+0.2 [已为%0.1f口] --- 50 EXP\n", You[0].Qijia);
printf("\n 3.回合加血+5 [已为%d点] --- 70 EXP\n", You[0].Bloodjia);
printf("\n 4.闪避率+5% [已为%d%] --- 70 EXP\n", You[0].Shan);
printf("\n 5.技能槽+1 [已为%d个] --- 100 EXP\n", You[0].Skilmax);
printf("\n 6.同伴上限+1 [已为%d个] --- 100 EXP\n", Tongmax);
printf("\n 7.同伴升级区\n");
printf("\n 输入 0 退出。----- ");
int aaa;
cin >> aaa;
if (aaa == 7 && Jiao == 13)
Jiao++;
else if (Jiao != 14)
Jiao = -1;
if (aaa == 1 && You[0].EXP >= 50)
You[0].Bloodmax *= 1.1, You[0].EXP -= 50;
if (aaa == 2 && You[0].EXP >= 50)
You[0].Qijia += 0.2, You[0].EXP -= 50;
if (aaa == 3 && You[0].EXP >= 70)
You[0].Bloodjia += 5, You[0].EXP -= 70;
if (aaa == 4 && You[0].EXP >= 70)
You[0].Shan += 5, You[0].EXP -= 70;
if (aaa == 5 && You[0].EXP >= 100)
You[0].Skilmax++, You[0].EXP -= 100;
if (aaa == 6 && You[0].EXP >= 100)
Tongmax++, You[0].EXP -= 100;
if (aaa == 7) {
So:
system("cls");
Color(0);
printf("\n ---------同伴升级区---------\n");
printf("\n EXP:%d 同伴数量:%d\n", You[0].EXP, Tong);
printf("\n 你要升级同伴几?(输入 0 退出)----- ");
int i;
cin >> i;
if (i == 0)
goto Stoo;
Soo:
SetPos(5, 1);
printf("同伴%d: \n", i);
printf("\n 血量上限:%d (+10%按1 --- 50EXP)\n", You[i].Bloodmax);
printf("\n 回合加血:%d (+5按2 --- 70EXP)\n", You[i].Bloodjia);
printf("\n 闪避率:%d% (+5%按3 --- 70EXP)\n", You[i].Shan);
printf("\n 技能数量上限:%d (+1按4 --- 100EXP)\n", You[i].Skilmax, You[i].Skilnum);
for (int j = 1; j <= You[i].Skilnum; j++)
printf("\n ----第%d技能:", j), Color(Skill[You[i].Skil[j]].color), cout << Skill[You[i].Skil[j]].Name, Color(0),
printf(" (删除按%d)\n", 4 + j);
printf("\n 输入 0 重选。----- ");
int ab;
cin >> ab;
if (ab == 1 && You[0].EXP >= 50)
You[i].Bloodmax *= 1.1, You[0].EXP -= 50;
if (ab == 2 && You[0].EXP >= 70)
You[i].Bloodjia += 5, You[0].EXP -= 70;
if (ab == 3 && You[0].EXP >= 70)
You[i].Shan += 5, You[0].EXP -= 70;
if (ab == 4 && You[0].EXP >= 100)
You[i].Skilmax++, You[0].EXP -= 100;
if (ab > 4) {
ab -= 4;
You[i].Skilnum--;
for (int j = ab; j < You[i].Skilnum; j++)
swap(You[i].Skil[j], You[i].Skil[j + 1]);
You[i].Skil[You[i].Skilnum + 1] = 0;
}
if (ab != 0) {
system("cls");
Color(0);
printf("\n ---------同伴升级区---------\n");
printf("\n EXP:%d 同伴数量:%d\n", You[0].EXP, Tong);
goto Soo;
}
if (ab == 0)
goto So;
}
if (aaa != 0)
goto Stoo;
}
if (a == 4 && You[0].Money >= 300)
LaoHu(), You[0].Money -= 300;
if (a != 0)
goto St;
}
void Startguai(int a) {
char *str;
dy++;
Dy++;
if (a == 1) {
str = "剑客";
for (int i = 0; i < strlen(str); i++)
Guai[dy].Name[i] = str[i];
Guai[dy].Blood = 80;
Guai[dy].Money = 10;
Guai[dy].Skilnum = 2, Guai[dy].Skil[1] = 1, Guai[dy].Skilstr[1] = 40, Guai[dy].Skil[2] = 4, Guai[dy].Skilstr[2] = 90;
}
if (a == 2) {
str = "守卫兵";
for (int i = 0; i < strlen(str); i++)
Guai[dy].Name[i] = str[i];
Guai[dy].Blood = 100;
Guai[dy].Money = 20;
Guai[dy].Skilnum = 2, Guai[dy].Skil[1] = 5, Guai[dy].Skilstr[1] = 30, Guai[dy].Skil[2] = 6, Guai[dy].Skilstr[2] = 90;
}
if (a == 3) {
str = "史莱姆";
for (int i = 0; i < strlen(str); i++)
Guai[dy].Name[i] = str[i];
Guai[dy].Blood = 50;
空
有帮助,赞一个