打怪小游戏
2024-07-29 17:03:39
发布于:北京
#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
//superpaperIV 制作
//严禁该游戏,严禁抄游戏
#define aaa int
#define aaaaa double
struct Player{string Name; aaa Health , Damage , Money , level ;aaaaa exp ;aaa dodge ; aaaaa exb;};
aaa init_hp,init_dmg,init_dodge;
aaaaa init_exb;
void Color(int a){
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_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
if(a==9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_GREEN|BACKGROUND_BLUE);
if(a==10) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_BLUE);
if(a==11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
if(a==12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);
if(a==13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
if(a==14) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_BLUE);}
void message_s(string a){
for (aaa i=0;i<a.size();i++){
cout<<a[i];
Sleep(2);
}
return ;
}
void message_f(string a){
for (aaa i=0;i<a.size();i++){
cout<<a[i];
Sleep(2);
}
return ;
}
void message_sf(string a){
for (aaa i=0;i<a.size();i++){
cout<<a[i];
}
return ;
}
int ShowStats(string Name,aaa Health,aaa Damage,aaa Money,aaa level, aaaaa exp,aaa dodge,aaaaa exb){
system("mode con cols=28 lines=12");
int a;
Color(0);message_s("\n ----==/");cout<<Name;message_s("\\==----\n");Color(0);cout<<endl;message_s(" 满血量: ");Color(4);cout<<Health<<endl;Color(0);message_s(" 伤害: ");Color(8);cout<<Damage<<endl;Color(0);message_s(" 经验: ");Color(2);cout<<level;Color(0);message_s("级 ");Color(2);cout<<exp<<"/"<<5*pow(1.5,level-1)<<endl;Color(0);message_s(" 金币: ");Color(5);cout<<Money<<endl;Color(0);message_s(" 闪避率:");Color(1);cout<<dodge<<"%"<<endl;Color(0);message_s(" 经验倍率: ");Color(2);cout<<exb*100<<"%"<<endl<<endl;Color(0);message_s(" 输入任何东西继续:");
cin>>a;
system("cls");
return 0;
}
void shop2(aaa& Health,aaa& Money){
system("cls");
int a=0;
while (true){
system("mode con cols=44 lines=11");
message_s("\n ----==/装备商店(不限购)\\=---- Money:");cout<<Money<<endl;message_s("输入1买皮甲 +1血量 -5金币");cout<<endl;message_s("输入2买铁甲 +5血量 -20金币");cout<<endl;message_s("输入3合金甲 +25血量 -120金币");cout<<endl;message_s("输入4防弹衣 +3血量 -15金币");cout<<endl;message_s("输入5轻型防弹衣 +2血量 -8金币");cout<<endl;message_s("输入6退出商店");cout<<endl<<endl;message_s("请输入你要买的东西:");
cin>>a;
system("mode con cols=28 lines=3");
if (a>=1 && a<=5 )cout<<endl;
if (a==1){if (Money>=5){Money-=5;Health++;system("cls");message_s("你买了皮甲 +1血量 -5金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if (a==2){if (Money>=20){Money-=20;Health+=5;system("cls");message_s("你买了铁甲 +5血量 -20金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if(a==3){if (Money>=120){Money-=120;Health+=25;system("cls");message_s("你买了合金甲 +25血量 -120金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if (a==4){if(Money>=15){Money-=15;Health+=3;system("cls");message_s("你买了防弹衣 +3血量 -15金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if (a==5){if (Money>=8){Money-=8;Health+=2;system("cls");message_s("你买了轻型防弹衣 +2血量 -8金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if (a==6){system("cls");return ;}
else{system("cls");system("mode con cols=12 lines=3");message_s("请好好输入");Sleep(1000);system("cls"); return ;}
}
}
void shop3(aaa& Damage,aaa& Money){
system("cls");
int a=0;
while (true){
system("mode con cols=44 lines=11");
message_s("\n ----==/武器商店(不限购)\\=---- Money:");cout<<Money<<endl;message_s(" 输入1买木剑 +1伤害 -10金币");cout<<endl;message_s(" 输入2买铁剑 +5伤害 -45金币");cout<<endl;message_s(" 输入3买合金剑 +25伤害 -225金币");cout<<endl;message_s(" 输入4买火枪 +3伤害 -28金币");cout<<endl;message_s(" 输入5买菜刀 +2伤害 -19金币");cout<<endl;message_s(" 输入6退出商店");cout<<endl<<endl;message_s(" 请输入你要买的东西:");
cin>>a;
system("mode con cols=28 lines=3");
if (a>=1 && a<=5 )cout<<endl;
if (a==1){if (Money>=10){Money-=10;Damage++;system("cls");message_s(" 你买了木剑 +1伤害 -10金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if (a==2){if (Money>=45){Money-=45;Damage+=5;system("cls");message_s(" 你买了铁剑 +5伤害 -45金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if(a==3){if (Money>=225){Money-=225;Damage+=25;system("cls");message_s(" 你买了合金剑 +25伤害 -225金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if (a==4){if(Money>=28){Money-=28;Damage+=3;system("cls");message_s(" 你买了火枪 +3伤害 -28金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if (a==5){if (Money>=19){Money-=19;Damage+=2;system("cls");message_s(" 你买了菜刀 +2伤害 -19金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if (a==6){system("cls");return ;}
else {system("cls");system("mode con cols=12 lines=3");message_s("请好好输入");Sleep(1000);system("cls");return ; }
}
}
void shop4(int& dodge,int& Money){
system("cls");
int a=0;
while (true){
system("mode con cols=44 lines=11");
message_s("\n ----==/鞋子商店(不限购)\\=---- Money:");cout<<Money<<endl;message_s("输入1买皮鞋 +1闪避 -20金币");cout<<endl;message_s("输入2买锁链鞋 +5闪避 -95金币");cout<<endl;message_s("输入3买合金鞋 +25闪避 -470金币");cout<<endl;message_s("输入4买运动鞋 +3闪避 -55金币");cout<<endl;message_s("输入5买拖鞋 +2闪避 -32金币");cout<<endl;message_s("输入6退出商店");cout<<endl<<endl;message_s("注:闪避率最多为60 超过则会被强制改为60闪避率");cout<<endl<<endl;message_s("请输入你要买的东西:");
cin>>a;
system("mode con cols=28 lines=3");
if (a>=1 && a<=5 )cout<<endl;
if (a==1){if (Money>=20){Money-=20;dodge++;system("cls");message_s("你买了皮鞋 +1闪避 -20金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if (a==2){if (Money>=95){Money-=95;dodge+=5;system("cls");message_s("你买了锁链鞋 +5闪避 -95金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if(a==3){if (Money>=470){Money-=470;dodge+=25;system("cls");message_s("你买了合金鞋 +25闪避 -470金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if (a==4){if(Money>=55){Money-=55;dodge+=3;system("cls");message_s("你买了运动鞋 +3闪避 -55金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if (a==5){if (Money>=32){Money-=32;dodge+=2;system("cls");message_s("你买了拖鞋 +2闪避 -32金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if (a==6){system("cls");return ;}
else{system("cls");system("mode con cols=12 lines=3");message_s("请好好输入");Sleep(1000);system("cls");return; }
a=0;
}
}
void shop5(aaa& Money){
system("cls");
int a=0;
while (true){
system("mode con cols=44 lines=11");
message_s("\n ----==/经验商店(不限购)\\=---- Money:");cout<<Money<<endl;message_s("输入1买经验包 +1%经验倍率 -20金币");cout<<endl;message_s("输入2买大经验包 +5%经验倍率 -95金币");cout<<endl;message_s("输入3买超大经验包 +25%经验倍率 -460金币");cout<<endl;message_s("输入4买中经验包 +3%经验倍率 -55金币");cout<<endl;message_s("输入5中小经验包 +2%经验倍率 -36金币");cout<<endl<<endl;message_s("注:经验倍率最多为300% 超过则会被强制改为300%经验倍率");cout<<endl;message_s("输入6退出商店");cout<<endl<<endl;message_s("请输入你要买的东西:");
cin>>a;
system("mode con cols=28 lines=3");
if (a>=1 && a<=5 )cout<<endl;
if (a==1){if (Money>=20){Money-=20;init_exb+=0.01;system("cls");message_s("你买了经验包 +1%经验倍率 -20金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if (a==2){if (Money>=95){Money-=95;init_exb+=0.05;system("cls");message_s("你买了大经验包 +5%经验倍率 -95金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if(a==3){if (Money>=460){Money-=460;init_exb+=0.25;system("cls");message_s("你买了超大经验包 +25%经验倍率 -460金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if (a==4){if(Money>=55){Money-=55;init_exb+=0.03;system("cls");message_s("你买了中经验包 +3%经验倍率 -55金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if (a==5){if (Money>=36){Money-=36;init_exb+=0.02;system("cls");message_s("你买了中小经验包 +2%经验倍率 -36金币");Sleep(1000);system("cls");}else{system("cls");message_s("你买不起这件装备");}}
else if (a==6){system("cls");return ;}
else {system("cls");system("mode con cols=12 lines=3");message_s("请好好输入");Sleep(1000);system("cls");return ; }
a=0;
}
}
void shop(int& Health,int& Damage,int& Money,int& dodge,double& exb){
int a;
system("mode con cols=28 lines=9");
message_f("\n 输入1武器商店");cout<<endl;message_f(" 输入2防御商店");cout<<endl;message_f(" 输入3鞋子商店");cout<<endl;message_f(" 输入4经验商店");cout<<endl;message_f(" 输入5退出商店");cout<<endl<<endl;message_f(" 请输入你要去的商店号:");
cin>>a;
if (a==5){system("cls");return ;}
else if (a==2){shop2(Health, Money);}
else if (a==1){shop3(Damage, Money);}
else if(a==3){shop4(dodge, Money);}
else if(a==4){shop5(Money);}
else{system("cls");system("mode con cols=12 lines=3");message_s("\n 请好好输入");Sleep(2000);return ;}
}
void mob(string& Name,int& health, int& damage, int& exp, int& money, int level, int& dodge){
if (rand()%max(3,level*2-1)==1){Name="史莱姆";health=3+level/2;damage=1+level/3;money=1+level/2;exp=1+(level-1);dodge=min(10+level,25);return ;}
if (rand()%max(293-level*17,5)==0){Name="龙王";health=300+level*5;damage=7+(level-1);money=38+level*2;exp=25+(level-1)*(level-2)*1.15;dodge=min(25+level*2,50);return ;}
if (rand()%max(347-level*23,5)==0){Name="哥布林王";health=510+level*8;damage=3+(level-1)/1.5;money=55+level*4;exp=4+(level-1)*(level-2)*1.1;dodge=min(10+level*2,30);return ;}
if (rand()%max(337-level*23,3)==0){Name="万界之灵";health=210+level*4;damage=5+(level-1)/1.2;money=4+level*3;exp=40+(level-1)*(level-2)*1.3;dodge=min(20+level*3,80);return ;}
if (rand()%max(23-level*4+1,5)==1){Name="巨人";health=20+level*3;damage=4+(level-1)/1.5;money=5+level/1.2;exp=2+(level-1)*0.6;dodge=min(3+level,15);return ;}
if (rand()%max(27-level*4+1,5)==0){Name="尹子航";health=30+level*3;damage=2+(level-1)/1.2;money=5;exp=3+(level-1)*1.4;dodge=min(15+level*2,35);return ;}
if (rand()%max(57-level*5+3,7)==5){Name="恶灵";health=40+level*2;damage=2+(level-1)*1.5;money=5+level;exp=5+(level-1)*0.9;dodge=min(5+level*2,30);return ;}
if (rand()%max(37-level*4+2,5)==2){Name="迷失的商人";health=20+level*2.5;damage=3+(level-1)*1.5;money=4+level;exp=3+(level-1)*0.9;dodge=min(5+level,15);return ;}
if ((rand()+2)%5==1){Name="精灵";health=3+level;damage=2+level/3;money=1+level/1.5;exp=3+(level-1)/2;dodge=min(0+level-1,10);return ;}
if (rand()%5==1){Name="哥布林";health=3+level;damage=1+level/2;money=5+level;exp=(level-1)/2;dodge=min(10+level-1,40);return ;}
if (rand()%max(11,level*2+1)==1){Name="保险箱恶灵";health=10+level/2;damage=0.5+(level-1)/3;money=8+level*2;exp=(level-1)*0.5;dodge=35;return ;}
if ((rand()+1)%3==0){Name="小巨人";health=4+level/1.5;damage=1+(level-1)/2;money=2+level/2;exp=1+(level-1)*0.7;dodge=min(10+level*2-2,30);return ;}
if ((rand()+1)%5==0){Name="肉球";health=8+level*3;damage=2+(level-1)*1.5;money=2+level/2;exp=2+(level-1)*0.8;dodge=min(0+level-1,5);return ;}
Name="小虫子";health=3+level*1.5;damage=2+(level-1);money=1+level/2;exp=1+(level-1)/3;dodge=min(10+level*4-4,85);return ;
}
int award(int& mexp,int& mcash, int& money, int& level, double& exp, string mname,int& hp, int& dmg, double exb){
system("cls");
Color(0);
system("mode con cols=50 lines=3");
money+=mcash;exp+=mexp*exb;
cout<<"\n "<<mname;message_s("被你击败了");message_s("你获得了");Color(5);cout<<mcash;message_s("个金币");Color(0);cout<<"和";Color(2);cout<<mexp*exb;message_s("个经验");Color(0);cout<<endl;
Sleep(1000);system("cls");
for (int i=1;i<=10;i++){
if (exp>=int(5*pow(1.5,level-1))){
exp-=5*pow(1.5,level-1);level+=1;
system("mode con cols=50 lines=4");
message_f("\n 你升级了");cout<<endl;init_hp++;init_dodge++;init_exb+=0.05;
if (level%3==0){
init_dmg+=1;
}}}
Sleep(1000);system("cls");
}
int fight(int hp, int dmg, int& money , int& level, double& exp,int dodge,double exb){
system("mode con cols=30 lines=10");
int mhp,mdmg,mexp,mcash,mdod;string mname;
char action;
mob(mname, mhp, mdmg, mexp, mcash, level, mdod);
cout<<"\n";
while (true){
action='0';
message_s(" 输入1攻击");cout<<endl;
message_s(" 输入2逃跑\n\n ");
cin>>action;
system("cls");
if (action=='2'){
system("mode con cols=30 lines=3");
message_f("\n 你逃跑了,没得到任何的奖励");cout<<endl;message_f(" 输入任何东西继续:");
cin>>action;
system("cls");
return 0;
}
else if (action=='1'){
if (rand()%100>mdod){
mhp-=dmg;
message_f("\n 你对");cout<<mname;message_f("造成了");Color(8);cout<<dmg;Color(0);message_f("伤害");cout<<endl;
cout<<" "<<mname;message_s("还剩");Color(8);cout<<mhp+dmg<<"—>"<<mhp;Color(0);message_s("血量");cout<<endl;
if (mhp<=0){
award(mexp,mcash,money,level,exp,mname,hp,dmg,exb);
break;
}
}
else {message_s("\n 你的攻击被");cout<<mname;message_s("给躲掉了");cout<<endl;}
}
else{Color(8);message_s(" 你放弃了这次机会");Color(0);}
cout<<endl;
if (rand()%100>dodge){
hp-=mdmg;
cout<<" "<<mname;message_s("对你造成了");Color(8);cout<<mdmg;Color(0);message_s("伤害");cout<<endl<<" ";message_s("你还剩");Color(8);cout<<hp+mdmg<<"—>"<<hp;Color(0);message_s("血量");cout<<endl<<endl;
if (hp<=0){
system("cls");
system("mode con cols=25 lines=3");
Color(8);cout<<endl;message_s(" 你被");cout<<mname;message_s("击败了");Color(0);
Sleep(2000);system("cls");return 0;
}
}
else{message_s(" 你躲掉了");cout<<mname;message_s("的攻击\n");cout<<endl;
}
}
return 0;
}
void init(int& hp, int& dmg, int& dodge, double& exb){
hp+=init_hp;dmg+=init_dmg;init_hp=0;init_dmg=0;dodge+=init_dodge;init_dodge=0;if(dodge>60){dodge=60;}exb+=init_exb;init_exb=0;if(exb>3){exb=3;}
return ;
}
int main(){
system("mode con cols=40 lines=3");
int n;
Color(0);
string name,con;
message_s("\n 请输入你的名字:");
getline(cin,name);
system("cls");
Player stats;
if (name!="superpaperiv"){stats.Name=name;stats.Health=5;stats.Damage=1;stats.Money=0;stats.level=1;stats.exp=0;stats.dodge=10,stats.exb=1.0;}else{stats.Name=name;stats.Health=1000;stats.Damage=1000;stats.Money=10000;stats.level=1;stats.exp=0;stats.dodge=60,stats.exb=3.0;}
while (true){
Color(0);
system("mode con cols=48 lines=11");
init(stats.Health,stats.Damage,stats.dodge,stats.exb);
message_s("\n 输入1开始打怪");cout<<endl;message_s(" 输入2检查数据");cout<<endl;message_s(" 输入3去商店");cout<<endl;message_s(" 输入4查看规则");cout<<endl;message_s(" 输入5查看图鉴");cout<<endl<<endl;message_s(" 请不要乱输入字符串以及字符,这可导致存档丢失!");cout<<endl<<endl;message_s(" 请输入你的操作:");
cin>>n;
system("cls");
if (n!=0){
if (n==1){n=0;fight(stats.Health,stats.Damage,stats.Money,stats.level,stats.exp,stats.dodge,stats.exb);}
else if (n==2){n=0;ShowStats(stats.Name,stats.Health,stats.Damage,stats.Money,stats.level,stats.exp,stats.dodge,stats.exb);}
else if (n==3){n=0;shop(stats.Health,stats.Damage,stats.Money,stats.dodge,stats.exb);}
else if (n==4){system("mode con cols=36 lines=8");message_s("\n 打怪升级买装备 死亡不会掉东西");cout<<endl;message_s("\n 升级会增加攻击力和血量");cout<<endl<<endl;message_s("\n --------Superpaper制作--------");Sleep(5000);system("cls");}
else if (n==5){system("mode con cols=98 lines=25");n=0;Color(4);message_sf("\n------------------------------------------+===/图鉴\\===+------------------------------------------\n\n TIER 1: \n 史莱姆 : 初始血量:3 初始伤害:1 初始闪避:10 最高闪避:25 初始经验:1 初始金币:1\n 哥布林 : 初始血量:3 初始伤害:1 初始闪避:10 最高闪避:40 初始经验:0 初始金币:5\n 精灵 : 初始血量:3 初始伤害:2 初始闪避:0 最高闪避:10 初始经验:3 初始金币:1\n 小虫子 : 初始血量:3 初始伤害:2 初始闪避:10 最高闪避:85 初始经验:1 初始金币:1\n 保险箱恶灵: 初始血量:10 初始伤害:0 初始闪避:35 最高闪避:35 初始经验:0 初始金币:10\n 小巨人 : 初始血量:4 初始伤害:1 初始闪避:10 最高闪避:30 初始经验:1 初始金币:2\n\n TIER 2: \n 尹子航 : 初始血量:30 初始伤害:2 初始闪避:15 最高闪避:35 初始经验:3 初始金币:5 \n 巨人 : 初始血量:20 初始伤害:4 初始闪避:3 最高闪避:15 初始经验:2 初始金币:5\n 肉球 : 初始血量:8 初始伤害:2 初始闪避:0 最高闪避:5 初始经验:2 初始金币:2\n 恶灵 : 初始血量:40 初始伤害:2 初始闪避:5 最高闪避:30 初始经验:5 初始金币:5\n\n 输入任何东西返回:");cin>>con;}
else{system("cls");message_s("请好好输入");cout<<endl;Sleep(1000);system("cls");}n=0;}
}
}
全部评论 2
666
2024-07-29 来自 北京
0为了保证代码的可读性,请尽量使用markdown的代码块语法来包裹你的代码。
语法:
```cpp
在此粘贴你的代码
```
效果:
#include<bits/stdc++.h> using namespace std; int main(){ cout << "joker" return 0; }
2024-07-29 来自 浙江
0谢谢,好的
2024-07-29 来自 北京
0那咋没改捏?
2024-07-29 来自 浙江
0现在改了
2024-07-29 来自 北京
0
有帮助,赞一个