作者rubric (其實我正在找第幾篇)
看板java
標題[問題] 選擇攻擊方式
時間Mon Dec 16 10:49:44 2013
總覺得是基本的問題,
然而想了一個周末想不出答案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