思路描述
刚开始接到这个作业时,不知道该从何入手,太多的东西需要了解和学习。接口的设置、界面的构造等等都是尚未接触过的东西。后来在老师多次强调C++面向对象的特性之后,渐渐的理解了抽象、封装、继承和多态的重要性。简单来说:一个再复杂的程序,都是可以看成一个又一个对象拼接起来的结果,加上C++对封装的要求,可以从每个简单的对象入手,通过类的实现,构建起程序的基础模型,再在基础上一步一步地完善。至此,终于发现并且亲身体会到了面向对象的巧妙之处,在处理较大规模的程序时,不必将每一步操作统筹到一起进行编程,而可以一块一块的实现。
具体实现
根据我的分工定位,要建立并且根据需要完善类。
英雄类主要是攻击和调用技能的实现:
普通攻击可以直接实现:
void heroes::Attack(heroes &p)
{
cout << name << "攻击" << endl;
p.HP -= attack;
cout << p.name << "受到" << attack << "点伤害" << endl;
if (p.HP <= 0)
cout << "K.O." << endl;
}
技能攻击则需要调用技能类的成员函数完成:
bool heroes::skill_attack(heroes &p)
{
cout << name << "技能攻击" << endl;
if (useSkill == 1)
{
if (shitan::judge(*this))
{
cout << name << "发动试探" << endl;
Hurt(heroes &p);
return true;
}
else
{
cout << "等级太低无法使用此技能,请重新选择技能" << endl;
return false;
}
}
if (useSkill == 2)
{
if (chengjie::judge(*this))
{
cout << name << "发动惩戒" << endl;
Hurt(heroes &p);
return true;
}
else
{
cout << "等级太低无法使用此技能,请重新选择技能" << endl;
return false;
}
}
if (useSkill == 3)
{
if (zhansha::judge(*this))
{
cout << name << "发动斩杀" << endl;
zhansha::Hurt(heroes &p);
return true;
}
else
{
cout << "等级太低无法使用此技能,请重新选择技能" << endl;
return false;
}
}
if (useSkill == 4)
{
if (kuangbao::judge(*this))
{
AddAttackSpeed(*this);
AddAttack(*this);
Attack(heroes &p);
return true;
}
else
{
cout << "等级太低无法使用此技能,请重新选择技能" << endl;
return false;
}
}
if (useSkill == 5)
{
if (shanxian::judge(*this))
{
return true;
}
else
{
cout << "等级太低无法使用此技能,请重新选择技能" << endl;
return false;
}
}
if (useSkill == 6)
{
if (zhiliaoshu::judge(*this))
{
Recovery(*this);
return true;
}
else
{
cout << "等级太低无法使用此技能,请重新选择技能" << endl;
return false;
}
}
}
技能类即按照题目要求,实现不同技能的功能,比较简单。
PS:设计类的时候其实是希望有一个界面来描述战斗过程,所以在每一个功能中都写入了输出相应文字的功能,但在实际中还未能实现此功能,只能实现单独的战斗界面。
花费时间
构建类:
英雄类:4 hours
技能类:2 hours
技能类的实现与英雄类相似,所以花费时间较少。
完善类:
后期对类的完善:2 hours
问题
对本次作业主要的问题就是“思路”,可能在代码的实现上还是有一定的能力和想法,但是需要一个具体的思路来引导。所以在开始之前找了比较多的资料来学习完成这类程序的思路方法。也有在同学发布的博客中找到很有用的资料,总的来说,在资料方面还是有所收获的。
总结
1、团队作业最重要的就是有明确的分工,并且按时完成自己分内的工作,这样才不会影响整个团队的进度
2、通过此次作业更加深入地认识了面向对象的程序设计,体会到了在面对较大规模的程序时面向对象的重要性