最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

《游戲編程模式》筆記——狀態(tài)模式

2023-09-10 04:49 作者:黑白色的楓  | 我要投稿

有限狀態(tài)機(jī)

說到狀態(tài)模式不得不提一下有限狀態(tài)機(jī)。

一個(gè)事物,有多個(gè)狀態(tài)但是數(shù)量有限,同一時(shí)間只能處在一種狀態(tài)下,可以根據(jù)條件相互切換,就是有限狀態(tài)機(jī)。

我們用游戲里的寶箱來舉例子。

寶箱有三種狀態(tài),上鎖,關(guān)閉,打開。

上鎖狀態(tài)時(shí),我們需要消耗鑰匙才可以打開寶箱拿走里面的道具,并且寶箱會(huì)進(jìn)入打開狀態(tài)。

如果我們沒有要是,就會(huì)提醒我們需要鑰匙才能打開,寶箱依然保持上鎖狀態(tài)。

我們消耗了要是打開了寶箱,但是我們的道具數(shù)量已經(jīng)達(dá)到了上限,所以只能把道具放回寶箱里,但是鎖已經(jīng)開了,所以寶箱會(huì)進(jìn)入關(guān)閉狀態(tài)。

等我們消耗了道具以后再把道具取走,寶箱又會(huì)進(jìn)入打開狀態(tài)。

只是一個(gè)簡單的寶箱邏輯,寫起來還不是很復(fù)雜,如果是一個(gè)角色的控制器,角色擁有站立、行走、奔跑、跳躍、攻擊、攀墻、射擊等多個(gè)狀態(tài),case?的數(shù)量就會(huì)隨著狀態(tài)增加,并且會(huì)添加大量的if判斷,增加?Trigger?函數(shù)的復(fù)雜度。

這時(shí)就可是使用狀態(tài)模式。

狀態(tài)模式

狀態(tài)模式,將每個(gè)狀態(tài)都封裝成單獨(dú)的類,在自己的內(nèi)部處理邏輯,切換狀態(tài)時(shí)切換引用的狀態(tài)對(duì)象,從而執(zhí)行對(duì)應(yīng)狀態(tài)的邏輯。

定義一個(gè)寶箱的狀態(tài)接口,它僅有一個(gè)用來執(zhí)行邏輯的函數(shù)。

再創(chuàng)建寶箱的狀態(tài)類并實(shí)現(xiàn)狀態(tài)接口。

最后修改寶箱類,將枚舉改為寶箱狀態(tài)接口類型,并提供一個(gè)觸發(fā)函數(shù)和一個(gè)設(shè)置狀態(tài)的函數(shù)。

觸發(fā)函數(shù)用來執(zhí)行寶箱的觸發(fā)邏輯,當(dāng)玩家與寶箱交互的時(shí)候調(diào)用這個(gè)函數(shù),而它調(diào)用狀態(tài)對(duì)象的觸發(fā)函數(shù)來執(zhí)行當(dāng)前狀態(tài)的邏輯。

修改狀態(tài)的函數(shù)用來修改當(dāng)前狀態(tài),主要給狀態(tài)對(duì)象使用,狀態(tài)對(duì)象在執(zhí)行邏輯時(shí)根據(jù)情況調(diào)用寶箱的設(shè)置狀態(tài)函數(shù)來修改寶箱的狀態(tài)。

至此,便完成了狀態(tài)模式的簡單實(shí)現(xiàn)。

好處

那么這么做到底有什么好處呢?

假設(shè)我們的邏輯更復(fù)雜一些,每個(gè)狀態(tài)都只需要在自己的類里面去增加變量或函數(shù)去處理,只需要關(guān)注自身所需要關(guān)注的事物。

壞處

但是也有壞處,這樣做勢必會(huì)增加結(jié)構(gòu)上的復(fù)雜度,使用不當(dāng)會(huì)造成結(jié)構(gòu)和代碼的混亂。

增加新的狀態(tài)也要去其他的類里面修改代碼來保證狀態(tài)直接的切換。


參考

《游戲編程模式》

《游戲編程模式》筆記——狀態(tài)模式的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
安塞县| 犍为县| 武乡县| 东乌珠穆沁旗| 霍山县| 保靖县| 台山市| 都江堰市| 黑水县| 抚宁县| 满城县| 贺兰县| 堆龙德庆县| 奉化市| 武平县| 仙游县| 东乌珠穆沁旗| 洛南县| 黄梅县| 虹口区| 迁安市| 蒲江县| 邵武市| 金湖县| 扬州市| 鄱阳县| 石棉县| 泸水县| 日照市| 清涧县| 保德县| 延津县| 清镇市| 名山县| 慈溪市| 苍南县| 博客| 泾川县| 清水河县| 大丰市| 积石山|