#include<ctime>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define in(a) scanf("%d",&a)
using namespace std;
int lvneed[201],turns=0,monster_list[11][4];
double growth[8][201];
bool guanqia[11],duqvcundang;
char place[11][11];
struct charac{
string name;
int lv;
int ID;
int exp;
int gold;
int zhiye;//职业
/*战斗量*/
double hp;//血量
double max_hp;
double mp;//魔力
double max_mp;
double gongji;//攻击
double tegong;//特攻
double tefang;//特防
double fangyu;//防御
double sudu;//速度
double baoji;//暴击率
int skill_list[11];
}player,monster[51],vs[2];
struct Skill{
string name;
int ID,sum,rate[11];
int type[11];//1.物伤2.物防3.特攻4.特防5.治疗6.判定
int shuxing[11];//1.无2.水3.火4.风5.土6.神圣7.亡灵8.虚空
int to[11];//0自己1对方
char c[11];//up,down,set,>,<,=
char ways[11];//%,+
double strength[11],mana;
}skill[51];
int randn(int x){
srand(time(0));
return rand()%x;
}
double wuli(double gongji,double fangyu){
return gongji*(100/(100+fangyu));
}
double magic(double magic,double tefang){
return magic*(100/(100+tefang));
}
void dead(){printf("你死了\n");exit(0);}
void plhp(double x,char c){
printf("--------\n");
if(c=='s'){
player.hp=x;
printf("你的hp变成了%d点\n",x);
if(player.hp<=0) {printf("你死了\n");exit(0);}
}
else if(c=='u'){
bool f=false;
player.hp+=x;
if(player.hp>player.max_hp) player.hp=player.max_hp,f=true;
printf("你的hp上升了%.2lf点,现在是%.2lf点\n",x,player.hp);
if(f) printf("hp已经满了!\n");
}
else if(c=='d'){
player.hp-=x;
printf("你的hp降低了%.2lf点,现在是%.2lf点\n",x,player.hp);
if(player.hp<=0) dead();
}
}
void plmmp(double x,char c,char ways){
printf("--------\n");
if(c=='s'){
player.max_mp=x;
printf("你的mp上限变成了%.2lf点\n",x);
player.mp=player.max_mp;
}
else if(ways=='%'){
if(c=='u'){
player.max_mp*=(100+x)/100.00;
printf("你的mp上限上升了%%.2lf,现在是%.2lf点\n",x,player.max_mp);
player.mp=player.max_mp;
}
else if(c=='d'){
player.max_mp*=(100-x)/100.0;
if(player.max_mp<0) player.max_mp=0;
printf("你的mp上限下降了%%.2lf,现在是%.2lf点\n",x,player.max_mp);
player.mp=player.max_mp;
}
}
else if(ways=='+'){
if(c=='u'){
player.max_mp+=x;
printf("你的mp上限上升了%.2lf点,现在是%.2lf点\n",x,player.max_mp);
player.mp=player.max_mp;
}
else if(c=='d'){
player.max_mp-=x;
if(player.max_mp<0) player.max_mp=0;
printf("你的hp上限下降了%.2lf点,现在是%.2lf点\n",x,player.max_mp);
player.mp=player.max_mp;
}
}
}
void plmhp(double x,char c,char ways){
printf("--------\n");
if(c=='s'){
player.max_hp=x;
printf("你的hp上限变成了%.2lf点\n",x);
player.hp=player.max_hp;
}
else if(ways=='%'){
if(c=='u'){
player.max_hp*=(100+x)/100.00;
printf("你的hp上限上升了%%.2lf,现在是%.2lf点\n",x,player.max_hp);
player.hp=player.max_hp;
}
else if(c=='d'){
player.max_hp*=(100-x)/100.0;
if(player.max_hp<0) player.max_hp=0;
printf("你的hp上限下降了%%.2lf,现在是%.2lf点\n",x,player.max_hp);
player.hp=player.max_hp;
}
}
else if(ways=='+'){
if(c=='u'){
player.max_hp+=x;
printf("你的hp上限上升了%.2lf点,现在是%.2lf点\n",x,player.max_hp);
player.hp=player.max_hp;
}
else if(c=='d'){
player.max_hp-=x;
if(player.max_hp<0) player.max_hp=0;
printf("你的hp上限下降了%.2lf点,现在是%.2lf点\n",x,player.max_hp);
player.hp=player.max_hp;
}
}
}
void plgongji(double x,char c,char ways){
printf("--------\n");
if(c=='s'){
player.gongji=x;
printf("你的攻击变成了%.2lf点\n",x);
}
else if(ways=='%'){
if(c=='u'){
player.gongji*=(100+x)/100.00;
printf("你的攻击上升了%%.2lf,现在是%.2lf点\n",x,player.gongji);
}
else if(c=='d'){
player.gongji*=(100-x)/100.0;
if(player.gongji<0) player.gongji=0;
printf("你的攻击下降了%%.2lf,现在是%.2lf点\n",x,player.gongji);
}
}
else if(ways=='+'){
if(c=='u'){
player.gongji+=x;
printf("你的攻击上升了%.2lf点,现在是%.2lf点\n",x,player.gongji);
}
else if(c=='d'){
player.gongji-=x;
if(player.gongji<0) player.gongji=0;
printf("你的攻击下降了%.2lf点,现在是%.2lf点\n",x,player.gongji);
}
}
}
void plfangyu(double x,char c,char ways){
printf("--------\n");
if(c=='s'){
player.fangyu=x;
printf("你的防御变成了%.2lf点\n",x);
}
else if(ways=='%'){
if(c=='u'){
player.fangyu*=(100+x)/100.00;
printf("你的防御上升了%%.2lf,现在是%.2lf点\n",x,player.fangyu);
}
else if(c=='d'){
player.fangyu*=(100-x)/100.0;
if(player.fangyu<0) player.fangyu=0;
printf("你的防御下降了%%.2lf,现在是%.2lf点\n",x,player.fangyu);
}
}
else if(ways=='+'){
if(c=='u'){
player.fangyu+=x;
printf("你的防御上升了%.2lf点,现在是%.2lf点\n",x,player.fangyu);
}
else if(c=='d'){
player.fangyu-=x;
if(player.fangyu<0) player.fangyu=0;
printf("你的防御下降了%.2lf点,现在是%.2lf点\n",x,player.fangyu);
}
}
}
void pltefang(double x,char c,char ways){
printf("--------\n");
if(c=='s'){
player.tefang=x;
printf("你的特防变成了%.2lf点\n",x);
}
else if(ways=='%'){
if(c=='u'){
player.tefang*=(100+x)/100.00;
printf("你的特防上升了%%.2lf,现在是%.2lf点\n",x,player.tefang);
}
else if(c=='d'){
player.tefang*=(100-x)/100.0;
if(player.tefang<0) player.tefang=0;
printf("你的特防下降了%%.2lf,现在是%.2lf点\n",x,player.tefang);
}
}
else if(ways=='+'){
if(c=='u'){
player.tefang+=x;
printf("你的特防上升了%.2lf点,现在是%.2lf点\n",x,player.tefang);
}
else if(c=='d'){
player.tefang-=x;
if(player.tefang<0) player.tefang=0;
printf("你的特防下降了%.2lf点,现在是%.2lf点\n",x,player.tefang);
}
}
}
void pltegong(double x,char c,char ways){
printf("--------\n");
if(c=='s'){
player.tegong=x;
printf("你的特攻变成了%.2lf点\n",x);
}
else if(ways=='%'){
if(c=='u'){
player.tegong*=(100+x)/100.00;
printf("你的特攻上升了%%.2lf,现在是%.2lf点\n",x,player.tegong);
}
else if(c=='d'){
player.tegong*=(100-x)/100.0;
if(player.tegong<0) player.tegong=0;
printf("你的特攻下降了%%.2lf,现在是%.2lf点\n",x,player.tegong);
}
}
else if(ways=='+'){
if(c=='u'){
player.tegong+=x;
printf("你的特攻上升了%.2lf点,现在是%.2lf点\n",x,player.tegong);
}
else if(c=='d'){
player.tegong-=x;
if(player.tegong<0) player.tegong=0;
printf("你的特攻下降了%.2lf点,现在是%.2lf点\n",x,player.tegong);
}
}
}
void plsudu(double x,char c,char ways){
printf("--------\n");
if(c=='s'){
player.sudu=x;
printf("你的速度变成了%.2lf点\n",x);
}
else if(ways=='%'){
if(c=='u'){
player.sudu*=(100+x)/100.00;
printf("你的速度上升了%%.2lf,现在是%.2lf点\n",x,player.sudu);
}
else if(c=='d'){
player.sudu*=(100-x)/100.0;
if(player.sudu<0) player.sudu=0;
printf("你的速度下降了%%.2lf,现在是%.2lf点\n",x,player.sudu);
}
}
else if(ways=='+'){
if(c=='u'){
player.sudu+=x;
printf("你的速度上升了%.2lf点,现在是%.2lf点\n",x,player.sudu);
}
else if(c=='d'){
player.sudu-=x;
if(player.sudu<0) player.sudu=0;
printf("你的速度下降了%.2lf点,现在是%.2lf点\n",x,player.sudu);
}
}
}
void plbaoji(double x,char c,char ways){
printf("--------\n");
if(c=='s'){
player.baoji=x;
printf("你的暴击变成了%.2lf点\n",x);
}
else if(ways=='%'){
if(c=='u'){
player.baoji*=(100+x)/100.00;
printf("你的暴击上升了%%.2lf,现在是%.2lf点\n",x,player.baoji);
}
else if(c=='d'){
player.baoji*=(100-x)/100.0;
if(player.baoji<0) player.baoji=0;
printf("你的暴击下降了%%.2lf,现在是%.2lf点\n",x,player.baoji);
}
}
else if(ways=='+'){
if(c=='u'){
player.baoji+=x;
printf("你的暴击上升了%.2lf点,现在是%.2lf点\n",x,player.baoji);
}
else if(c=='d'){
player.baoji-=x;
if(player.baoji<0) player.baoji=0;
printf("你的暴击下降了%.2lf点,现在是%.2lf点\n",x,player.baoji);
}
}
}
void lvup(){
printf("--------\n");
player.lv++;
printf("你升级了!现在是%d级!\n",player.lv);
plmhp(growth[0][player.lv],'u','+');
plmmp(growth[1][player.lv],'u','+');
plgongji(growth[2][player.lv],'u','+');
plfangyu(growth[3][player.lv],'u','+');
pltegong(growth[4][player.lv],'u','+');
pltefang(growth[5][player.lv],'u','+');
plsudu(growth[6][player.lv],'u','+');
plbaoji(growth[7][player.lv],'u','+');
}
void expup(int x){
printf("--------\n");
player.exp+=x;
printf("你的exp增加了%d点,现在是%d点\n",x,player.exp);
while(player.exp>=lvneed[player.lv+1])lvup();
}
void plgold(int x,char c){
printf("--------\n");
if(c=='u'){
player.exp+=x;
printf("你的金钱增加了%d,现在是%d\n",x,player.gold);
}
else{
player.exp-=x;
printf("你的金钱减少了%d,现在是%d\n",x,player.gold);
}
}
void bbaoji(double x,int to,char c,char ways){
printf("--------\n");
if(c=='s'){
vs[to].baoji=x;
cout<<vs[to].name;printf("的暴击变成了%.2lf点\n",x);
}
else if(ways=='%'){
if(c=='u'){
vs[to].baoji*=(100+x)/100.00;
cout<<vs[to].name;printf("的暴击上升了%%.2lf,现在是%.2lf点\n",x,vs[to].baoji);
}
else if(c=='d'){
vs[to].baoji*=(100-x)/100.0;
if(player.baoji<0) vs[to].baoji=0;
cout<<vs[to].name;printf("的暴击下降了%%.2lf,现在是%.2lf点\n",x,vs[to].baoji);
}
}
else if(ways=='+'){
if(c=='u'){
vs[to].baoji+=x;
cout<<vs[to].name;printf("的暴击上升了%.2lf点,现在是%.2lf点\n",x,vs[to].baoji);
}
else if(c=='d'){
vs[to].baoji-=x;
if(vs[to].baoji<0) vs[to].baoji=0;
cout<<vs[to].name;printf("的暴击下降了%.2lf点,现在是%.2lf点\n",x,vs[to].baoji);
}
}
}
void bgongji(double x,int to,char c,char ways){
printf("--------\n");
if(c=='s'){
vs[to].gongji=x;
cout<<vs[to].name;printf("的攻击变成了%.2lf点\n",x);
}
else if(ways=='%'){
if(c=='u'){
vs[to].gongji*=(100+x)/100.00;
cout<<vs[to].name;printf("的攻击上升了%%.2lf,现在是%.2lf点\n",x,vs[to].gongji);
}
else if(c=='d'){
vs[to].gongji*=(100-x)/100.0;
if(player.gongji<0) vs[to].gongji=0;
cout<<vs[to].name;printf("的攻击下降了%%.2lf,现在是%.2lf点\n",x,vs[to].gongji);
}
}
else if(ways=='+'){
if(c=='u'){
vs[to].gongji+=x;
cout<<vs[to].name;printf("的攻击上升了%.2lf点,现在是%.2lf点\n",x,vs[to].gongji);
}
else if(c=='d'){
vs[to].gongji-=x;
if(vs[to].gongji<0) vs[to].gongji=0;
cout<<vs[to].name;printf("的攻击下降了%.2lf点,现在是%.2lf点\n",x,vs[to].gongji);
}
}
}
void bfangyu(double x,int to,char c,char ways){
printf("--------\n");
if(c=='s'){
vs[to].fangyu=x;
cout<<vs[to].name;printf("的防御变成了%.2lf点\n",x);
}
else if(ways=='%'){
if(c=='u'){
vs[to].fangyu*=(100+x)/100.00;
cout<<vs[to].name;printf("的防御上升了%%.2lf,现在是%.2lf点\n",x,vs[to].fangyu);
}
else if(c=='d'){
vs[to].fangyu*=(100-x)/100.0;
if(player.fangyu<0) vs[to].fangyu=0;
cout<<vs[to].name;printf("的防御下降了%%.2lf,现在是%.2lf点\n",x,vs[to].fangyu);
}
}
else if(ways=='+'){
if(c=='u'){
vs[to].fangyu+=x;
cout<<vs[to].name;printf("的防御上升了%.2lf点,现在是%.2lf点\n",x,vs[to].fangyu);
}
else if(c=='d'){
vs[to].fangyu-=x;
if(vs[to].fangyu<0) vs[to].fangyu=0;
cout<<vs[to].name;printf("的防御下降了%.2lf点,现在是%.2lf点\n",x,vs[to].fangyu);
}
}
}
void btegong(double x,int to,char c,char ways){
printf("--------\n");
if(c=='s'){
vs[to].tegong=x;
cout<<vs[to].name;printf("的特攻变成了%.2lf点\n",x);
}
else if(ways=='%'){
if(c=='u'){
vs[to].tegong*=(100+x)/100.00;
cout<<vs[to].name;printf("的特攻上升了%%.2lf,现在是%.2lf点\n",x,vs[to].tegong);
}
else if(c=='d'){
vs[to].tegong*=(100-x)/100.0;
if(player.tegong<0) vs[to].tegong=0;
cout<<vs[to].name;printf("的特攻下降了%%.2lf,现在是%.2lf点\n",x,vs[to].tegong);
}
}
else if(ways=='+'){
if(c=='u'){
vs[to].tegong+=x;
cout<<vs[to].name;printf("的特攻上升了%.2lf点,现在是%.2lf点\n",x,vs[to].tegong);
}
else if(c=='d'){
vs[to].tegong-=x;
if(vs[to].tegong<0) vs[to].tegong=0;
cout<<vs[to].name;printf("的特攻下降了%.2lf点,现在是%.2lf点\n",x,vs[to].tegong);
}
}
}
void btefang(double x,int to,char c,char ways){
printf("--------\n");
if(c=='s'){
vs[to].tefang=x;
cout<<vs[to].name;printf("的特防变成了%.2lf点\n",x);
}
else if(ways=='%'){
if(c=='u'){
vs[to].tefang*=(100+x)/100.00;
cout<<vs[to].name;printf("的特防上升了%%.2lf,现在是%.2lf点\n",x,vs[to].tefang);
}
else if(c=='d'){
vs[to].tefang*=(100-x)/100.0;
if(player.tefang<0) vs[to].tefang=0;
cout<<vs[to].name;printf("的特防下降了%%.2lf,现在是%.2lf点\n",x,vs[to].tefang);
}
}
else if(ways=='+'){
if(c=='u'){
vs[to].tefang+=x;
cout<<vs[to].name;printf("的特防上升了%.2lf点,现在是%.2lf点\n",x,vs[to].tefang);
}
else if(c=='d'){
vs[to].tefang-=x;
if(vs[to].tefang<0) vs[to].tefang=0;
cout<<vs[to].name;printf("的特防下降了%.2lf点,现在是%.2lf点\n",x,vs[to].tefang);
}
}
}
void bsudu(double x,int to,char c,char ways){
printf("--------\n");
if(c=='s'){
vs[to].sudu=x;
cout<<vs[to].name;printf("的速度变成了%.2lf点\n",x);
}
else if(ways=='%'){
if(c=='u'){
vs[to].sudu*=(100+x)/100.00;
cout<<vs[to].name;printf("的速度上升了%%.2lf,现在是%.2lf点\n",x,vs[to].sudu);
}
else if(c=='d'){
vs[to].sudu*=(100-x)/100.0;
if(player.sudu<0) vs[to].sudu=0;
cout<<vs[to].name;printf("的速度下降了%%.2lf,现在是%.2lf点\n",x,vs[to].sudu);
}
}
else if(ways=='+'){
if(c=='u'){
vs[to].sudu+=x;
cout<<vs[to].name;printf("的速度上升了%.2lf点,现在是%.2lf点\n",x,vs[to].sudu);
}
else if(c=='d'){
vs[to].sudu-=x;
if(vs[to].sudu<0) vs[to].sudu=0;
cout<<vs[to].name;printf("的速度下降了%.2lf点,现在是%.2lf点\n",x,vs[to].sudu);
}
}
}
void bhp(double x,int to,char c,char ways){
printf("--------\n");
if(c=='s'){
vs[to].hp=x;
cout<<vs[to].name;printf("的hp变成了%.2lf点\n",x);
}
else if(ways=='%'){
if(c=='u'){
vs[to].hp*=(100+x)/100.00;
cout<<vs[to].name;printf("的hp上升了%%.2lf,现在是%.2lf点\n",x,vs[to].hp);
}
else if(c=='d'){
vs[to].hp*=(100-x)/100.0;
cout<<vs[to].name;printf("的hp下降了%%.2lf,现在是%.2lf点\n",x,vs[to].hp);
}
}
else if(ways=='+'){
if(c=='u'){
vs[to].hp+=x;
cout<<vs[to].name;printf("的hp上升了%.2lf点,现在是%.2lf点\n",x,vs[to].hp);
}
else if(c=='d'){
vs[to].hp-=x;
cout<<vs[to].name;printf("的hp下降了%.2lf点,现在是%.2lf点\n",x,vs[to].hp);
}
}
}
void bmp(double x,int to,char c,char ways){
printf("--------\n");
if(c=='s'){
vs[to].mp=x;
cout<<vs[to].name;printf("的mp变成了%.2lf点\n",x);
}
else if(ways=='%'){
if(c=='u'){
vs[to].mp*=(100+x)/100.00;
cout<<vs[to].name;printf("的mp上升了%%.2lf,现在是%.2lf点\n",x,vs[to].mp);
}
else if(c=='d'){
vs[to].mp*=(100-x)/100.0;
cout<<vs[to].name;printf("的mp下降了%%.2lf,现在是%.2lf点\n",x,vs[to].mp);
}
}
else if(ways=='+'){
if(c=='u'){
vs[to].mp+=x;
cout<<vs[to].name;printf("的hp上升了%.2lf点,现在是%.2lf点\n",x,vs[to].mp);
}
else if(c=='d'){
vs[to].mp-=x;
cout<<vs[to].name;printf("的hp下降了%.2lf点,现在是%.2lf点\n",x,vs[to].mp);
}
}
}
void attack(int to){
printf("--------\n");
double x=wuli(vs[1-to].gongji,vs[to].fangyu);
cout<<vs[1-to].name<<"攻击了"<<vs[to].name<<endl;
bhp(x,to,'d','+');
}
void show_skill(){
printf("--------\n");
cout<<"你拥有的技能有:"<<endl;
for(int i=1;i<=player.skill_list[0];i++){
int x=player.skill_list[i];
cout<<"NO"<<x<<"."<<skill[x].name<<endl;
}
}
void use_skill(int x,int from){
}
void pl_action(){int a;
printf("--------\n轮到你行动了\n");
printf("1.普通攻击\n2.使用技能\n3.使用物品\n4.逃跑\n请输入:");
for(int i=1;i<=1;i++){
in(a);
switch(a){
case 1:attack(1);break;
case 2:{
if(!player.skill_list[0]){
printf("你没有技能!请重新输入:");i--;
}
else{int a1;
show_skill();
for(int j=1;j<=1;j++){bool f=false;
in(a1);
for(int k=1;k<=player.skill_list[0];k++)
if(player.skill_list[k]==a1) f=true;
if(f) use_skill(a1,0);
else {printf("你没有此技能!请重新输入:");j--;}
}
}
break;
}
case 3:break;
case 4:break;
default:{printf("输入错误,请重新输入:");i--;}
}
}
}
void monster_action(){bool act=false;
double damage=wuli(vs[1].gongji,vs[0].fangyu);
double b_damage=wuli(vs[0].gongji,vs[1].fangyu);
if(!act&&vs[0].hp<=damage){act=true;attack(0);}
if(!act&&((vs[1].hp<=b_damage&&vs[1].hp<vs[1].max_hp)||vs[1].skill_list[0])){
{
double maxn=0;int m=0;
for(int i=1;i<=vs[1].skill_list[0];i++){
int x=vs[1].skill_list[i];
if(skill[x].mana>vs[1].mp) continue;
for(int j=0;j<skill[x].sum;j++){
if(skill[x].type[j]==5&&skill[x].to[j]=='s')
if(skill[x].strength[j]>maxn){
maxn=skill[x].strength[j];
m=i;
}
}
}
if(m) use_skill(m,1);
}
}
if(!act) attack(0);
}
void battle(int x){int f=0;turns=0;
vs[0]=player;vs[1]=monster[x];
while(!f){turns++;
printf("--------\n");
printf("第%d回合\n",turns);
if(vs[0].sudu>=vs[1].sudu){pl_action();if(vs[1].hp<=0){f=1;break;}monster_action();if(vs[0].hp<=0)dead();}
else{monster_action();if(vs[0].hp<=0)dead();pl_action();if(vs[1].hp<=0){f=1;break;}}
}
if(f==1){
printf("战斗结束,你赢了!");
plgold(vs[1].gold,'u');
expup(vs[1].exp);
return;
}
}
void type_name(){
printf("--------\n");
printf("请问你的名字是?\n输入: ");
freopen("CON","r",stdin);
cin>>player.name;
cout<<"你的名字已改为"<<player.name<<endl;
}
void show_self(){
printf("--------\n");
cout<<"你现在的状态为:"<<endl;
cout<<player.name<<endl;
printf("lv:%d 经验:%d 金钱:%d 职业:%d ",player.lv,player.exp,player.gold,player.zhiye);
printf("hp:%.2lf mp:%.2lf\n",player.hp,player.mp);
printf("物攻:%.2lf\n物防:%.2lf\n特攻:%.2lf\n特防:%.2lf\n速度:%.2lf\n暴击:%.2lf\n",player.gongji,player.fangyu,player.tegong,player.tefang,player.sudu,player.baoji);
for(int i=1;i<=10;i++)
printf("%d ",guanqia[i]);
}
void guide(){
printf("--------\n");
int a;
printf("你有什么想问的吗?\n");
printf("1.关于战斗。\n");
printf("2.关于武器。\n");
printf("3.我没什么要问的。\n");
printf("请输入:");
for(int i=1;i<=1;i++)
{
in(a);
if(a==1){printf("‘在刷怪区域,你可以采取一系列的动作,战斗,离开,或是使用物品。’\n");
printf("‘战斗时,你可以进行攻击,使用技能或是逃跑。’\n");
printf("‘记住,如果hp归零就代表死亡!游戏就结束了!’\n");
guide();}
else if(a==2){printf("‘这个世界上有五种主流武器,分别是剑,盾锤,匕首,弓箭与法杖’\n");
printf("‘其中剑攻守兼备,盾锤擅长治疗与防御,匕首擅长一击毙命,弓箭追求速度与敏捷,而法杖则用魔法打出巨量伤害’\n");
guide();}
else if(a==3) return;
else {printf("输入错误,请重新输入:");i--;}
}
}
void mission(){
printf("--------\n");
int a;
if(player.lv>0)
{
printf("任务列表:\n");
printf("前往青青草地消灭史莱姆王");
if(!guanqia[1])printf("(未完成)\n");
else printf("(已完成)\n");
}
printf("输入‘0’退出\n输入: ");
for(int i=1;i<=1;i++)
{
in(a);
if(a==0){printf("你可以随时来冒险者公会询问以查看任务\n");return;}
else{printf("输入错误,请重新输入:");i--;}
}
}
void gonghui(){
printf("--------\n");
int a;
if(player.lv==0)
printf("站在冒险者公会前台的是一个漂亮的金发精灵。\n她注意到了你。\n");
printf("‘您好!这里是冒险者公会!’\n‘我能为您做点什么?’\n");
if(player.lv==0)
{
printf("1.登记为冒险者\n请输入: ");
for(int i=1;i<=1;i++)
{
in(a);
if(a==1){
printf("‘是要成为冒险者的新人吗?好的。’\n");
printf("‘我看看,,是");cout<<player.name<<"是吗?’"<<endl;
expup(5);
printf("‘你已经登记为冒险者了!现在去看看有什么任务吧?’\n");
mission();
}
else{printf("输入错误,请重新输入:");i--;}
}
}
else
{
printf("0.没事,我走了\n1.询问信息\n2.查看任务\n请输入: ");
for(int i=1;i<=1;i++)
{
in(a);
switch(a)
{
case 0:return;
case 1:guide();break;
case 2:mission();break;
default:printf("输入错误,请重新输入:");i--;
}
}
}
gonghui();
}
void shuzhi(int a,int x){
for(int i=1;i<=200;i++){
growth[x][i]=a;
if(i%2) a+=2;
else a+=3;
}
}
void loading(){
int a,a1;
freopen("lvneed.txt","r",stdin);
for(int i=0;i<=200;i++) in(lvneed[i]);
freopen("monster.txt","r",stdin);
while(cin>>a)
{
if(!a)break;
monster[a].ID=a;
cin>>a1;monster_list[a1][0]++;
monster_list[a1][monster_list[a1][0]]=a;
cin>>monster[a].name;
cin>>monster[a].lv>>monster[a].gongji>>monster[a].fangyu>>monster[a].tegong>>monster[a].tefang>>monster[a].sudu>>monster[a].baoji;
cin>>monster[a].max_hp>>monster[a].hp>>monster[a].max_mp>>monster[a].mp>>monster[a].exp>>monster[a].gold;
cin>>a1;monster[a].skill_list[0]=a1;
for(int i=1;i<=a1;i++) cin>>monster[a].skill_list[i];
}
shuzhi(20,0);shuzhi(5,1);shuzhi(10,2);shuzhi(10,3);shuzhi(10,4);shuzhi(10,5);shuzhi(5,6);
for(int i=1;i<=200;i++) growth[7][i]=1;
a=0;
freopen("CON","r",stdin);
}
void read_save(){
printf("--------\n");
int a;
freopen("save.txt","r",stdin);
in(a);if(!a){printf("没有可用的存档!\n");freopen("CON","r",stdin);duqvcundang=true;return;}
cin>>player.name;
scanf("%d%d%d%d",&player.lv,&player.exp,&player.gold,&player.zhiye);
scanf("%lf%lf%lf%lf",&player.hp,&player.max_hp,&player.mp,&player.max_mp);
scanf("%lf%lf%lf%lf%lf%lf",&player.gongji,&player.fangyu,&player.tegong,&player.tefang,&player.sudu,&player.baoji);
for(int i=1;i<=10;i++)
cin>>guanqia[i];
loading();
freopen("CON","r",stdin);
printf("成功读取存档!\n");
}
void save(){
printf("--------\n");
freopen("save.txt","w",stdout);
cout<<"1"<<endl;
cout<<player.name<<endl;
printf("%d %d %d %d ",player.lv,player.exp,player.gold,player.zhiye);
printf("%.2lf %.2lf %.2lf %.2lf ",player.hp,player.max_hp,player.mp,player.max_mp);
printf("%.2lf %.2lf %.2lf %.2lf %.2lf %.2lf \n",player.gongji,player.fangyu,player.tegong,player.tefang,player.sudu,player.baoji);
for(int i=1;i<=10;i++)
printf("%d ",guanqia[i]);
freopen("CON","w",stdout);
printf("保存成功!\n");
}
void home(){
printf("--------\n");
printf("你回到了家,睡了一晚上\n");
save();
printf("第二天到了\n");
}
void tiejiangpu(){
printf("--------\n");
printf("铁匠铺暂未开放\n");return;
int a;
printf("欢迎光临!我们这的装备都是匠心之作!\n");
if(player.zhiye==0) printf("1.购买短剑(5g,攻击+2)\n2.购买皮甲(5g,防御+2)\n");
if(player.zhiye==1)
{
printf("2.购买练习剑(10g,攻击+5)\n3.购买铁剑(18g,攻击+10)\n4.购买骑士重剑(45g,攻击+27)\n");
}
}
void yaoshuidian(){
printf("--------\n");
printf("药水店暂未开放\n");return;
}
void show_monster(int x){
for(int i=1;i<=monster_list[x][0];i++){
int a1=monster_list[x][i];
cout<<"NO"<<monster[a1].ID<<"."<<monster[a1].name<<endl;
}
}
void go_place(int x){int a,a1;
cout<<"你到达了目的地";
for(;;){
printf("\n0.离开\n1.讨伐怪物\n2.查看状态\n请输入:");
in(a);
switch(a){
case 0:return;break;
case 1:{bool f=false;
show_monster(x);
cout<<"请输入要讨伐的怪物编号:";
for(int k=1;k<=1;k++){
in(a1);
for(int j=1;j<=monster_list[x][0];j++)
if(monster_list[x][j]==a1) f=true;
if(f) battle(a1);
else{printf("输入错误,请重新输入:");k--;}
}break;
}
case 2:show_self();break;
default:printf("输入错误,请重新输入:");
}
}
}
void city(){
printf("--------\n");
int a;
printf("这里是王城!要做什么?\n");
printf("0.退出\n1.去冒险者公会\n2.去铁匠铺\n3.去药水店\n4.回家存档\n5.去青青草地(1~5级)\n请输入:");
for(int i=1;i<=1;i++)
{
in(a);
switch(a)
{
case 0:exit(0);break;
case 1:gonghui();break;
case 2:tiejiangpu();break;
case 3:yaoshuidian();break;
case 4:home();break;
case 5:go_place(1);break;
default:printf("输入错误,请重新输入:");i--;
}
}
city();
}
void newgame(){
type_name();
loading();
printf("--------\n");
player.lv=0;player.zhiye=0;player.exp=0;player.gongji=0;player.fangyu=0;
player.tegong=0;player.tefang=0;player.sudu=0;player.baoji=0;player.max_hp=0;
player.hp=0;player.max_mp=0;player.mp=0;player.gold=10;
printf("你从遥远的家乡来到了王城,梦想着成为一名伟大的冒险者\n");
printf("要成为冒险者,就得先去冒险者公会登记!快去吧!\n");
gonghui();
city();
}
int main(){
int a;
printf("****************\n");
printf("***冒险者游戏***\n");
printf("**********v0.0.1\n");
printf("1.开始游戏\n2.读取存档\n3.退出\n请输入:");
for(int i=1;i<=1;i++)
{
in(a);
switch(a)
{
case 1:newgame();break;
case 2:read_save();if(!duqvcundang)city();break;
case 3:exit(0);break;
default:printf("输入错误,请重新输入:");i--;break;
}
}
return 0;
}
06-23
1020

05-17
614

07-06
4021
