初学Qt Creator实现简易版 猫狗大战

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_24880087/article/details/52387789

实训第一天,初识Qt编辑代码。

打开Qt 新建test文件取名 monster

1.main函数

#include"monster.h"

/**
 * 猫狗大战实现流程:
 *  1.设计猫类和狗类
 *class Monster{
 *   姓名m_stName
 *   生命值 m_iHp
 *   攻击力 m_iAp
 *   防御力 m_iDp
 *   攻击attack()计算伤害
 *   战斗fight()回合制攻击
 *   }
 *class Cat: public Monster
 *class Dog: pbulic Monster
 *
 */

int main()
{
    //创建怪物
    Cat c("DingDangCat",850,50,110);
    Dog d("GaoFei",1120,80,200);
      //显示怪物战斗

   c.fight(d);//1 attack 2
    return 0;
}

2.monster.h中实现猫狗定义代码

#ifndef MONSTER_H
#define MONSTER_H

#include<windows.h>
#include<iostream>
using namespace std;

/**
 * @brief The Monster class
 */
class Monster
{
    string m_szName;//名  称
    int m_iHP;      //生命值
    int m_iAP;      //攻击力
    int m_iDP;      //防御力

public:
    Monster(string szName,
            int iHP,
            int iAP,
            int iDP);

    string getName()const{return m_szName;}
    int getHP()const{return m_iHP;}
    int getAP()const{return m_iAP;}
    int getDP()const{return m_iDP;}

    void setHP(int iHP){m_iHP = iHP;}

    //1.显示方法
    void show();
    //2.攻击方法
    virtual void attack(Monster &m) =0;
    //3.战斗方法
    void fight(Monster &m);
};

class Cat:public Monster
{


    public:
        Cat(string m_szName,
            int m_iHP,
            int m_iAP,
            int m_iDP);


        void attack(Monster &m);
};

class Dog:public Monster
{


    public:
        Dog(string m_szName,
            int m_iHP,
            int m_iAP,
            int m_iDP);


        void attack(Monster &m);
};

#endif // MONSTER_H

3.monster.cpp中实现猫狗攻击方法

#include "monster.h"

//=========Monster
Monster::Monster(string szName,int iHP,int iAP,int iDP):
    m_szName(szName),
    m_iHP(iHP),
    m_iAP(iAP),
    m_iDP(iDP)
{}
//1.察看属性
void Monster::show()
{
    cout<<"===Monster Property\n";
    cout<<"  name:"<<m_szName<<endl;
    cout<<"  HP:"<<m_iHP<<endl;
    cout<<"  AP:"<<m_iAP<<endl;
    cout<<"  DP:"<<m_iDP<<endl;
    cout<<"============================\n";
    return ;
}
//2.攻击方法
/*void Monster::attack(Monster &m)
{
    //1.计算伤害值
    int iHurt = 0;
    iHurt = 4*m_iAP -m.m_iDP+3;
    if(iHurt<1)//伤害保护
        iHurt = 1;
    //2.减少受攻击怪物的生命值
      m.m_iHP -=  iHurt;
    //3.描述攻击过程 怪物A攻击怪物B,让怪物B损失#点血
      cout << m_szName << " attack "
           << m.m_szName <<" ,cause "
           << m.m_szName <<" lost "
           << iHurt << " point blood! \n";

    return ;
}
*/
//3.战斗方法
void Monster::fight(Monster &m)
{
    int sum=1;
    while(1)
    {
        Sleep(1000);
        cout << " THE "<< sum++
             <<" Round! "<< endl;
        attack(m);
        if(m.m_iHP<0)
            break;
        m.attack(*this);//*this 当前对象
        if(m_iHP<0)
            break;
    }
    show();
    m.show();
    return ;
        //A攻击B
        //check b HP value,if value <0 break

        //B攻击A
        //check a HP value,if value <0 break


}

//============Cat
Cat::Cat(string szName,int iHP,int iAP,int iDP):
    Monster(szName,iHP,iAP,iDP)
{}
//cat的攻击方式
void Cat::attack(Monster &m)
{
    //1.计算伤害值
    int iHurt = 0;
    iHurt = 4*getAP() -m.getDP()+3;
    if(iHurt<1)//伤害保护
        iHurt = 1;
    //2.减少受攻击怪物的生命值
     // m.m_iHP -=  iHurt;
    m.setHP(m.getHP() - iHurt);
    //3.描述攻击过程
    cout << getName() << " scratch "
           << m.getName() <<" ,cause "
           << m.getName()<<" lost "
           << iHurt << " point blood! \n";

    return ;
}
//================Dog

Dog::Dog(string szName,int iHP,int iAP,int iDP):
    Monster(szName,iHP,iAP,iDP)
{}
//Dog的攻击方式
void Dog::attack(Monster &m)
{
    //1.计算伤害值
    int iHurt = 0;
    iHurt = 9*getAP() -m.getDP()+15;
    if(iHurt<1)//伤害保护
        iHurt = 1;
    //2.减少受攻击怪物的生命值
     // m.m_iHP -=  iHurt;
    m.setHP(m.getHP() - iHurt);
    //3.描述攻击过程
    cout << getName() << " bite "
           << m.getName() <<" ,cause "
           << m.getName()<<" lost "
           << iHurt << " point blood! \n";

    return ;
}

4.构建完成
完成

猜你喜欢

转载自blog.csdn.net/sinat_24880087/article/details/52387789