面向对象程序设计 团队作业3

思路描述

刚开始接到这个作业时,不知道该从何入手,太多的东西需要了解和学习。接口的设置、界面的构造等等都是尚未接触过的东西。后来在老师多次强调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、通过此次作业更加深入地认识了面向对象的程序设计,体会到了在面对较大规模的程序时面向对象的重要性

猜你喜欢

转载自www.cnblogs.com/azeLibertas/p/9244654.html