魔兽世界
·once·
·
·
个人记录
//转自:https://www.luogu.com.cn/team/32221#main
//收藏者的提示:本游戏用了thread导致c++5.11无法运行
#include <iostream>
#include <utility>
#include <thread>
#include <chrono>
#include <functional>
#include <atomic>
#include <string>
#include <windows.h>
#include <conio.h>
#include <fstream>
#include <ctime>
#include <map>
#include <climits>
#include <algorithm>
#include <stdio.h>
#include <vector>
#include <iomanip>
#include <cstring>
#include <queue>
using namespace std;
int experience, money, chapter = 0, level = 11, f = 1, slcoin = 0;
void color(short x) {
if (x >= 0 && x <= 15)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);
}
else
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
}
struct CONSUMANLE
{
string name;//使用品名
string tell;//描述
int plusHP;//装备增加生命
bool plusMHP;//是否增加最大生命
int plusMDG;//装备增加魔法攻击
int plusPDG;//装备增加物理攻击
int plusMDF;//装备增加魔法防御
int plusPDF;//装备增加物理防御
int plusCRI;//增加暴击概率
int plusEXP;//增加经验
int plusmoney;//增加金币
int num;//数量
};
struct ADDTION
{
int time;//加成时间
string name;//加成名字
int plusHP_A;//增加生命
int PlusHealthPerRound;//回复生命(回合)
bool plusMHP_A;//是否增加最大生命(回合)
int plusMDG_A;//增加魔法攻击(回合)
int plusPDG_A;//增加物理攻击(回合)
int plusMDF_A;//增加魔法防御(回合)
int plusPDF_A;//增加物理防御(回合)
};
struct WEAPON
{
string name;//武器名
string tell;//描述
string type;//武器类型 剑 刀 鞭 杖 棍 盾 胸甲 裤腿 头盔 暗器 项链 靴子
int plusHP;//装备增加生命
bool plusMHP;//是否增加最大生命
int plusMDG;//装备增加魔法攻击
int plusPDG;//装备增加物理攻击
int plusMDF;//装备增加魔法防御
int plusPDF;//装备增加物理防御
int plusCRI;//增加暴击概率
ADDTION addtion[5];
int color;
string lv;
int money;
int level;
};
struct SKILL
{
string name;//技能名
string tell;//描述
string attack;//攻击描述
string useweapon;
bool active;//是否主动
int plusHP;//增加生命
bool plusMHP;//是否增加最大生命
int plusMDG;//增加魔法攻击
int plusPDG;//增加物理攻击
int plusMDF;//增加魔法防御
int plusPDF;//增加物理防御
int plusCRI;//增加暴击概率
int damage;//每次攻击伤害
int ignoreDF;//忽视防御(x%)
int damagetime;//攻击次数
ADDTION addtion[5];
int cooldown;//冷却时间
string EveryAttack[100];//每次攻击描述
int color;
int lv;
};
struct NPC
{
string name;
int HP;//生命
int MHP;//最大生命
int MDG;//魔法攻击
int PDG;//物理攻击
int MDF;//魔法防御
int PDF;//物理防御
int dodge;//躲避率
int hit;//命中率
int crit;//暴击率
SKILL skills[10];//技能
WEAPON weapon[10];//装备武器
int DropMoney;//掉落金钱
int DropExp;//掉落经验
int lv;//等级
};
struct BOOK
{
string name;//技能名
string tell;//描述
int color;
int whichskill;
int useexp;
};
SKILL allskills[100] = {
{"烈焰拳","攻击300,附带灼烧,可以连续攻击三次","m一式9烈焰拳*,s拳头燃起火苗,s向e攻去。s","拳",true,0,false,0,0,0,0,0,300,0,3,{1,"烈焰之意",0,0,false,50,50,10,10,0},3,{"只见m左手一拳带着炎气飞快的向e飞去。s","m右手一拳由上至下挥动,s一股炎热之气直袭e。s","m左右手一拍,s四围霎时空气沸腾。s一把由炙热的气刃向e扫去。s"},9,1 },
{"破碎虚空","攻击10000,可以连续攻击十次","4m*一招4破碎虚空*,s只听“嚓”的一声,se身边的空气接连被撕裂!s","拳",true,0,false,0,0,0,0,0,10000,0,3,{1,"破碎之神",0,0,false,100,100,100,100,100},10,{"“4破碎虚空!*”s","“4破碎虚空!*”s","“4破碎虚空!*”s","“4破碎虚空!*”s","“4破碎虚空!*”s","“4破碎虚空!*”s","“4破碎虚空!*”s","“4破碎虚空!*”s","“4破碎虚空!*”s","“4破碎虚空!*”s"},9,1 },
{"山崩地裂","攻击5000,攻击一次","4m*双手一轮打在地面,s地瞬间就“砰”的一声裂了开来!s","拳",true,0,false,0,0,0,0,0,10000,0,3,{},1,{""},9,1 },
};
NPC allnpc[100];
//武器类型 剑 刀 鞭 杖 棍 头盔 胸甲 护腿 靴子 盾 护腕 手镯 项链 暗器
WEAPON allweapon[1000] = {
{"长剑","这是一把破旧的长剑,似乎被用过很久,已经出现了磨损的痕迹","剑",0,false,0,10,0,0,5,{},16,"普通",10},
{"精铁剑","精铁剑,这是一般剑客携带的剑,你拿着觉得很趁手","剑",0,false,0,30,0,0,10,{},3,"精制",10},
{"破铁剑","你仔细观察,发现这把剑已经用了很久了,剑锋有点钝,还有几处缺口","剑",0,false,0,5,0,0,5,{},16,"破旧",10},
{"试炼大剑","一把宽大的铁剑,剑身宽而厚,可以打出成吨的伤害。","剑",0,false,0,2500,0,0,10,{1000,"斗志昂然",0,10,false,10,10,10,10},6,"神级",1000,1},
{"试炼法杖","这柄法杖是由圣木打造而成,无比坚硬,法杖顶端是一块蓝色菱形水晶。","杖",100,false,1000,0,0,0,15,{1000,"希望之光",0,100,false,0,0,0,0},6,"神级",1000,1},
{"试炼头盔","由玄铁制,镶有龙鳞,防御力极高。","头盔",1000,true,0,0,0,200,0,{},6,"神级",1000,1},
{"试炼战甲","由玄铁制,镶有龙鳞,防御力极高。","胸甲",10000,true,0,0,0,500,0,{},6,"神级",1000,1},
{"试炼护腿","由玄铁制,镶有龙鳞,防御力极高。","护腿",3000,true,0,0,0,300,0,{},6,"神级",1000,1},
{"试炼长靴","由玄铁制,镶有龙鳞,防御力极高。","靴子",1000,true,0,0,0,100,0,{},6,"神级",1000,1},
{"试炼之盾","这是一副盾牌,椭圆形,由金刚石镶边,铁制","盾",0,false,0,0,0,100,0,{},6,"神级",1000,1},
{"试炼护腕","这副护腕由龙皮制成,镶由龙麟,可以抗火,防御极高","护腕",1000,true,0,0,0,100,10,{1000,"不死神龙",0,10,false,0,0,10,10},6,"神级",1000,1},
{"试炼手镯","一副精致的手镯,由钻石做的。","手镯",50,true,50,10,30,10,5,{},6,"神级",1000,1},
{"试炼项链","项链是一个通红的龙眼和一条龙鳞制成的。好像有什么神秘的力量","项链",50,true,50,10,30,10,10,{10,"神龙啸天",0,10,false,20,10,20,10},6,"神级",1000,1},
};
CONSUMANLE allconsumanle[1000] = {
{"小血瓶","使用后回复100滴血",100,0,0,0,0,0,0,0,0,1},
{"中血瓶","使用后回复500滴血",500,0,0,0,0,0,0,0,0,1},
{"大血瓶","使用后回复2500滴血",2500,0,0,0,0,0,0,0,0,1},
{"小经验药水","使用后增加250点经验",0,0,0,0,0,0,0,250,0,1},
{"中经验药水","使用后增加500点经验",0,0,0,0,0,0,0,500,0,1},
{"大经验药水","使用后增加1000点经验",0,0,0,0,0,0,0,1000,0,1},
{"试炼之石[一阶]","?",0,0,0,0,0,0,0,0,100,1},
{"试炼之石[二阶]","??",0,0,0,0,0,0,0,0,500,1},
{"试炼之石[三阶]","???",0,0,0,0,0,0,0,0,2500,1},
{"试炼之石[四阶]","????",0,0,0,0,0,0,0,0,12500,1},
{"试炼之石[五阶]","?????",0,0,0,0,0,0,0,0,62500,1},
{"试炼之石[圣阶]","??????????",0,0,0,0,0,0,0,0,312500,1},
};
BOOK allbook[1000];
WEAPON valley[20] = {
{"村里最好的剑","一把精致的铁剑,村长专门叫铁匠帮你打造的,剑身由玄铁造成,剑柄是恒木做的。","剑",0,false,0,20,0,0,5,{},2,"高级",50,1},
{"村里最好的头盔","这是一副头盔,村长专门叫铁匠帮你打造的,纯铁制,有点重,但可以更好的防御伤害。","头盔",200,true,0,0,0,20,0,{},2,"高级",50,1},
{"村里最好的胸甲","这是一副胸甲,村长专门叫铁匠帮你打造的,纯铁制,有点重,但可以更好的防御伤害。","胸甲",500,true,0,0,0,50,0,{},2,"高级",50,1},
{"布衣","这是一件布衣","胸甲",10,true,0,0,0,1,0,{},16,"普通",25,1},
{"村里最好的护腿","这是一副护腿,村长专门叫铁匠帮你打造的,纯铁制,有点重,但可以更好的防御伤害。","护腿",300,true,0,0,0,30,0,{},2,"高级",50,1},
{"裤子","这是一件裤子","护腿",10,true,0,0,0,1,0,{},16,"普通",25,1},
{"村里最好的靴子","这是一副靴子,村长专门叫铁匠帮你打造的,纯铁制,有点重,但可以更好的防御伤害。","靴子",100,true,0,0,0,10,0,{},2,"高级",50,1},
{"村里最好的盾","这是一副盾牌,村长专门叫铁匠帮你打造的,主要木制,由玄铁镶边。","盾",0,false,0,0,0,100,0,{},2,"高级",50,1},
{"村里最好的护腕","这是一副护腕,村长专门叫铁匠帮你打造的,纯铁制,有点重,但可以更好的防御伤害。","护腕",100,true,0,0,0,10,5,{},2,"高级",50,1},
{"村长的白手镯","一副精致的手镯,村长亲自送给你的,由白玉做的。","手镯",50,true,50,10,30,10,5,{1000,"生命恢复",0,10,0,0,0,0,0},2,"高级",50,1},
{"村长的项链","一副精致的项链,村长亲自送给你的,由蓝宝石做的。","项链",50,true,50,10,30,10,10,{},2,"高级",50,1},
{"小石子","从地上捡到的小石子,能当暗器用","暗器",0,false,0,20,0,0,5,{},2,"高级",50,1},
};
WEAPON wbag[200] = {
{"村里最好的剑","一把精致的铁剑,村长专门叫铁匠帮你打造的,剑身由玄铁造成,剑柄是恒木做的。","剑",0,false,0,20,0,0,5,{},2,"高级",50,1},
{"村里最好的头盔","这是一副头盔,村长专门叫铁匠帮你打造的,纯铁制,有点重,但可以更好的防御伤害。","头盔",200,true,0,0,0,20,0,{},2,"高级",50,1},
{"村里最好的胸甲","这是一副胸甲,村长专门叫铁匠帮你打造的,纯铁制,有点重,但可以更好的防御伤害。","胸甲",500,true,0,0,0,50,0,{},2,"高级",50,1},
{"村里最好的护腿","这是一副护腿,村长专门叫铁匠帮你打造的,纯铁制,有点重,但可以更好的防御伤害。","护腿",300,true,0,0,0,30,0,{},2,"高级",50,1},
{"村里最好的靴子","这是一副靴子,村长专门叫铁匠帮你打造的,纯铁制,有点重,但可以更好的防御伤害。","靴子",100,true,0,0,0,10,0,{},2,"高级",50,1},
{"村里最好的盾","这是一副盾牌,村长专门叫铁匠帮你打造的,主要木制,由玄铁镶边。","盾",0,false,0,0,0,100,0,{},2,"高级",50,1},
{"村里最好的护腕","这是一副护腕,村长专门叫铁匠帮你打造的,纯铁制,有点重,但可以更好的防御伤害。","护腕",100,true,0,0,0,10,5,{},2,"高级",50,1},
{"村长的白手镯","一副精致的手镯,村长亲自送给你的,由白玉做的。","手镯",50,true,50,10,30,10,5,{1000,"生命恢复",0,10,0,0,0,0,0},2,"高级",50,1},
{"村长的项链","一副精致的项链,村长亲自送给你的,由蓝宝石做的。","项链",50,true,50,10,30,10,10,{},2,"高级",50,1},
{"小石子","从地上捡到的小石子,能当暗器用","暗器",0,false,0,20,0,0,5,{},2,"高级",50,1},
};
CONSUMANLE cbag[100] = {
{"金币袋","这是临走前村长给你的,里面有100个金币",0,false,0,0,0,0,0,0,100,1},
};
BOOK bbag[100] = {
{"烈焰拳秘籍","这是一本烈焰拳秘籍,是英雄村村长送给你的。里面记载了烈焰拳练习方法。",3,0,10}
};
NPC me = { "",1020,1020,10,50,5,27,1,100,1,{},{{},{},valley[3],valley[5]},0,0,1 };
string TYPE[10] = { "武器","头盔","胸甲","护腿","靴子","盾","护腕","手镯","项链","暗器" };
bool ok[1000];
NPC en[10];
NPC fr[10];
int ct(string str, NPC m, NPC e)
{
for (int i = 0; i < str.size(); i++)
{
if (str[i] == 'e')
{
cout << e.name;
}
else if (str[i] >= '0' && str[i] <= '9')
{
color(str[i] - '0');
}
else if (str[i] == '*')
{
color(16);
}
else if (str[i] == 'm')
{
cout << m.name;
}
else if (str[i] == 'W')
{
cout << m.weapon[0].name;
}
else if (str[i] == 'w')
{
cout << e.weapon[0].name;
}
else if (str[i] == 's')
{
Sleep(500);
}
else
{
cout << str[i];
}
}
cout << endl;
return 0;
}
int fight(NPC F[10], NPC E[10], int enemynum)
{
bool fdie[10] = { false,false,false,false,false,false,false,false,false,false };
bool edie[10] = { false,false,false,false,false,false,false,false,false,false };
ADDTION fadd[10][15] = {};
ADDTION eadd[10][15] = {};
ADDTION addt[15] = {};
int addti = 0;
int mcooldown[100] = { 0,0,0,0,0,0,0,0,0,0,0,0 };
int ecooldown[10][100] = {};
int fcooldown[10][100] = {};
memset(mcooldown, 0, sizeof(mcooldown));
memset(fcooldown, 0, sizeof(fcooldown));
memset(ecooldown, 0, sizeof(ecooldown));
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 5; j++)
{
if (me.weapon[i].addtion[j].name == "")
{
break;
}
addt[addti++] = me.weapon[i].addtion[j];
}
}
while (1)
{
system("cls");
cout << "生命:" << me.HP << "/" << me.MHP << endl;
for (int i = 0; i < 10; i++)
{
if (F[i].name == "")
{
break;
}
cout << F[i].name << ":" << F[i].HP << "/" << F[i].MHP << endl;
}
//输出队友生命
for (int i = 0; i < 10; i++)
{
if (addt[i].name != "")
{
if (addt[i].time <= 0)
{
addt[i].name = "";
}
color(11);
cout << addt[i].name;
color(16);
cout << "[" << addt[i].time << "]" << endl;
}
}
//输出加成
for (int i = 0; i < 10; i++)
{
if (addt[i].name != "")
{
color(4);
cout << "效果" << addt[i].name << "加成成功!";
color(16);
me.HP += addt[i].PlusHealthPerRound;
me.PDG += addt[i].plusPDG_A;
me.PDF += addt[i].plusPDF_A;
me.MDG += addt[i].plusMDG_A;
me.MDF += addt[i].plusMDF_A;
addt[i].time--;
if (addt[i].time <= 0)
{
addt[i].name = "";
}
}
}
color(4);
cout << "请不要输错数字,如果输错,会无法继续玩,或者这轮没有攻击。" << endl;
color(16);
cout << "-1 物理攻击 " << me.PDG << "点伤害" << endl;
cout << "-2 魔法攻击 " << me.MDG << "点伤害" << endl;
for (int i = 0; i < 100; i++)
{
if (me.skills[i].name != "")
{
cout << i << ",";
color(me.skills[i].color);
cout << me.skills[i].name;
color(16);
cout << "[";
if (mcooldown[i] > 0)
{
color(4);
}
else
{
color(10);
}
cout << mcooldown[i];
color(16);
cout << "] " << me.skills[i].tell << endl;
}
else
{
break;
}
}
//输出技能
for (int i = 0; i < 100; i++)
{
if (mcooldown[i] > 0)
{
mcooldown[i]--;
}
}
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 100; j++)
{
if (ecooldown[i][j] > 0)
{
ecooldown[i][j]--;
}
}
}
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 100; j++)
{
if (fcooldown[i][j] > 0)
{
fcooldown[i][j]--;
}
}
}
//技能冷却
int which;
cin >> which;
cout << "请选择攻击目标:" << endl;
for (int i = 0; i < 10; i++)
{
if (E[i].name == "")
{
break;
}
else
{
cout << i << ",";
if (edie[i])
{
color(4);
cout << E[i].name << "[已阵亡]" << endl;
}
else
{
color(10);
cout << E[i].name << "[未阵亡]" << endl;
}
color(16);
}
}
//输出攻击目标
int enemy;
cin >> enemy;
if (which == -1 || which == -2)
{
cout << me.name << "发起进攻,";
int hurt;
if (which == -1)
{
hurt = rand() % 41 - 20 + me.PDG - E[enemy].MDF;
}
else
{
hurt = rand() % 41 - 20 + me.MDG - E[enemy].MDF;
}
bool iscrit = rand() % 100 < me.crit;
hurt += iscrit * hurt * 0.5;
if (hurt < 0)
{
hurt = 0;
}
Sleep(500);
cout << E[enemy].name << "受到";
if (iscrit)
{
color(4);
cout << hurt;
color(16);
cout << "点暴击伤害!" << endl;
}
else
{
cout << hurt << "点伤害!" << endl;
}
E[enemy].HP -= hurt;
Sleep(500);
if (E[enemy].HP <= 0)
{
cout << E[enemy].name << "阵亡!" << endl;
edie[enemy] = true;
Sleep(500);
}
}
else if (which >= 0)
{
ct(me.skills[which].attack, me, E[enemy]);
mcooldown[which] = me.skills[which].cooldown;
for (int i = 0; i < 10; i++)
{
if (me.skills[which].addtion[i].name != "")
{
for (int j = 0; j < 15; j++)
{
if (addt[j].name == "" || addt[j].name == me.skills[which].addtion[i].name)
{
addt[j] = me.skills[which].addtion[i];
break;
}
}
}
else
{
break;
}
}
//添加加成
for (int i = 0; i < me.skills[which].damagetime; i++)
{
ct(me.skills[which].EveryAttack[i], me, E[enemy]);
int hurt = rand() % 41 - 20 + me.skills[which].damage - E[enemy].MDF;
bool iscrit = rand() % 100 < me.crit;
hurt += iscrit * hurt * 0.5;
if (hurt < 0)
{
hurt = 0;
}
Sleep(500);
cout << E[enemy].name << "受到";
if (iscrit)
{
color(4);
cout << hurt;
color(16);
cout << "点魔法暴击伤害!" << endl;
}
else
{
cout << hurt << "点魔法伤害!" << endl;
}
E[enemy].HP -= hurt;
Sleep(500);
if (E[enemy].HP <= 0)
{
cout << E[enemy].name << "阵亡!" << endl;
edie[enemy] = true;
Sleep(500);
break;
}
}
}
_getch();
for (int i = 0; i < 10; i++)
{
if (F[i].name == "")
{
break;
}
if (!fdie[i])
{
for (enemy = 0; enemy < 10; enemy++)
{
if (!edie[enemy] && E[i].name != "")
{
break;
}
}
//寻找敌人
bool haveskill = false;
for (int skill = 0; skill < 100; skill++)
{
if (F[i].skills[skill].name != "" && fcooldown[i][skill] == 0)
{
haveskill = true;
ct(F[i].skills[skill].attack, F[i], E[enemy]);
fcooldown[i][which] = F[i].skills[which].cooldown;
for (int j = 0; j < 10; j++)
{
if (F[i].skills[skill].addtion[j].name != "")
{
for (int k = 0; k < 15; k++)
{
if (fadd[i][k].name == "" || fadd[i][k].name == F[i].skills[skill].addtion[j].name)
{
fadd[i][k] = F[i].skills[skill].addtion[j];
break;
}
}
}
else
{
break;
}
}
//添加加成
for (int j = 0; j < F[i].skills[skill].damagetime; j++)
{
ct(F[i].skills[skill].EveryAttack[j], F[i], E[enemy]);
int hurt = rand() % 41 - 20 + F[i].skills[skill].damage - E[enemy].MDF;
bool iscrit = rand() % 100 < F[i].crit;
hurt += iscrit * hurt * 0.5;
if (hurt < 0)
{
hurt = 0;
}
Sleep(500);
cout << E[enemy].name << "受到";
if (iscrit)
{
color(4);
cout << hurt;
color(16);
cout << "点魔法暴击伤害!" << endl;
}
else
{
cout << hurt << "点魔法伤害!" << endl;
}
E[enemy].HP -= hurt;
Sleep(500);
if (E[enemy].HP <= 0)
{
cout << E[enemy].name << "阵亡!" << endl;
edie[enemy] = true;
Sleep(500);
break;
}
}
break;
}
else if (F[i].skills[skill].name == "")
{
break;
}
}
//是否有技能
if (!haveskill)
{
cout << F[i].name << "发起进攻,";
int hurt;
if (which == -1)
{
hurt = rand() % 41 - 20 + F[i].PDG - E[enemy].MDF;
}
else
{
hurt = rand() % 41 - 20 + F[i].MDG - E[enemy].MDF;
}
bool iscrit = rand() % 100 < F[i].crit;
hurt += iscrit * hurt * 0.5;
if (hurt < 0)
{
hurt = 0;
}
Sleep(500);
cout << E[enemy].name << "受到";
if (iscrit)
{
color(4);
cout << hurt;
color(16);
cout << "点暴击伤害!" << endl;
}
else
{
cout << hurt << "点伤害!" << endl;
}
E[enemy].HP -= hurt;
Sleep(500);
if (E[enemy].HP <= 0)
{
cout << E[enemy].name << "阵亡!" << endl;
edie[enemy] = true;
Sleep(500);
break;
}
}
}
}
//队友回合
_getch();
for (int i = 0; i < enemynum; i++)
{
if (!edie[i])
{
bool havefriend = false;
for (enemy = 0; enemy < 10; enemy++)
{
if (!fdie[enemy] && F[enemy].name != "")
{
havefriend = true;
break;
}
}
//寻找我方队友
if (havefriend)
{
bool haveskill = false;
for (int skill = 0; skill < 100; skill++)
{
if (E[i].skills[skill].name != "" && ecooldown[i][skill] == 0)
{
haveskill = true;
ct(E[i].skills[skill].attack, E[i], F[enemy]);
ecooldown[i][which] = E[i].skills[which].cooldown;
for (int j = 0; j < 10; j++)
{
if (E[i].skills[skill].addtion[j].name != "")
{
for (int k = 0; k < 15; k++)
{
if (eadd[i][k].name == "" || eadd[i][k].name == E[i].skills[skill].addtion[j].name)
{
eadd[i][k] = E[i].skills[skill].addtion[j];
break;
}
}
}
else
{
break;
}
}
//添加加成
for (int j = 0; j < E[i].skills[skill].damagetime; j++)
{
ct(E[i].skills[skill].EveryAttack[j], E[i], F[enemy]);
int hurt = rand() % 41 - 20 + E[i].skills[skill].damage - F[enemy].MDF;
bool iscrit = rand() % 100 < E[i].crit;
hurt += iscrit * hurt * 0.5;
if (hurt < 0)
{
hurt = 0;
}
Sleep(500);
cout << F[enemy].name << "受到";
if (iscrit)
{
color(4);
cout << hurt;
color(16);
cout << "点魔法暴击伤害!" << endl;
}
else
{
cout << hurt << "点魔法伤害!" << endl;
}
F[enemy].HP -= hurt;
Sleep(500);
if (F[enemy].HP <= 0)
{
cout << F[enemy].name << "阵亡!" << endl;
fdie[enemy] = true;
Sleep(500);
break;
}
}
break;
}
else if (E[i].skills[skill].name == "")
{
break;
}
}
//是否有技能
if (!haveskill)
{
cout << E[i].name << "发起进攻,";
int hurt;
if (which == -1)
{
hurt = rand() % 41 - 20 + E[i].PDG - F[enemy].MDF;
}
else
{
hurt = rand() % 41 - 20 + E[i].MDG - F[enemy].MDF;
}
bool iscrit = rand() % 100 < E[i].crit;
hurt += iscrit * hurt * 0.5;
if (hurt < 0)
{
hurt = 0;
}
Sleep(500);
cout << F[enemy].name << "受到";
if (iscrit)
{
color(4);
cout << hurt;
color(16);
cout << "点暴击伤害!" << endl;
}
else
{
cout << hurt << "点伤害!" << endl;
}
F[enemy].HP -= hurt;
Sleep(500);
if (F[enemy].HP <= 0)
{
cout << F[enemy].name << "阵亡!" << endl;
fdie[enemy] = true;
Sleep(500);
break;
}
}
}
else
{
bool haveskill = false;
for (int skill = 0; skill < 100; skill++)
{
if (E[i].skills[skill].name != "" && ecooldown[i][skill] == 0)
{
haveskill = true;
ct(E[i].skills[skill].attack, E[i], me);
ecooldown[i][which] = E[i].skills[which].cooldown;
for (int j = 0; j < 10; j++)
{
if (E[i].skills[skill].addtion[j].name != "")
{
for (int k = 0; k < 15; k++)
{
if (eadd[i][k].name == "" || eadd[i][k].name == E[i].skills[skill].addtion[j].name)
{
eadd[i][k] = E[i].skills[skill].addtion[j];
break;
}
}
}
else
{
break;
}
}
//添加加成
for (int j = 0; j < E[i].skills[skill].damagetime; j++)
{
ct(E[i].skills[skill].EveryAttack[j], E[i], me);
int hurt = rand() % 41 - 20 + E[i].skills[skill].damage - me.MDF;
bool iscrit = rand() % 100 < E[i].crit;
hurt += iscrit * hurt * 0.5;
Sleep(500);
if (hurt < 0)
{
hurt = 0;
}
cout << me.name << "受到";
if (iscrit)
{
color(4);
cout << hurt;
color(16);
cout << "点魔法暴击伤害!" << endl;
}
else
{
cout << hurt << "点魔法伤害!" << endl;
}
me.HP -= hurt;
Sleep(500);
if (me.HP <= 0)
{
cout << me.name << "阵亡!" << endl;
cout << "幸好援军及时赶来,你在援军的帮助下终于逃离了" << E[i].name << "的魔爪" << endl;
_getch();
return 0;
}
}
break;
}
else if (E[i].skills[skill].name == "")
{
break;
}
}
//是否有技能
if (!haveskill)
{
cout << E[i].name << "发起进攻,";
int hurt;
if (which == -1)
{
hurt = rand() % 41 - 20 + E[i].PDG - me.MDF;
}
else
{
hurt = rand() % 41 - 20 + E[i].MDG - me.MDF;
}
bool iscrit = rand() % 100 < E[i].crit;
hurt += iscrit * hurt * 0.5;
if (hurt < 0)
{
hurt = 0;
}
Sleep(500);
cout << me.name << "受到";
if (iscrit)
{
color(4);
cout << hurt;
color(16);
cout << "点暴击伤害!" << endl;
}
else
{
cout << hurt << "点伤害!" << endl;
}
me.HP -= hurt;
Sleep(500);
if (me.HP <= 0)
{
cout << me.name << "阵亡!" << endl;
cout << "幸好援军及时赶来,你在援军的帮助下终于逃离了" << E[i].name << "的魔爪" << endl;
_getch();
return 0;
}
}
}
}
}
//敌人回合
_getch();
bool nodie = false;
for (int i = 0; i < enemynum; i++)
{
if (!edie[i])
{
nodie = true;
break;
}
}
if (!nodie)
{
return 1;
}
}
return 0;
};
int chapterstory()
{
if (chapter == 0)
{
cout << "--------------第一章:幽冥之林--------------" << endl;
Sleep(1000);
cout << "(悬崖上)" << endl;
Sleep(1000);
cout << "你:魔王!你今天跑不掉了(拔剑)" << endl;
Sleep(2000);
cout << "那位黑衣人并不慌张,黑袍在空中飘舞" << endl;
Sleep(3000);
cout << "“熔岩弹!”" << endl;
cout << "三颗火球从黑衣人的衣袖里射了出来,他竟然使暗器!" << endl;
Sleep(3000);
cout << "你往旁一跳,险险地躲了过去,三个火球打在石壁上,炸了开来。" << endl;
Sleep(3000);
cout << "“活闪步!”“狂风拳!”" << endl;
cout << "你刚回过神,黑衣人就闪了过来,一拳带着狂风横扫过来!" << endl;
Sleep(3000);
cout << "你躲闪不急,正好被打在胸脯。像一捆稻草一样飞了出去。" << endl;
Sleep(2000);
cout << "黑衣人看你中了这招,见大部队赶了过来,便纵身一跃,逃跑了。" << endl;
Sleep(3000);
cout << "大部队把你送了回了村落,经过半个月的医疗和养伤,你恢复了体质。" << endl;
Sleep(3000);
cout << "但是,你的脑袋撞到了石壁,失去了一些记忆。" << endl;
cout << "名字:";
cin >> me.name;
cout << "村长:你的武器和盔甲都丢了,哎,战争... 这里,是英雄村,你就是在这出身的。" << endl;
Sleep(3000);
cout << "村长:你可能不记得了,算了,拿去,这是我让铁匠精心为你打造的一副铠甲。好好利用。还有一本武功秘籍:烈焰拳" << endl;
Sleep(3000);
cout << "村长:对了,你是被魔王的狂风拳打中的。撞到了墙,丧失了记忆..." << endl;
Sleep(3000);
cout << "村长:还有,这是100金币,给你当路费,你去暗影村吧,那里的十神王之一——暗夜影王" << endl;
Sleep(3000);
cout << "村长:他会引导你成为武功高手。记住,这里通往暗影村需要通过幽冥之林,里面有许多机关和魔兽,要小心!" << endl;
Sleep(3000);
cout << "你:谢谢村长,我一定照办。" << endl;
system("pause");
system("cls");
chapter = 1;
}
else
{
}
return 0;
}
int chapterfight()
{
system("cls");
if (chapter == 1 && level == 1)
{
Sleep(1000);
cout << "你:既然这样,那我先走了啊。" << endl;
Sleep(1000);
cout << "村长:我送你一段距离吧。" << endl;
Sleep(1000);
cout << "你:感谢村长。" << endl;
Sleep(2000);
cout << "你和村长刚进入森林不久,就发现两只粉色的东西一蹦一跳的向你跳来。" << endl;
Sleep(2000);
cout << "你想这些东西好可爱,便伸手去摸" << endl;
Sleep(500);
cout << "结果一股电流传遍你全身,这怪物会攻击人!" << endl;
_getch();
fr[0] = { "村长",10000,10000,1000,1000,100,100,10,10,100,{allskills[1]},{},0,0,1 };
en[0] = en[1] = en[2] = { "粉红史莱姆",1000,1000,0,100,5,10,10,10,10,{},{},0,0,1 };
if (fight(fr, en, 3))
{
level++;
experience += 200;
}
}
else if (chapter == 1 && level == 2)
{
Sleep(1000);
cout << "你:这森林里真的是危机重重啊" << endl;
Sleep(1000);
cout << "村长一把拦住你:小心脚下!" << endl;
Sleep(1000);
cout << "你赶快把脚收回。发现脚下竟然有一个头颅" << endl;
Sleep(1000);
cout << "那头颅突然跳了起来,和旁边的白骨组合成一个骷髅!" << endl;
Sleep(1000);
cout << "往旁边一看,几个骷髅已经爬了过来。" << endl;
Sleep(1000);
cout << "村长:杀!冲出包围圈!" << endl;
_getch();
en[0] = { "骷髅",2000,2000,0,150,5,10,10,10,10,{},{allweapon[2]},0,0,1 };
en[1] = { "骷髅",2000,2000,0,150,5,10,10,10,10,{},{allweapon[2]},0,0,1 };
en[2] = { "骷髅", 2000, 2000, 0, 150, 5, 10, 10, 10, 10, {}, { allweapon[2] }, 0, 0, 1 };
en[3] = { "骷髅", 2000, 2000, 0, 150, 5, 10, 10, 10, 10, {}, { allweapon[2] }, 0, 0, 1 };
en[4] = { "骷髅", 2000, 2000, 0, 150, 5, 10, 10, 10, 10, {}, { allweapon[2] }, 0, 0, 1 };
en[5] = { "骷髅", 2000, 2000, 0, 150, 5, 10, 10, 10, 10, {}, { allweapon[2] }, 0, 0, 1 };
en[6] = { "骷髅", 2000, 2000, 0, 150, 5, 10, 10, 10, 10, {}, { allweapon[2] }, 0, 0, 1 };
en[7] = { "骷髅", 2000, 2000, 0, 150, 5, 10, 10, 10, 10, {}, { allweapon[2] }, 0, 0, 1 };
en[8] = { "骷髅", 2000, 2000, 0, 150, 5, 10, 10, 10, 10, {}, { allweapon[2] }, 0, 0, 1 };
en[9] = { "骷髅", 2000, 2000, 0, 150, 5, 10, 10, 10, 10, {}, { allweapon[2] }, 0, 0, 1 };
fr[0] = { "村长",10000,10000,1000,1000,100,100,10,10,100,{allskills[1]},{},0,0,1 };
if (fight(fr, en, 10))
{
level++;
experience += 300;
}
}
else if (chapter == 1 && level == 3)
{
Sleep(1000);
cout << "你和村长走着走着,突然发现前面有个洞穴。" << endl;
Sleep(1000);
cout << "村长:这...我竟然没有见过!" << endl;
Sleep(1000);
cout << "你:进去看看呗,应该有些宝藏。" << endl;
Sleep(1000);
cout << "村长:额...好吧。" << endl;
Sleep(1000);
cout << "你们走进了洞穴去。" << endl;
Sleep(1000);
cout << "村长:这竟然有个巨型僵尸!" << endl;
Sleep(1000);
cout << "巨型僵尸:竟敢打扰本王休息!" << endl;
Sleep(1000);
cout << "村长:这僵尸强大了不少!" << endl;
Sleep(1000);
cout << "村长动用内力,“虚空之力!”一声,村长眼睛瞬间变得通红!" << endl;
_getch();
en[0] = { "巨型僵尸",100000,100000,500,500,0,10,20,10,10,{allskills[2]},{allweapon[2]},0,0,1 };
en[1] = {};
en[2] = {};
en[3] = {};
en[4] = {};
en[5] = {};
en[6] = {};
en[7] = {};
en[8] = {};
en[9] = {};
fr[0] = { "村长",20000,20000,2000,2000,200,200,10,10,100,{allskills[1]},{},0,0,1 };
if (fight(fr, en, 1))
{
level++;
experience += 500;
}
}
return 0;
}
int cweapon(WEAPON weapon)
{
color(weapon.color);
cout << weapon.name;
color(16);
cout << "[lv." << weapon.level << "]" << endl;
cout << " 物理伤害:" << weapon.plusPDG << endl;
cout << " 魔法伤害:" << weapon.plusMDG << endl;
cout << " 附加生命:" << weapon.plusHP << endl;
cout << " 物理防御:" << weapon.plusPDF << endl;
cout << " 魔法防御:" << weapon.plusMDF << endl;
cout << " 加成:" << endl;
if (weapon.addtion[0].name == "")
{
cout << " 无" << endl;
return 0;
}
for (int i = 0; i < 100; i++)
{
if (weapon.addtion[i].name == "")
{
break;
}
else
{
cout << " " << weapon.addtion[i].name << endl;
}
}
return 0;
}
int lvup()
{
bool upgrade = false;
while (experience > me.lv * 100)
{
if (experience > me.lv * 100)
{
upgrade = true;
experience -= me.lv * 100;
me.lv++;
cout << "升至" << me.lv << "级!" << endl;
}
}
if (upgrade)
{
_getch();
}
return 0;
}
int buy(int money, string type, int num)
{
if (slcoin < money)
{
cout << "试炼币不足..." << endl;
return 0;
}
else
{
slcoin -= money;
if (type == "WEAPON")
{
for (int i = 0; i <= 1000; i++)
{
if (wbag[i].name == "")
{
wbag[i] = allweapon[num];
break;
}
}
cout << "成功购买";
color(allweapon[num].color);
cout << allweapon[num].name << endl;
color(16);
cout << "剩余" << slcoin << "试炼币" << endl;
}
else if (type == "BOOK")
{
for (int i = 0; i <= 1000; i++)
{
if (bbag[i].name == "")
{
bbag[i] = allbook[num];
break;
}
}
cout << "成功购买";
color(allbook[num].color);
cout << allbook[num].name << endl;
color(16);
cout << "剩余" << slcoin << "试炼币" << endl;
}
else if (type == "CONSUMANLE")
{
for (int i = 0; i <= 1000; i++)
{
if (cbag[i].name == "")
{
cbag[i] = allconsumanle[num];
break;
}
}
cout << "成功购买" << allconsumanle[num].name << endl;
cout << "剩余" << slcoin << "试炼币" << endl;
}
}
return 0;
}
int main()
{
srand((unsigned)time(NULL));
while (1)
{
lvup();
system("cls");
if (level > 10)
{
chapterstory();
level = 1;
}
cout << "1.挑战Boss(" << chapter << "-" << level << ") 2.装备 3.背包 4.技能 5.试炼场(" << f << "层)" << endl;
string which;
cin >> which;
if (which == "1")
{
chapterfight();
}
else if (which == "2")
{
cout << "0装备武器:";
if (me.weapon[0].name == "")
{
cout << "未装备" << endl;
}
else
{
cweapon(me.weapon[0]);
}
cout << "1装备头盔:";
if (me.weapon[1].name == "")
{
cout << "未装备" << endl;
}
else
{
cweapon(me.weapon[1]);
}
cout << "2装备胸甲:";
if (me.weapon[2].name == "")
{
cout << "未装备" << endl;
}
else
{
cweapon(me.weapon[2]);
}
cout << "3装备护腿:";
if (me.weapon[3].name == "")
{
cout << "未装备" << endl;
}
else
{
cweapon(me.weapon[3]);
}
cout << "4装备靴子:";
if (me.weapon[4].name == "")
{
cout << "未装备" << endl;
}
else
{
cweapon(me.weapon[4]);
}
cout << "5装备盾:";
if (me.weapon[5].name == "")
{
cout << "未装备" << endl;
}
else
{
cweapon(me.weapon[5]);
}
cout << "6装备护腕:";
if (me.weapon[6].name == "")
{
cout << "未装备" << endl;
}
else
{
cweapon(me.weapon[6]);
}
cout << "7装备手镯:";
if (me.weapon[7].name == "")
{
cout << "未装备" << endl;
}
else
{
cweapon(me.weapon[7]);
}
cout << "8装备项链:";
if (me.weapon[8].name == "")
{
cout << "未装备" << endl;
}
else
{
cweapon(me.weapon[8]);
}
cout << "9装备暗器:";
if (me.weapon[9].name == "")
{
cout << "未装备" << endl;
}
else
{
cweapon(me.weapon[9]);
}
cout << "请输入要更换的装备,没有输入-1" << endl;
int which2;
cin >> which2;
if (which2 != -1)
{
cout << "现有装备:" << endl;
for (int i = 0; i < 200; i++)
{
if (wbag[i].name == "")
{
break;
}
else if (wbag[i].type == TYPE[which2])
{
cout << i << ", ";
color(wbag[i].color);
cout << wbag[i].name << endl;
color(16);
}
else if (TYPE[which2] == "武器" && (wbag[i].type == "剑" || wbag[i].type == "刀" || wbag[i].type == "鞭" || wbag[i].type == "杖" || wbag[i].type == "棍"))
{
cout << i << ", ";
color(wbag[i].color);
cout << wbag[i].name << endl;
color(16);
}
}
cout << "输入编号" << endl;
int which3;
cin >> which3;
me.HP -= me.weapon[which2].plusHP;
if (me.weapon[which2].plusMHP)
{
me.MHP -= me.weapon[which2].plusHP;
}
me.MDF -= me.weapon[which2].plusMDF;
me.MDG -= me.weapon[which2].plusMDG;
me.PDF -= me.weapon[which2].plusPDF;
me.PDG -= me.weapon[which2].plusPDG;
me.crit -= me.weapon[which2].plusCRI;
me.HP += wbag[which3].plusHP;
if (wbag[which3].plusMHP)
{
me.MHP += wbag[which3].plusHP;
}
me.MDF += wbag[which3].plusMDF;
me.MDG += wbag[which3].plusMDG;
me.PDF += wbag[which3].plusPDF;
me.PDG += wbag[which3].plusPDG;
me.crit += wbag[which3].plusCRI;
me.weapon[which2] = wbag[which3];
}
}
else if (which == "3")
{
cout << me.name << "[" << me.lv << "]";
cout << "生命:" << me.HP << "/" << me.MHP << endl;
cout << "物理攻击:" << me.PDG << endl;
cout << "魔法攻击:" << me.MDG << endl;
cout << "物理防御:" << me.PDF << endl;
cout << "魔法防御:" << me.MDF << endl;
cout << "暴击率:" << me.crit << "%" << endl;
cout << "命中率:" << me.hit << "%" << endl;
cout << "躲避率:" << me.dodge << "%" << endl;
cout << "金币:" << money << endl;
cout << "经验:" << experience << "/" << me.lv * 100 << endl << endl;
for (int i = 0; i < 100; i++)
{
if (cbag[i].name == "")
{
break;
}
cout << i << "," << cbag[i].name << cbag[i].num << ": " << cbag[i].tell << endl;
cout << " 回血:" << cbag[i].plusHP;
cout << " 金币:" << cbag[i].plusmoney;
cout << " 经验:" << cbag[i].plusEXP << endl;
cout << " 暴击率:" << cbag[i].plusCRI;
cout << " 魔法攻击:" << cbag[i].plusMDG;
cout << " 魔法防御:" << cbag[i].plusMDF << endl;
cout << " 物理攻击:" << cbag[i].plusPDG;
cout << " 物理防御:" << cbag[i].plusPDF << endl;
}
cout << "输入要使用的东西(退出-1)" << endl;
int which2;
cin >> which2;
if (which2 != -1)
{
cout << "请输入要使用的量(";
color(2);
cout << cbag[which2].num;
color(16);
cout << "):" << endl;
int which3;
cin >> which3;
if (which3 > cbag[which2].num || which3 < 0)
{
color(4);
cout << "自动帮你调整至最大值。" << endl;
color(16);
which3 = cbag[which2].num;
}
cbag[which2].num -= which3;
me.HP += cbag[which2].plusHP;
if (cbag[which2].plusMHP)
{
me.MHP += cbag[which2].plusHP;
}
money += cbag[which2].plusmoney;
experience += cbag[which2].plusEXP;
me.MDF += cbag[which2].plusMDF * which3;
me.MDG += cbag[which2].plusMDG * which3;
me.PDG += cbag[which2].plusPDG * which3;
me.PDF += cbag[which2].plusPDF * which3;
me.crit += cbag[which2].plusCRI * which3;
cout << "使用成功" << endl;
_getch();
}
}
else if (which == "4")
{
cout << "已学技能:" << endl;
for (int i = 0; i < 100; i++)
{
if (me.skills[i].name == "")
{
break;
}
else
{
color(me.skills[i].color);
cout << me.skills[i].name;
color(16);
cout << "[lv." << me.skills[i].lv << "]" << endl;
cout << " " << me.skills[i].tell << endl;
}
}
_getch();
system("cls");
for (int i = 0; i < 100; i++)
{
if (bbag[i].name == "")
{
break;
}
cout << i << ",";
color(bbag[i].color);
cout << bbag[i].name;
color(16);
cout << "[" << bbag[i].useexp << "] " << bbag[i].tell << endl;
}
cout << "请输入学习书本编号:" << endl;
int which2;
cin >> which2;
if (experience >= bbag[which2].useexp)
{
experience -= bbag[which2].useexp;
color(4);
cout << "学习成功!" << endl;
color(16);
cout << "消耗" << bbag[which2].useexp << "点经验!" << endl;
cout << "剩余" << experience << "点经验!" << endl;
_getch();
for (int i = 0; i < 100; i++)
{
if (me.skills[i].name == allskills[bbag[which2].whichskill].name)
{
me.skills[i].lv++;
break;
}
if (me.skills[i].name == "")
{
me.skills[i] = allskills[bbag[which2].whichskill];
break;
}
}
}
else
{
color(4);
cout << "你不够经验..." << endl;
color(16);
}
}
else if (which == "5")
{
cout << "欢迎来到试炼场。" << endl;
cout << "剩余试炼币:" << slcoin << endl;
cout << "1,试炼之谷 2,试炼商店";
if (ok[0])
{
cout << " 3,神龙秘境";
}
cout << endl;
int which2;
cin >> which2;
if (which2 == 1)
{
cout << "暂未开放..." << endl;
}
else if (which2 == 2)
{
cout << "//0---------------------------------0\\\\" << endl;
cout << "|01.小血瓶(100)-------------------100$|" << endl;
cout << "|02.中血瓶(500)-------------------450$|" << endl;
cout << "|03.大血瓶(2500)-----------------2030$|" << endl;
cout << "|04.小经验药水(250)---------------500$|" << endl;
cout << "|05.中经验药水(500)---------------900$|" << endl;
cout << "|06.大经验药水(1000)-------------1700$|" << endl;
cout << "|07.试炼大剑--------------------10000$|" << endl;
cout << "|08.试炼法杖--------------------12000$|" << endl;
cout << "|09.试炼圣盾---------------------9000$|" << endl;
cout << "|10.试炼之盔---------------------8000$|" << endl;
cout << "|11.试炼战甲--------------------20000$|" << endl;
cout << "|12.试炼护腿--------------------13500$|" << endl;
cout << "|13.试炼长靴---------------------9500$|" << endl;
cout << "|14.试炼项链--------------------10000$|" << endl;
cout << "|15.试炼手镯--------------------10000$|" << endl;
cout << "|16.试炼护腕--------------------10000$|" << endl;
cout << "|17.试炼之石[一阶]----------------100$|" << endl;
cout << "|18.试炼之石[二阶]----------------500$|" << endl;
cout << "|19.试炼之石[三阶]---------------2500$|" << endl;
cout << "|20.试炼之石[四阶]--------------12500$|" << endl;
cout << "|21.试炼之石[五阶]--------------62500$|" << endl;
cout << "|22.试炼之石[圣阶]-------------312500$|" << endl;
cout << "|23.圣羽剑----------------------12000$|" << endl;
cout << "|24.黑魔剑----------------------15000$|" << endl;
cout << "|25.横天棍----------------------11000$|" << endl;
cout << "|26.打狗棍----------------------20000$|" << endl;
cout << "|27.夺魂刀----------------------15000$|" << endl;
cout << "|28.斩妖刀----------------------20000$|" << endl;
cout << "|29.烈焰之杖--------------------15000$|" << endl;
cout << "|30.冰冻之杖--------------------15000$|" << endl;
cout << "\\\\0---------------------------------0//" << endl;
cout << "请输入要购买的编号" << endl;
int which3;
cin >> which3;
switch (which3)
{
case 1:
buy(100, "CONSUMANLE", 0);
break;
case 2:
buy(450, "CONSUMANLE", 1);
break;
case 3:
buy(2030, "CONSUMANLE", 2);
break;
case 4:
buy(500, "CONSUMANLE", 3);
break;
case 5:
buy(900, "CONSUMANLE", 4);
break;
case 6:
buy(1700, "CONSUMANLE", 5);
break;
case 7:
buy(10000, "WEAPON", 3);
break;
case 8:
buy(12000, "WEAPON", 3);
break;
case 9:
buy(9000, "WEAPON", 3);
break;
case 10:
buy(8000, "WEAPON", 3);
break;
case 11:
buy(20000, "WEAPON", 3);
break;
case 12:
buy(12000, "WEAPON", 3);
break;
default:
break;
}
}
else if (which2 == 3)
{
}
}
else
{
cout << "请勿乱输!" << endl;
Sleep(1000);
}
}
return 0;
};
/*
0 黑色 8 灰色
1 蓝色 9 淡蓝色
2 绿色 10 淡绿色
3 湖蓝色 11 淡浅绿色
4 红色 12 淡红色
5 紫色 13 淡紫色
6 黄色 14 淡黄色
7 白色 15 亮白色
*/