Re: [問卦] 寧寧雞寫程式時是用space還是tab縮排已回收

看板C_Chat作者 (【林】)時間8年前 (2017/08/31 15:48), 8年前編輯推噓5(5010)
留言15則, 6人參與, 最新討論串3/3 (看更多)
※ 引述《reinforce15 (可魯貝洛斯)》之銘言: : // : void DestructibleActor::ReceiveDamage(float sourceDamage) : { : // : auto resolvedDamage = sourceDamage; : for (const auto& debuf:m_debufs) : { : resolvedDamage = debuf.ApplyToDamage(resolvedDamage); : m_currentHealth -= resolvedDamage : if (m_currentHealth <= 0.f) : { : m_currentHealth = 0.f; : DestroyMe(); : } : } : } 其實這公式怪怪的 看來是一個原始傷害 經過N個debuff後,各自計算增減的傷害 依序把HP扣掉debuf的傷害後作死亡判斷 但問題是 1.這樣原始傷害好像沒計算到? 可能一定有一個debuff傷害是直接*1把原始傷害當debuff傷害修正來計算 2.這樣每次判斷死亡其實沒必要 一次算出debuff後總傷害後去判斷就可以了 3.後面依序使用resolvedDamage來計算 這寫法應該是把resolvedDamage當總傷害計算 還依序用體力去減 這樣好像怪怪的 也就是第一種debuff計算比如加重傷害10% sourceDamage為100時 (1)以每次記算debuff增加的傷害,那resolvedDamage應該是10 m_currentHealth用resolvedDamage去減是正確的 但第二次ApplyToDamage用resolvedDamage(=10)去算就有問題了 (2)以總傷害來計算的話 ApplyToDamage用resolvedDamage去算是正確的 第一次計算後resolvedDamage=110 但每次迴圈都要m_currentHealth -= resolvedDamage; 那就有問題了 而且DestroyMe(); 較安全寫法應該函式內部也要去檢查是不是已經死了 另外這個應該不完全是debuff計算 也包含buff減傷的計算吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.228.78.62 ※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1504165680.A.241.html ※ 編輯: linzero (36.228.78.62), 08/31/2017 16:06:04

08/31 15:59, , 1F
看起來ApplyToDamage都是帶resolvedDamage阿?
08/31 15:59, 1F

08/31 15:59, , 2F
死亡判定應該獨立執行..
08/31 15:59, 2F

08/31 16:02, , 3F
看起來是用迴圈去判斷resolved dmg
08/31 16:02, 3F

08/31 16:03, , 4F
如果在計算resolved dmg的過程中就 > current health
08/31 16:03, 4F

08/31 16:04, , 5F
就直接destroyMe 所以邏輯上OK 只是要檢查死亡判定
08/31 16:04, 5F

08/31 16:04, , 6F
有沒有死了在死的狀況發生
08/31 16:04, 6F

08/31 16:51, , 7F
死亡判定要獨立一個thread
08/31 16:51, 7F

08/31 17:08, , 8F
還以為走錯版
08/31 17:08, 8F

08/31 18:35, , 9F
突然神手齊聚,怕
08/31 18:35, 9F

08/31 18:42, , 10F
對吼沒想到原本有問題這點 因沒有完整code可能無解了
08/31 18:42, 10F

09/02 14:16, , 11F
回頭看一下 你大綱好像也只是把我解法再講一遍而已
09/02 14:16, 11F

09/02 14:18, , 12F
所以我不想要看文字 有詳細的"程式碼解法"嗎
09/02 14:18, 12F

09/02 14:39, , 13F
還有你的安全寫法也是錯的 還要檢查內部函式就表示沒
09/02 14:39, 13F

09/02 14:42, , 14F
做到關注點分離 請提出"實際的程式碼解法" 否則難登
09/02 14:42, 14F

09/02 14:43, , 15F
大雅之堂
09/02 14:43, 15F
文章代碼(AID): #1Pfxym91 (C_Chat)
討論串 (同標題文章)
文章代碼(AID): #1Pfxym91 (C_Chat)