- BC20260015's blog
新游戏
- 2023-9-28 17:14:50 @
还在制作,主体框架已经完成,目前正在填入剧情
#include<bits/stdc++.h>
#include<windows.h>
#define int long long
#define sd signed
#define db double
#define ld long db
#define out printf
#define in(a) scanf("%d",&a)
#define inll(a) scanf("%lld",&a)
using namespace std;
void slp(const sd&slptime=1000){Sleep(slptime);}
void slout(const char*p,sd _slp=1000){out(p),slp(_slp);}
const sd MAXN=20;
mt19937 rnd(time(0));
void cle(){system("cls");}
void clout(const char*p){cle(),out(p);}
void slclout(const char*p,sd _slp=1000){clout(p),slp(_slp);}
sd rdi32(){return rnd()+rnd();}
int rdi64(){return rdi32()*rdi32();}
sd rdi32(sd rdl,sd rdr){return rdi32()%(rdr-rdl)+rdl;}
int rdi64(int rdl,int rdr){return rdi64()%(rdr-rdl)+rdl;}
sd Pow(sd a,sd b){
sd x=1;
for(sd i=1;i<=b;i++) x*=a;
return x;
}
struct Boss{
string name;
sd Offense,Defense,HP;
Boss(string _N="",sd Ofs=0,sd Dfs=0,sd Hp=0):name(_N),Offense(Ofs),Defense(Dfs),HP(Hp){}
void upgrade(){
Offense<<=1;
Defense<<=1;
HP<<=1;
}
void prt()const{
cout<<name;
out(" 的血量:%u 点,攻击力:%u 点,防御力:%u 点\n",HP,Offense,Defense);
}
}HZP("黄级长",10,5,50);
struct Offense_Weapon{
string name;
sd Offense_Up,num;
Offense_Weapon(string _N="",sd _OU=0,sd NM=0):name(_N),Offense_Up(_OU),num(NM){}
};
struct Defense_Weapon{
string name;
sd Defense_Up,num;
Defense_Weapon(string _N="",sd _DU=0,sd NM=0):name(_N),Defense_Up(_DU),num(NM){}
};
struct Liquid{
string name;
sd HP,num,NUM;
int exp;
Liquid(string _N="",sd Hp=0,sd Num=0,sd NM=0,int E=0):name(_N),HP(Hp),num(Num),NUM(NM),exp(E){}
void prt()const{
out("%u . ",num);
cout<<name;
out(" 回复 %u 点体力 可以转化为 %lld 点经验 目前有 %u 瓶\n",HP,exp,NUM);
}
}common("普通药水",10,1,0,10),unusual("罕见药水",30,2,0,30),rare("稀有药水",90,3,0,120),epic("史诗药水",270,4,0,600),legendary("传奇药水",810,5,0,6000),mythic("神话药水",2430,6,0,120000),ultra("究极药水",7290,7,0,6000000),super("超级药水",21870,8,0,6000000000);
Liquid*lq[10];
struct Up_Level{
sd Offense_Up,Defense_Up,HP_Up;
Up_Level(sd OU=0,sd DU=0,sd HU=0):Offense_Up(OU),Defense_Up(DU),HP_Up(HU){}
};
struct Skill{
string name;
sd Offense,Defense,Ice_Time,Last_Then;
Skill(sd Offs=0,sd Defs=0,sd IcTi=0,string Na=""):Offense(Offs),Defense(Defs),Ice_Time(IcTi),name(Na),Last_Then(IcTi){}
const bool operator==(const Skill&skl)const{return name==skl.name;}
void print(sd num)const{
out("技能 %u:“",num);
cout<<name;
out("”\n");
out("攻击加成:%u 点,防御加成:%u 点,冷却:%u 轮攻击\n",Offense,Defense,Ice_Time);
}
};
struct Hero{
sd Offense,Defense,HP,lvl;
int exp;
Offense_Weapon Now_Offense;
Defense_Weapon Now_Defense;
bool Offense_Weapon_Num[MAXN],Defense_Weapon_Num[MAXN];
vector<Skill> skills;
Hero(sd O=0,sd D=0,sd H=0):Offense(O),Defense(D),HP(H),lvl(0),exp(0){}
void LevelUp(Up_Level skill){
Offense+=skill.Offense_Up;
Defense+=skill.Defense_Up;
HP+=skill.HP_Up;
out("现在你的血量: %u 点,攻击力:%u 点,防御力:%u 点\n",HP,Offense,Defense);
}
void AddSkill(Skill skill){
for(auto i:skills)
if(skill==i) return;
skills.insert(skills.end(),skill);
}
void harm(const sd&harmnum){
sd hrm=harmnum-Offense;
sd gxh=rdi32(1,1000);
if(gxh<991) HP-=hrm;
}
void prtskl()const{
out("有 %u 个技能",skills.size());
if(skills.size()!=0) out(":");
out("\n");
for(sd i=0;i<skills.size();i++) skills[i].print(i+1);
slp(3000);
}
void print()const{
out("血量: %u 点,攻击力:%u 点,防御力:%u 点\n\n",HP,Offense,Defense);
prtskl();
}
//void ;
}player(10,3,50);
void drinklq(){
out("您有如下药水:\n");
common.prt();
unusual.prt();
rare.prt();
epic.prt();
legendary.prt();
mythic.prt();
ultra.prt();
super.prt();
out("\n\n是否饮用药水?\n");
sd sfdrk;
in(sfdrk);
if(!sfdrk) return;
out("引用哪种等级的药水?(1~8 分别代表 普通~超级)\n");
in(sfdrk);
if(lq[sfdrk]->NUM==0){
slout("药水数量不足");
cle();
return;
}
lq[sfdrk]->NUM--;
sd gx=rdi32(1,10000);
if(gx>9999) player.HP+=(lq[sfdrk]->HP)*81;
if(gx>9990) player.HP+=(lq[sfdrk]->HP)*27;
if(gx>9900) player.HP+=(lq[sfdrk]->HP)*9;
if(gx>9000) player.HP+=(lq[sfdrk]->HP)*3;
player.HP+=lq[sfdrk]->HP;
out("喝药成功,目前 %u 点血量",player.HP);
slp(1000);
cle();
}
void absorblq(){
out("您有如下药水:\n");
common.prt();
unusual.prt();
rare.prt();
epic.prt();
legendary.prt();
mythic.prt();
ultra.prt();
super.prt();
out("\n\n是否转化药水?\n");
sd sfdrk;
in(sfdrk);
if(!sfdrk) return;
out("转化哪种等级的药水?(1~8 分别代表 普通~超级)\n");
in(sfdrk);
if(lq[sfdrk]->NUM==0){
slout("药水数量不足");
cle();
return;
}
lq[sfdrk]->NUM--;
player.exp+=lq[sfdrk]->exp;
out("转化成功,目前 %u 点血量",player.HP);
slp(1000);
cle();
}
struct Fight{
Boss boss;
Fight(Boss bs=Boss()):boss(bs){}
void round(){
clout("请问你要干什么?\n1.攻击\n2.喝药\n3.逃跑\n");
sd a,b;
in(a);
if(a==1){
out("请问你要使用技能吗?\n1.要\n2.不要");
in(b);
}
else if(a==2) drinklq();
else if(a==3){
}
else{
slclout("输入有误,请重新输入\n");
round();
}
}
bool run(){
boss.prt();
sd x=rdi32(1,Pow(2,sd(log(player.HP))));
while(x%2==0){
x/=2;
out("BOSS 进行了一次升级\n");
boss.upgrade();
}
boss.prt();
while(player.HP>0&&boss.HP>0) round();
if(player.HP<=0&&boss.HP<=0){
slclout("你和敌人同归于尽,你将体力恢复至20点,游戏继续。\n");
player.HP=20;
return 1;
}
else if(player.HP<=0){
slclout("- - - - - - - - - - 你 死 了 。 - - - - - - - - - -\n");
return 0;
}
else{
slclout("你赢了,回复20点体力,游戏继续。\n");
return 1;
}
}
};
sd main(){
out("欢迎来到由 __Tonycyt__ 制作的游戏“游荡者”\n\n\n");
out("现在你的性能如下\n\n\n");
player.print();
lq[1]=&common;
lq[2]=&unusual;
lq[3]=&rare;
lq[4]=&epic;
lq[5]=&legendary;
lq[6]=&mythic;
lq[7]=&ultra;
lq[8]=&super;
while(1){
slclout("你想要去哪里?\n");
slout("0.退出游戏 1.大街 2.学校 3.小卖部 4.教育局 5.家 6.饭堂 7.游戏厅 8.喝药 9.转化药水 114.随机抽取\n");
sd a;
in(a);
cle();
if(a==114) a=rdi32(1,7);
if(a==0) return 0;
if(a==1){
sd x=rdi32(1,10);
if(x==1){
}
}
if(a==8) drinklq();
if(a==9) absorblq();
}
return 0;
}