//main.cpp

#include "zhujiao.h"
#include "guaiwu.h"
#include "shangdian.h"
#include <iostream>
using namespace std;

int main()
{
 zhujiao ZJ; //主角实例
 guaiwu GW;  //怪物实例
 shangdian WP; //商店实例
 char DTE;//DTE大厅选择
 int G;//怪物区选择
 int E;//E战斗选择
 char DIE;//死亡选择
 int JN;//选择技能
 int SP;//选择商品
 int WPX;//物品选择
 int W;//物品循环5次显示
 int Z;//物品13次循环?
 int X;//大厅的物品输入
 int i,n=0; //循环
 for(n=1;n<=12;n++)

 WP.WP[n]=0;
DT:cout<<"****************本游戏仅供娱乐******************************"<<endl;
 cout<<"--大厅"<<endl;
 cout<<"--怪物森林<G>--天堂<T>--商店<S>--物品<W>--个人状态<O>"<<endl;
 cin>>DTE;
 if(DTE=='W')
 {system("cls");
 cout<<"*--------------------------------------------------*"<<endl;
 for(W=1;W<=5;W++)
 {
  for(Z=1;Z<=12;Z++) 
  {
  if(ZJ.B[W]==WP.WPM[Z])
  cout<<"--<"<<W<<">"<<ZJ.B[W]<<"("<<WP.WP[Z]<<")"<<endl;
  }
 }
 cout<<"--<0>返回"<<endl;
 cout<<"*--------------------------------------------------*"<<endl;
 cin>>X;
 if(X==0)goto DT;
 for(Z=1;Z<=12;Z++)
 {
  if(ZJ.B[X]==WP.WPM[Z])
  {
   if(Z>0 && Z<3)
   {
   ZJ.HP+=WP.WPZ[Z];
   if(ZJ.HP>ZJ.ALL_HP)
   ZJ.HP=ZJ.ALL_HP;
   WP.WP[Z]--;
   }
   if(Z>2 && Z<5)
   {
   ZJ.MP+=WP.WPZ[Z];
   if(ZJ.MP>ZJ.ALL_MP)
   ZJ.MP=ZJ.ALL_MP;
   WP.WP[Z]--;
   }
   if(Z>4 && Z<7)
   {
   ZJ.HP+=WP.WPZ[Z];
   ZJ.MP+=WP.WPZ[Z];
   if(ZJ.MP>ZJ.ALL_MP)
   ZJ.MP=ZJ.ALL_MP;
   if(ZJ.HP>ZJ.ALL_HP)
   ZJ.HP=ZJ.ALL_HP;
   WP.WP[Z]--;
   }
   if(Z>6 && Z<10)
   {
    for(n=1;n<=12;n++)
    {
    if(ZJ.ZB[1]==WP.WPM[n])
    ZJ.AT-=WP.WPZ[n];break;
    }
    ZJ.AT+=WP.WPZ[Z];
    ZJ.ZB[1]=WP.WPM[Z];
    cout<<"已经装备此物品"<<endl;
    WP.WP[Z]--;
   }
   if(Z>9 && Z<13)
   {
    for(n=1;n<=12;n++)
    {
    if(ZJ.ZB[1]==WP.WPM[n])
    ZJ.FY-=WP.WPZ[n];break;
    }
   ZJ.FY+=WP.WPZ[Z];
   ZJ.ZB[2]=WP.WPM[Z];
   cout<<"已经装备此物品"<<endl;
   WP.WP[Z]--;
   }
   if(WP.WP[Z]==0)
   ZJ.B[X]="空";
   goto DT;
   }
  }
 }
 
 if(DTE=='S')
 {
  system("cls");
 WP.XS();
 cout<<"金钱:"<<ZJ.RMB<<endl;
 cout<<"购买:";
 cin>>SP;
 if(SP==0)goto DT;
 if(ZJ.RMB>=WP.WPR[SP])
 {
  for(i=1;i<=5;i++)
  {
   if(ZJ.B[i]==WP.WPM[SP])
   {
   cout<<"购买"<<WP.WPM[SP]<<"成功!"<<endl;
   WP.WP[SP]++;
   goto DT;
   }
   if(ZJ.B[i]=="空")
   {
   cout<<"购买"<<WP.WPM[SP]<<"成功!"<<endl;
   WP.WP[SP]=1;
   ZJ.RMB-=WP.WPR[SP];
   ZJ.B[i]=WP.WPM[SP];
   cout<<"返回大厅"<<endl;
   goto DT;
   }
   
  }
  for(i=1;i<=5;i++)
  if(ZJ.B[i]!="空" && ZJ.B[i]!=WP.WPM[SP])
  {
    cout<<"你的包已经满了"<<endl;
    goto DT;
  }
  
 
 
 }
 
 if(ZJ.RMB<=WP.WPR[SP])
 {
  system("cls");
  cout<<"你的金钱不够..."<<endl;
  cout<<"返回大厅"<<endl;
  goto DT;
 }
 
 
 
 
 }
 if(DTE=='G' && ZJ.HP==0){cout<<"死了还敢来,快去复活吧!"<<endl;goto DT;}
 if(DTE=='G' && ZJ.HP!=0)
 { 
GWSL:cout<<"--初级怪物区<1>"<<"--中级怪物区<2>"<<"--高级怪物区<3>--"<<"返回大厅<0>"<<endl;
  cin>>G;
  if(G==0) goto DT;
  GW.ALL_HP=GW.HP=60*G;
  GW.AT=10*G;
  GW.RMB=10*G;
  GW.EXP=7*G;
 

  ZD:cout<<"*--------------------------------------------------*"<<endl;
  
  cout<<"     怪物HP:"<<GW.HP<<"/"<<GW.ALL_HP<<"           ";
  
  cout<<"人物HP:"<<ZJ.HP<<"/"<<ZJ.ALL_HP<<endl;
 
  cout<<"                        |       ";
  cout<<"SP:"<<ZJ.MP<<"/"<<ZJ.ALL_MP<<endl;

  cout<<"*--------------------------------------------------*"<<endl;
  if(GW.HP==0 || GW.HP<0)
  {
   ZJ.EXP+=GW.EXP;
   ZJ.RMB+=GW.RMB;
   cout<<"怪物死亡!"<<endl;
   cout<<"增加"<<GW.EXP<<"点经验值."<<endl;
   cout<<"增加"<<GW.RMB<<"金钱."<<endl;
   
   if(ZJ.EXP==ZJ.ALL_EXP || ZJ.EXP>ZJ.ALL_EXP)
   {
    ZJ.LV++;
    ZJ.ALL_EXP+=ZJ.EXP;
    ZJ.EXP=0;
    ZJ.AT+=ZJ.LV;
    ZJ.FY+=ZJ.LV;
    ZJ.ALL_HP=ZJ.ALL_HP+ZJ.LV*10;
    ZJ.ALL_MP=ZJ.ALL_MP+ZJ.LV*5;
    cout<<"恭喜您升级!"<<endl;
    cout<<"生命值上限增加"<<ZJ.LV*10<<endl;
    cout<<"魔法值上限增加"<<ZJ.LV*5<<endl;
       cout<<"攻击力增加"<<ZJ.LV<<endl;
    cout<<"防御增加"<<ZJ.LV<<endl;
   }
   cout<<"返回怪物森林..."<<endl;
   GW.ALL_HP=60;
   goto GWSL;
  }
  if(ZJ.HP<0 || ZJ.HP==0)
  {
   cout<<"恭喜您已经被怪物削死!"<<endl;
   cout<<"你可以去到<天堂>花金钱复活."<<endl;
   ZJ.MP=ZJ.HP=0;
   GW.ALL_HP=60;
   goto DT;
  
  }
  cout<<"--攻击<1>--技能<2>--物品<3>--逃跑<0>"<<endl;
  cin>>E;
  switch(E)
  {
   case 1:
    GW.HP-=ZJ.AT;
    ZJ.HP=ZJ.HP-(GW.AT-ZJ.FY);system("cls");
   goto ZD;
   case 2:
    cout<<"--白菜<1>--鸡蛋<2>--大哥<3>--返回<0>"<<endl;
    cin>>JN;
    if(ZJ.MP>=ZJ.JN[JN])
    {
     if(JN==1){system("cls");
     cout<<"掏出几棵大白菜砸向怪物,怪物因此被你削掉"<<ZJ.JN[JN]*JN<<"点生命值."<<endl;}
     if(JN==2){system("cls");
     cout<<"刚偷来的鸡蛋砸向怪物,怪物因此被你削掉"<<ZJ.JN[JN]*JN<<"点生命值."<<endl;}
     if(JN==3){system("cls");
     cout<<"大哥叫了几个百个小弟er给怪物这顿揍...#$%^&*怪物因此被你几百个小弟er削掉"<<ZJ.JN[JN]*JN<<"点生命值."<<endl;}
     ZJ.MP-=ZJ.JN[JN];
     GW.HP=GW.HP-ZJ.JN[JN]*JN;
     ZJ.HP=ZJ.HP-(GW.AT-ZJ.FY);
     goto ZD;
    }
    if(ZJ.MP<ZJ.JN[JN])
    {
     system("cls");
     cout<<"没有足够的魔法值."<<endl;
     
     goto ZD;
    }
    if(JN==0)goto ZD;
   case 3:
   system("cls");
   cout<<"*--------------------------------------------------*"<<endl;
   for(W=1;W<=5;W++)
   {
    for(Z=1;Z<=12;Z++) 
    {
    if(ZJ.B[W]==WP.WPM[Z])
    cout<<"--<"<<W<<">"<<ZJ.B[W]<<"("<<WP.WP[Z]<<")"<<endl;
    }
   }
   cout<<"--<0>返回"<<endl;
   cout<<"*--------------------------------------------------*"<<endl;
   cin>>WPX;
   if(WPX==0)goto ZD;
   for(Z=1;Z<=12;Z++)
   {
    if(ZJ.B[WPX]==WP.WPM[Z])
    {
     if(Z>0 && Z<3)
     {
     ZJ.HP+=WP.WPZ[Z];
     if(ZJ.HP>ZJ.ALL_HP)
     ZJ.HP=ZJ.ALL_HP;
     WP.WP[Z]--;
     }
     if(Z>2 && Z<5)
     {
     ZJ.MP+=WP.WPZ[Z];
     if(ZJ.MP>ZJ.ALL_MP)
     ZJ.MP=ZJ.ALL_MP;
     WP.WP[Z]--;
     }
     if(Z>4 && Z<7)
     {
     ZJ.HP+=WP.WPZ[Z];
     ZJ.MP+=WP.WPZ[Z];
     if(ZJ.MP>ZJ.ALL_MP)
     ZJ.MP=ZJ.ALL_MP;
     if(ZJ.HP>ZJ.ALL_HP)
     ZJ.HP=ZJ.ALL_HP;
     WP.WP[Z]--;
     }
     if(Z>6 && Z<10)
     {
      for(n=1;n<=12;n++)
      {
       if(ZJ.ZB[1]==WP.WPM[n])
       ZJ.AT-=WP.WPZ[n];break;
      }
     ZJ.AT+=WP.WPZ[Z];
     ZJ.ZB[1]=WP.WPM[Z];
     cout<<"已经装备此物品"<<endl;
     WP.WP[Z]--;
     }
     if(Z>9 && Z<13)
     {
      for(n=1;n<=12;n++)
      {
       if(ZJ.ZB[1]==WP.WPM[n])
       ZJ.FY-=WP.WPZ[n];break;
      }
     ZJ.FY+=WP.WPZ[Z];
     ZJ.ZB[2]=WP.WPM[Z];
     cout<<"已经装备此物品"<<endl;
     WP.WP[Z]--;
     }
     if(WP.WP[Z]==0)
     ZJ.B[WPX]="空";
     goto ZD;
    }
    
   }
   goto ZD;
   case 0:
   cout<<"逃往大厅..."<<endl;
   GW.ALL_HP=60;
   goto DT;
  };
 }
 if(DTE=='T' && ZJ.HP==0 && ZJ.RMB>0)
 {
 cout<<"超人:"<<endl;
 cout<<"花费你现有金钱一半才能复活,山炮!"<<endl;
 cout<<"现有金钱:"<<ZJ.RMB<<endl;
 cout<<"--是<Y>"<<endl;
 cin>>DIE;
 if(DIE=='Y')
 {
   ZJ.HP=ZJ.ALL_HP;
   ZJ.MP=ZJ.ALL_MP;
   ZJ.RMB-=ZJ.RMB/2;
   cout<<"已经复活,返回大厅..."<<endl;
   GW.ALL_HP=60;
   goto DT;
 }
 }
 if(DTE=='T' && ZJ.HP!=0)
 { system("cls");
  cout<<"超人:"<<endl;
  cout<<"你没死呢~"<<endl;
  cout<<"你想找死吖`山炮...@#$%^&**%^# Out!`` "<<endl;
  GW.ALL_HP=60;
  goto DT;
 }
 if(DTE=='T' && ZJ.HP==0 && ZJ.RMB<=0)
 {cout<<"你现有金钱为:"<<ZJ.RMB<<endl;
 cout<<"你可以结束游戏了..."<<endl;
 goto bye;}
 if(DTE=='O')
 {
  system("cls");
  cout<<"*******************************************************"<<endl;
  cout<<"等级:"<<ZJ.LV<<endl;
  cout<<"生命值:"<<ZJ.HP<<"/"<<ZJ.ALL_HP<<endl;
  cout<<"精神力:"<<ZJ.MP<<"/"<<ZJ.ALL_MP<<endl;
  cout<<"攻击:"<<ZJ.AT<<"                    武器:"<<ZJ.ZB[1]<<endl;
  cout<<"防御:"<<ZJ.FY<<"                     盔甲:"<<ZJ.ZB[2]<<endl;
  cout<<"经验值:"<<ZJ.EXP<<"/"<<ZJ.ALL_EXP<<endl;
  cout<<"金钱:"<<ZJ.RMB<<endl;
  cout<<"技能:白菜(说明:消耗20点魔法,可以削掉怪物20点生命值)"<<endl;
  cout<<"     鸡蛋(说明:消耗40点魔法,可以削掉怪物80点生命值)"<<endl;
  cout<<"     板砖(说明:消耗60点魔法,可以削掉怪物180点生命值)"<<endl;
  GW.ALL_HP=60;
  goto DT;
  
 }
 
bye:return 0;
}




//guaiwu.h


#ifndef GUAIWU_H
#define GUAIWU_H

class guaiwu
{
public:
 int  LV;      //等级
 int HP,ALL_HP;       //生命和总共生命值
 int AT;         //攻击

 int EXP;    //经验值和总共经验值
 int RMB;      //金钱
 guaiwu();
};
#endif


//guaiwu.cpp
#include "guaiwu.h"


guaiwu::guaiwu()
{
LV=1;
HP=60,ALL_HP=60;
AT=10;
RMB=10;
EXP=7;
}



//shangdian.cpp
#include "shangdian.h"
#include <iostream.h>

shangdian::XS()

 cout<<"********************道具******************************"<<endl;
 cout<<"*<1>矿泉水(增加50点HP)                   $:  35.00  *"<<endl;
 cout<<"*<2>哈啤(增加100点HP)                    $:  80.00  *"<<endl;
 cout<<"*<3>娃哈哈(增加40点MP)                   $:  30.00  *"<<endl;
 cout<<"*<4>二锅头(增加120点MP)                  $:  90.00  *"<<endl;
 cout<<"*<5>可口可乐(增加MP和HP各100点)          $: 180.00  *"<<endl;
 cout<<"*<6>百事可乐(增加MP和HP各200点)          $: 300.00  *"<<endl;
 cout<<"*****************武器和盔甲***************************"<<endl;
 cout<<"*<7>擀面杖(增加10攻击力)                 $: 150.00  *"<<endl;
 cout<<"*<8>锄头(增加35攻击力)                   $: 450.00  *"<<endl;
 cout<<"*<9>菜刀(增加80攻击力)                   $:1000.00  *"<<endl;
 cout<<"*<10>睡衣(增加2防御)                     $: 130.00  *"<<endl;
 cout<<"*<11>森马(增加8防御)                     $: 300.00  *"<<endl;
 cout<<"*<12>adidas(增加20防御)                  $:1000.00  *"<<endl;
 cout<<"*<0>返回大厅                                         *"<<endl;
 cout<<"******************************************************"<<endl;

}

shangdian::shangdian()
{
 WPM[1]="矿泉水";
 WPM[2]="哈啤";
 WPM[3]="娃哈哈";
 WPM[4]="二锅头";
 WPM[5]="可口可乐";
 WPM[6]="百事可乐";
 WPM[7]="擀面杖";
 WPM[8]="锄头";
 WPM[9]="菜刀";
 WPM[10]="睡衣";
 WPM[11]="森马";
 WPM[12]="adidas";
 WPZ[1]=50;
 WPZ[2]=100;
 WPZ[3]=40;
 WPZ[4]=120;
 WPZ[5]=100;
 WPZ[6]=200;
 WPZ[7]=10;
 WPZ[8]=35;
 WPZ[9]=80;
 WPZ[10]=2;
 WPZ[11]=8;
 WPZ[12]=20;
 WPR[1]=35;
 WPR[2]=80;
 WPR[3]=30;
 WPR[4]=90;
 WPR[5]=180;
 WPR[6]=300;
 WPR[7]=150;
 WPR[8]=450;
 WPR[9]=1000;
 WPR[10]=130;
 WPR[11]=300;
 WPR[12]=1000;
}



//shangdian.h
#ifndef SHANGDIAN_H
#define SHANGDIAN_H

class shangdian
{
public:
 char *WPM[13];//物品名
 int WPZ[13];//物品加什么?
 int WPR[13];//物品多少钱>
 int WP[13];//几个物品?
 XS();
 shangdian();
};




//zhujiao.cpp
#include "zhujiao.h"

zhujiao::zhujiao()
{
 LV=1;
 HP=160;ALL_HP=160;
 MP=80;ALL_MP=80;
 AT=13;
 FY=7;
 EXP=0;ALL_EXP=30*LV;
 RMB=0;
 JN[0]=0;
 JN[1]=20;
 JN[2]=40;
 JN[3]=60;
 B[0]="空";
 B[1]="空";
 B[2]="空";
 B[3]="空";
 B[4]="空";
 B[5]="空";
 ZB[0]="空";
 ZB[1]="(空)";
 ZB[2]="(空)";
}

#endif



//zhujiao.h


#ifndef ZHUJIAO_H
#define ZHUJIAO_H
//-------------------------------------初始化人物和怪物-------------------------------------------------
class zhujiao
{
public:
 int  LV;      //等级
 long HP,ALL_HP;     //生命和总共生命值
 long  MP,ALL_MP;     //魔法和总共魔法值
 long AT;         //攻击
 long FY;      //防御力
 long EXP,ALL_EXP;    //经验值和总共经验值
 long RMB;      //金钱
 int  JN[4];     //技能需要精神力
 char *B[6];  //物品
 char *ZB[3]; //装备
 zhujiao();

};

#endif