[問題] 選擇攻擊方式

看板java作者 (其實我正在找第幾篇)時間10年前 (2013/12/16 10:49), 編輯推噓4(405)
留言9則, 8人參與, 最新討論串1/1
總覺得是基本的問題, 然而想了一個周末想不出答案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

12/16 12:03, , 1F
帳面上的解法是 reflection,可解你倒數第二段的需求
12/16 12:03, 1F

12/16 14:02, , 2F
alpha-beta tree
12/16 14:02, 2F

12/16 17:41, , 3F
AI
12/16 17:41, 3F

12/16 19:17, , 4F
感謝 雖然查了,但沒有很懂,我再慢慢理解 感謝^_^
12/16 19:17, 4F

12/16 21:50, , 5F
把attackMethod改成物件?然後用XXX設計模式解決?
12/16 21:50, 5F

12/17 01:01, , 6F
樓上想說的應該就是 Strategy Pattern 吧
12/17 01:01, 6F

12/17 01:03, , 7F
不過這裡加了讀字串進來感覺還是要用上 reflection
12/17 01:03, 7F

12/17 02:01, , 8F
polymorphism
12/17 02:01, 8F

12/20 23:56, , 9F
visitor pattern?
12/20 23:56, 9F
文章代碼(AID): #1IhcfBSt (java)