奥特曼打怪兽的C++程序

奥特曼类的方法说明:
1.为每个属性设置get方法。
2.初始化方法将一次性初始化各个属性的取值。(等级从1开始,生命值为10,攻击力为1,经验值为0,拥有的钱数为0)
3.逃跑将损失1点生命值。
4.攻击将使对方受到自身攻击力大小的伤害,但对方也会采取反击,导致自己受到攻击。同时,如果对方所剩下的钱数为奇数,可抢夺对方一个钱财。另外,每攻击一次,可增加一点经验值。
5.受到攻击时,将受到攻击方攻击力值二分之一大小的伤害(即损失相应的生命值)。即:受到伤害点数=攻击方攻击力值/2。
6.如果赢得了战斗,将获得攻击方所有经验值。如果对方身上还有钱财,将全部抢得。
7.如果体力不支,可以用钱恢复一些生命值。每10个钱可恢复1点生命值。只要有足够的钱,可以一直恢复,直到达到生命值上限(等级值的10倍)。
8.如果达到升级条件,可以升级。每次升级需要有等级值的10倍的经验值。每次升级所使用的经验值都将被扣除,不可重复用于下次升级。升级将提高生命值上限至新等级值的10倍,生命值将恢复为满血状态,并提升战斗力为新等级值。

怪兽类的方法说明:
1.为每个属性设置get方法。
2.怪兽的初始属性值将随机生成(注意在程序开头包括此处用到两个库:和)。该方法已实现如下:
void setX(){
srand(time(NULL));
rank=rand()%10+1;
hp=(rand()%rank+1)*5;
exp=rand()%rank+1;
damage=rand()%rank+1;
money=rand()%rank+1;
}
3.受到攻击时,将受到攻击方攻击力值大小的伤害(即损失相应的生命值)。即:受到伤害点数=攻击方攻击力值。
同时,如果所剩下的钱数为奇数,会被攻击方抢走一个钱财。
受到攻击可以反击,将使对方受到自身攻击力二分之一大小的伤害。

完善main函数,用户输入不同的整数,可以选择相应的功能:打怪1,逃跑2,补血3,结束4.

上述要求怎么解决两个类的相互引用,具体就是互相攻击的时候,被攻击方的生命值怎么引用另一个类的攻击值来减生命值
哪位大神求解求解

https://zhidao.baidu.com/question/401887341.html

//我自己看的都想笑
include<bits/stdc++.h>
#include<windows.h>
void wuqidian();//武器店
void yaopindian();//药品店
// {
void maoxian();//冒险
void daguai();//大怪
void xiaoguai();//小怪
void BOOS(); //boos
void ziliao();
// }

void zhuangtai();//状态 

//}

int shengming=1000,shanghai=50,fangyu=10,jinbi=200,jijiubao=0,jingyan=100;//主角资料

int xhp,xsh,xjb,xdj,xfy;//小怪

int dhp,dsh,djb,ddj,dfy;//大怪

int boosHP,boosSH,boosfy;//BOOS

using namespace std;
int main()
{
system("cls");
system("color fc");
int i=0,n=0,l=1;
while (l)
{
cout<<" [奥特曼]\n";
cout<<"-------------------------------------------------------------------------------\n" ;
cout<<"输入 1 冒险"<<endl;
cout<<"输入 2 武器店"<<endl;
cout<<"输入 3 药品店"<<endl;
cout<<"输入 4 自己状态"<<endl;
cout<<"输入 5 查看游戏资料"<<endl;
cout<<"输入 0 结束游戏"<<endl;
cin>>l;
switch(l)
{
case 1:
cout<<"-------------------------------------------------------------------------------\n" ;
maoxian();
cout<<"-------------------------------------------------------------------------------\n" ;
break;
case 2:
cout<<"-------------------------------------------------------------------------------\n" ;
wuqidian();
cout<<"-------------------------------------------------------------------------------\n" ;
break;
case 3:
cout<<"-------------------------------------------------------------------------------\n" ;
yaopindian();
cout<<"-------------------------------------------------------------------------------\n" ;
break;
case 4:
cout<<"-------------------------------------------------------------------------------\n" ;
zhuangtai();
cout<<"-------------------------------------------------------------------------------\n" ;
break;
case 5:
cout<<"-------------------------------------------------------------------------------\n" ;
ziliao();
cout<<"-------------------------------------------------------------------------------\n" ;
break;
case 0:
break;
default:
cout<<"不要乱输入"<<endl;
}
}
}

void maoxian()
{
int i=0,n=0,l=1;
while(l)
{
cout<<"输入 1 打小怪(15级)"<<endl;
cout<<"输入 2 打大怪(5
10级)"<<endl;
cout<<"输入 3 打BOOS(15级)"<<endl;
cout<<"输入 0 返回小镇"<<endl;
cin>>l;
switch(l)
{
case 1:
cout<<"-------------------------------------------------------------------------------\n" ;
xiaoguai();
if(shengming<=0)
{
break;
}
cout<<"-------------------------------------------------------------------------------\n" ;
break;
case 2:
cout<<"-------------------------------------------------------------------------------\n" ;
if(jingyan/100<5)
{
cout<<"等级过低"<<endl;
cout<<"-------------------------------------------------------------------------------\n" ;
break;
}
daguai();
if(shengming<=0)
{
break;

            }
            cout<<"-------------------------------------------------------------------------------\n" ;
        break;
        case 3:
            cout<<"-------------------------------------------------------------------------------\n" ;
            if(jingyan/100<10)
            {
                cout<<"等级过低"<<endl;
                cout<<"-------------------------------------------------------------------------------\n" ; 
                break;
            } 
            cout<<"-------------------------------------------------------------------------------\n" ;
            BOOS();
            if(shengming<=0)
            {
                Sleep(1000);
                break;
            }
            if(boosHP==0)
            {
                break;                
            }
             
            cout<<"-------------------------------------------------------------------------------\n" ;
        case 0:
            break; 
        default:
        cout<<"不要乱输入"<<endl;    
        cout<<"-------------------------------------------------------------------------------\n" ; 
    } 

} 

}
void zhuangtai()
{
cout<<"你的生命为:"<<shengming<<endl;
cout<<"你的金币为:"<<"$"<<jinbi<<endl;
cout<<"你的防御为:"<<fangyu<<endl;
cout<<"你的伤害为:"<<shanghai<<endl;
cout<<"你的经验为(100经验=1级):"<<jingyan<<endl;
cout<<"你的等级为:"<<jingyan/100<<endl;
}
void xiaoguai()
{
if(shengming<=0)
{
return xiaoguai();
}
int i=1,n=0,l=1,taopao,cg;
char r,w;
srand(static_cast(time(0))) ;
int randomNumber=rand();
xdj=(randomNumber% 5)+1;
cg=(randomNumber% 5)+1;
xhp=xdj100;
xsh=xdj
20;
xjb=xdj10;
xfy=xdj
5;
cout<<"你面对的是"<<xdj<<"级小怪,是否迎战(y/n)"<<endl;
cin>>r;
if(r=='y')
{
while(shengming>0&&xhp>0&&l!=123&&i<=15)
{
cout<<"第"<<i<<"回合"<<endl;
cout<<"你的生命:"<<shengming<<endl;
cout<<"小怪生命:"<<xhp<<endl;
cout<<"输入1攻击(造成攻击(你的伤害-怪的伤害),防御减半)"<<endl;
cout<<"输入2防御(不造成攻击,防御*2)"<<endl;
cout<<"输入3使用技能(此功能将在小镇2.0开启,敬请期待)"<<endl;
cout<<"输入4逃跑(20%几率,逃跑失败也要减少血(无视防御),实在打不过撑过15回合自动结束)"<<endl;
taopao=(randomNumber% 5)+1;

        cin>>l;
        switch(l)
        {
            case 1:
                if((fangyu/2)<xsh)
                {
                    shengming-=xsh-fangyu/2; 
                } 
                if(shanghai>xfy ) 
                {
                    xhp-=shanghai-xfy; 
                } 
                i++; 
            break; 
            case 2: 
                if(fangyu*2<xsh)
                {
                    shengming-=xsh-fangyu*2; 
                } 
                i++; 
            break;
            case 3:
                cout<<"敬请期待....\n";
            break;
            case 4:
                if(taopao=1)
                {
                    cout<<"逃跑成功!!!"<<endl; 
                    l=123;
                } 
            
            break; 
        } 
        
    }
    if(shengming<=0)
    {
        cout<<"你死了"<<endl;
        Sleep(1000);
        return xiaoguai(); 
    }
    if(xhp<=0)
    {
        cout<<"你打败了"<<xdj<<"级小怪"<<endl;
        cout<<"奖励金币"<<xjb<<"$"<<endl;
        jinbi+=xjb; 
        cout<<"奖励经验"<<xdj*10<<endl;
        jingyan+=xdj*10; 
    }

}
else
{
    cout<<"你已逃跑"<<endl; 
} 

}
void daguai()
{
if(shengming<=0)
{
return daguai();
}
int i=1,n=0,l=1,taopao,cg;
char r,w;
srand(static_cast(time(0))) ;
int randomNumber=rand();
ddj=(randomNumber% 5)+6;
dhp=ddj100;
dsh=ddj
20;
djb=ddj10;
dfy=ddj
5;
cout<<"你面对的是"<<ddj<<"级大怪,是否迎战(y/n)"<<endl;
cin>>r;
if(r=='y')
{
while(shengming>0&&dhp>0&&l!=123&&i<=20)
{
cout<<"第"<<i<<"回合"<<endl;
cout<<"你的生命:"<<shengming<<endl;
cout<<"大怪生命:"<<dhp<<endl;
cout<<"输入1攻击(造成攻击(你的伤害-怪的伤害),防御减半)"<<endl;
cout<<"输入2防御(不造成攻击,防御2)"<<endl;
cout<<"输入3使用技能(此功能将在小镇2.0开启,敬请期待)"<<endl;
cout<<"输入4逃跑(20%几率,逃跑失败也要减少血(无视防御),实在打不过撑过20回合自动结束)"<<endl;
taopao=(randomNumber% 5)+1;
cin>>l;
switch(l)
{
case 1:
if((fangyu/2)<dsh)
{
shengming-=dsh-fangyu/2;
}
if(shanghai>dfy )
{
dhp-=shanghai-xfy;
}
i++;
break;
case 2:
if(fangyu
2<dsh)
{
shengming-=dsh-fangyu*2;
}
i++;
break;
case 3:
cout<<"敬请期待....\n";
break;
case 4:
if(taopao=3)
{
cout<<"逃跑成功!!!"<<endl;
l=123;
}

            break; 
        } 
        
    }
    if(shengming<=0)
    {
        cout<<"你死了"<<endl;
        Sleep(1000);
        return daguai(); 
         
    }
    if(dhp<=0)
    {
        cout<<"你打败了"<<ddj<<"级大怪"<<endl;
        cout<<"奖励金币"<<djb<<"$"<<endl;
        cout<<"奖励经验"<<ddj*10<<endl;
        jinbi+=djb; 
        jingyan+=ddj*10; 
        
    
    }
    

}
else
{
    cout<<"你已逃跑"<<endl; 
}     

}
void BOOS()
{

int i=1,n=0,l=1,taopao,cg;
srand(static_cast<unsigned  int >(time(0))) ; 
int randomNumber=rand(); 
boosHP=5000;
boosSH=700;
boosfy=500;
cout<<"你面对的是"<<"BOOS"<<endl;

while(shengming>0&&boosHP>0&&l!=123&&i<=30)
{
    cout<<"第"<<i<<"回合"<<endl;
    cout<<"你的生命:"<<shengming<<endl;
    cout<<"BOOS生命:"<<boosHP<<endl;
    cout<<"输入1攻击(造成攻击(你的伤害-怪的伤害),防御减半)"<<endl;
    cout<<"输入2防御(不造成攻击,防御*2)"<<endl; 
    cout<<"输入3使用技能(敬请期待)"<<endl;
    cout<<"输入4逃跑(10%几率,逃跑失败也要减少血(无视防御),实在打不过撑过30回合自动结束)"<<endl; 
    taopao=(randomNumber%10)+1;
    cin>>l;
    switch(l)
    {
        case 1:
            if((fangyu/2)<boosSH)
            {
                shengming-=boosSH-fangyu/2; 
            } 
            if(shanghai>boosfy ) 
            {
                boosHP-=shanghai-boosfy; 
            } 
            i++; 
        break; 
        case 2: 
            if(fangyu*2<boosSH)
            {
                shengming-=boosSH-fangyu*2; 
            } 
            i++; 
        break;
        case 3:
            cout<<"敬请期待....\n";
        break;
        case 4:
            if(taopao=1)
            {
                cout<<"逃跑成功!!!"<<endl; 
                l=123;
            } 
            
        break; 
    } 
    
}
if(shengming<=0)
{
    cout<<"你死了"<<endl;
    Sleep(1000);
    return BOOS(); 
     
}
if(boosHP<=0)
{
    cout<<"你打败了BOOS"<<endl;
    boosHP=0; 
}

}
void wuqidian()
{
int i=1,n=0,l=1;
char w,r;
while(l)
{ cout<<"武器店规则:伤害不能叠加!!!,例如:假如你目前伤害50 ,购买匕首后,伤害不会+20,而是替换成20"<<endl;
cout<<"你目前伤害:"<<shanghai<<"目前防御:"<<fangyu<<endl;
Sleep(250);
cout<<"欢迎来到 武器店!"<<endl;
cout<<"1、买匕首($10加40攻击力)"<<endl;
cout<<"2、买巨剑($50加60攻击力)"<<endl;
cout<<"3、买光刃($100加120攻击力)"<<endl;
cout<<"4、买X光刃($150加180攻击力)"<<endl;
cout<<"5、买变身器($200加100防御力)"<<endl;
cout<<"6、买机甲($500加200防御力)"<<endl;
cout<<"0、离开武器店"<<endl;
cin>> l;
switch(l)
{
case 1 :
if(jinbi<10)
{
cout<<"你的钱不够"<<endl;
break;
}
else
{
cout<<"购买成功!"<<endl;//钱足够时返回True
shanghai=40;
jinbi-=10;
cout<<"你的伤害现在为"<<shanghai;
cout<<"-------------------------------------------------------------------------------\n" ;
break;
}
case 2 :
if(jinbi<50)
{
cout<<"你的钱不够"<<endl;//钱不够时返回Flase
break;
}
else
{
cout<<"购买成功!"<<endl;
shanghai=60;
jinbi-=50;
cout<<"你的伤害现在为"<<shanghai;
cout<<"-------------------------------------------------------------------------------\n" ;
break;
}

        case 3 : 
            if(jinbi<100) 
            {
                cout<<"你的钱不够"<<endl;//钱不够时返回Flase 
                 break;
            }
            else 
            
            {
                cout<<"购买成功!"<<endl; 
                shanghai=120; 
                jinbi-=100; 
                cout<<"你的伤害现在为"<<shanghai;
                cout<<"-------------------------------------------------------------------------------\n" ;  
                break; 
            } 
            
        case 4 :
            if(jinbi<150) 
            {
                cout<<"你的钱不够"<<endl;//钱不够时返回Flase 
                break;
            }
            else
            {
                cout<<"购买成功!"<<endl; 
                shanghai=180; 
                jinbi-=150; 
                cout<<"你的伤害现在为"<<shanghai; 
                cout<<"-------------------------------------------------------------------------------\n" ; 
                break; 
            }  
            
        case 5 : 
            if(jinbi<200) 
            {
                cout<<"你的钱不够"<<endl;//钱不够时返回Flase 
                 break;
            }
            else
            {
                cout<<"购买成功!"<<endl; 
                fangyu=100; 
                jinbi-=200; 
                cout<<"你的防御现在为"<<fangyu; 
                cout<<"-------------------------------------------------------------------------------\n" ;  
                break; 
            }  
            
        case 6: 
            if(jinbi<500) 
            {
                cout<<"你的钱不够"<<endl;//钱不够时返回Flase 
                break;
            }
            else 
            {
                fangyu=200; 
                jinbi-=500; 
                cout<<"你的防御现在为"<<fangyu; 
                cout<<"-------------------------------------------------------------------------------\n" ;  
                break; 
            } 
        case 0:
            break;
             
        default: 
            cout<<"看清楚"<<endl; 
            break; 
    }  

}

}
void yaopindian()
{
int i=1,n=0,l=1;
char w,r;
while(l)
{
cout<<"欢迎来到 药店!"<<endl;
cout<<"1、 药水(小)($50加50血)"<<endl;
cout<<"2、 药水($100加100血)"<<endl;
cout<<"3、 药水(大)($150加200血)"<<endl;
cout<<"4、 好药水 ($200加300血)"<<endl;
cout<<"5、 优质药水($500加300血,50点防御)"<<endl;
cout<<"6、 神圣药水($700加400血,50点防御,100点攻击(+100))"<<endl;
cout<<"0、离开药品店"<<endl;
cin>> l;
switch(l)
{
case 1 :
if(jinbi<50)
{
cout<<"你的钱不够"<<endl;
break;
}
else
{
cout<<"购买成功!"<<endl;
shengming+=50;
jinbi-=50;
break;
}
case 2 :
if(jinbi<100)
{
cout<<"你的钱不够"<<endl;
break;
}
else
{
cout<<"购买成功!"<<endl;
shengming+=100;
jinbi-=100;
break;
}

        case 3 : 
            if(jinbi<150) 
            {
                cout<<"你的钱不够"<<endl;
                 break;
            }
            else 
            
            {
                cout<<"购买成功!"<<endl; 
                shengming+=200; 
                jinbi-=150; 
                break; 
            } 
            
        case 4 :
            if(jinbi<200) 
            {
                cout<<"你的钱不够"<<endl;
                break;
            }
            else
            {
                cout<<"购买成功!"<<endl; 
                shengming+=300; 
                jinbi-=200; 
                break; 
            }  
            
        case 5 : 
            if(jinbi<500) 
            {
                cout<<"你的钱不够"<<endl;
                 break;
            }
            else
            {
                cout<<"购买成功!"<<endl; 
                shengming+=300; 
                fangyu+=50; 
                jinbi-=500; 
                
                 
                break; 
            }  
            
        case 6: 
            if(jinbi<700) 
            {
                cout<<"你的钱不够"<<endl; 
                break;
            }
            else 
            {
                shengming+=400; 
                fangyu+=50; 
                jinbi-=700; 
                
                 
                break; 
            } 
        case 0:
            break;
             
        default: 
            cout<<"看清楚"<<endl; 
            break; 
    }  
}

}
void ziliao()
{
cout<<"奥特曼打怪兽 目标:击败BOOS"<<endl;
}