看板 java 關於我們 聯絡資訊
總覺得是基本的問題, 然而想了一個周末想不出答案XD <== 嫩咖新手 我寫了一個戰棋遊戲、想為戰場上不同敵人設計不同的攻擊方式 (例如有些敵人是挑場上最弱的玩家角色攻擊,有些是攻擊玩家全體等等) 換言之,依據敵人不同的攻擊模式,所執行的方法也會跟著不同 目前txt檔的欄位像是: 角色編號 攻擊力 攻擊模式(attackMode) 0 20 1 1 25 2 2 23 1 <= attackMode[i] 3 24 3 目前想出的寫法是: switch(attackMode[i]){ //根據不同的attackMode(攻擊模式),該值為1~N case 1: attackMethod1(); break; //執行不同的(攻擊)方法 case 2: attackMethod2(); break; case 3: attackMethod3(); break; ... } 但稍微想遠一點,這樣的寫法有點好笑,倘若我有100種敵人 那麼我不就得從 case 1 列到case 100? (感覺上不用寫那麼多行才對) 因此想請教有沒有更簡易的寫法? 像是設法讓字串成為method 例如: 正要成為方法的字串 = "attackMethod" + attackMode[i] 接著執行 正要成為方法的字串(); (不曉得有沒有傳達到意思?) 但總覺得這不是個可行的方法XD 於是上來請教: 請問有沒有能夠簡化上面那個switch的辦法? 或是其實有更好的做法,去作出: 根據敵人不同的攻擊模式(的值), 執行不同的方法? 感謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.88.43
PsMonkey:帳面上的解法是 reflection,可解你倒數第二段的需求 12/16 12:03
Lordaeron:alpha-beta tree 12/16 14:02
cowbaying:AI 12/16 17:41
rubric:感謝 雖然查了,但沒有很懂,我再慢慢理解 感謝^_^ 12/16 19:17
cyclone350:把attackMethod改成物件?然後用XXX設計模式解決? 12/16 21:50
LPH66:樓上想說的應該就是 Strategy Pattern 吧 12/17 01:01
LPH66:不過這裡加了讀字串進來感覺還是要用上 reflection 12/17 01:03
plover:polymorphism 12/17 02:01
ah7675:visitor pattern? 12/20 23:56