版权声明:本文为博主原创文章,未经博主允许不得转载。 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.构建完成