《游戲編程模式》筆記——命令模式
命令模式的定義
將一個(gè)請求封裝為一個(gè)對象,從而使你可用不同的請求對客戶進(jìn)行參數(shù)化;對請求排隊(duì)或記錄請求日志,以及支持可撤銷的操作。
命令模式是一種回調(diào)的面向?qū)ο髮?shí)現(xiàn)
命令是具現(xiàn)化的方法調(diào)用。
說人話就是,命令模式把原本的函數(shù)調(diào)用封裝成了類,執(zhí)行命令的時(shí)候調(diào)用這個(gè)類的對象去執(zhí)行想要的操作。因?yàn)轭惖目蓴U(kuò)展性高,可以通過隊(duì)列和類的擴(kuò)展來支持撤銷和重做的操作。
撤銷和重做
撤銷和重做是命令模式最廣為人知的使用情況。
如果一個(gè)命令對象可以做一件事,那么它也可以撤銷這件事。
例如戰(zhàn)棋游戲里游戲里的撤銷移動(dòng),建筑游戲里撤銷建筑的擺放。
實(shí)現(xiàn)撤銷和重做,需要記錄執(zhí)行命令的對象、命令執(zhí)行前對象的狀態(tài)和命令執(zhí)行后的狀態(tài),在撤銷時(shí)將狀態(tài)還原到執(zhí)行前,重做時(shí)還原到執(zhí)行后。
并且需要一個(gè)列表來記錄所有執(zhí)行的命令,且有一個(gè)索引指向當(dāng)前的命令,撤銷時(shí)索引后撤,重做時(shí)索引推進(jìn)。
有新的命令加入時(shí),需要移除所有已經(jīng)撤銷的操作。

AI
命令模式也可以作用在敵人身上,使用狀態(tài)機(jī)或行為樹來調(diào)用不同的命令。
也可以為玩家的角色加上AI,這在游戲需要自動(dòng)演示的時(shí)候很有用。

參考:
《游戲編程模式》


標(biāo)簽: