1. 程式人生 > >團隊作業-個人總結

團隊作業-個人總結

CP 利用 由於 代碼塊 添加 狀態 通過 遇到 有關

思考

這種遊戲果然應該漸進式開發,先設計好類容易導致各種各樣的問題,像接口不一致和濫用智能指針的問題

編碼過程

最近都在考試,沒什麽時間打這個,只能考完通宵肝一些

這一階段實現了血條,主要是通過cocos::ProgressTimer實現,並將其添加為cocos::Sprite的子節點實現跟隨

實現了攻擊,攻擊作為技能實現,利用了技能的抽象,然而並不有利於減少代碼量,但是看起來更整齊

實現了死亡回城,再英雄更新時判斷血量並回城重置

實現了泉水回血,通過判斷單位位置和陣營,為了省時間仿照技能樣式但不納入技能範疇

遇到的問題

智能指針問題

之前我一直以為std::shared_ptr是一個非常強大的東西,隨便用沒有坑,能簡化C++的內存管理,事實證明是我太天真了。考慮以下代碼

int *pp = new int;
shared_ptr<int> sp1(pp);
shared_ptr<int> sp2(pp);

其中sp1sp2並不會共享引用計數,導致在代碼塊退出時pp所指向的內存單元被回收了2次,導致出錯

智能指針shared_ptr設計是讓代碼中所有指針都由智能指針管理,不應存在裸指針,而指向現存對象的智能指針也應由智能指針創建,混用智能指針與裸指針容易導致各種各樣的問題。

其實對象的引用計數管理可以仿照COM的IUnknown或者cocos::Ref的單根繼承實現,手動釋放和引用,有時雖然繁瑣,但更清晰

由於設計上的疏忽導致我們的模型設計中大量存在shared_ptr

,這存在著極大的隱患,並已導致程序崩潰(甚至導致我心態崩了),但重構已是不可能的了,因此只能步步小心

模型設計問題

王者光耀這類遊戲存在大量狀態及狀態轉換,我之前妄想使用多態解決所有問題,但這也是不現實的,這類需求適合狀態機實現,這是從一開始就出現的問題,然而中期我才意識到,已無力回天

總結

這次作業算是比較失敗的一次作業,我作為隊長,有一定責任,我進行了一些反思,在本次團隊作業中,我主要有一下幾點不足:

  1. 在團隊作業初期沒有進行明確合理的分工
  2. 設定目標時考慮過少,當時我認為的是“不試試怎麽知道自己原來真的做不到”
  3. 沒有設定明確的接口和代碼規範,團隊裏的人各有各的思路,寫出來的代碼別人有時候不好看懂和對接
  4. 濫用不熟悉的技術

其實這也和我第一次帶團隊,經驗和領導能力不足有關吧。今天在這裏寫下這些,希望以後能吸取教訓,也希望以後看時,能發現自己有什麽進步

團隊作業-個人總結