1. 程式人生 > >面向對象程序設計 團隊作業3

面向對象程序設計 團隊作業3

zha 技能 自己 his 戰鬥 tac pre 調用 編程

思路描述

剛開始接到這個作業時,不知道該從何入手,太多的東西需要了解和學習。接口的設置、界面的構造等等都是尚未接觸過的東西。後來在老師多次強調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、通過此次作業更加深入地認識了面向對象的程序設計,體會到了在面對較大規模的程序時面向對象的重要性

面向對象程序設計 團隊作業3