剛好前段時(shí)間寫了一個(gè)簡(jiǎn)單協(xié)議的狀態(tài)機(jī),代碼就不寫了,說(shuō)一下大概吧
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了高明免費(fèi)建站歡迎大家使用!
1、確定一共有多少種狀態(tài),這里的狀態(tài)有開(kāi)和關(guān),細(xì)分還有say thankyou 和警告
2、確定狀態(tài)之間的遷移條件
如果按照四種狀態(tài):開(kāi)、關(guān)、說(shuō)謝謝、警告,那么這四種狀態(tài)之前的遷移條件很明顯了
分兩個(gè)函數(shù):1、檢查是否需要遷移狀態(tài);2、遷移狀態(tài)。
遍歷各種狀態(tài)檢查是否有狀態(tài)需要發(fā)生遷移。一般用一個(gè)switch將各種狀態(tài)列出,然后在各種狀態(tài)里面用if檢查是否需要遷移狀態(tài),如果需要遷移,做好標(biāo)記。
再次遍歷各種狀態(tài),檢查哪些狀態(tài)做了標(biāo)記,遷移到新?tīng)顟B(tài),并做相應(yīng)的操作,比如進(jìn)入關(guān)的時(shí)候,做關(guān)門動(dòng)作
剛才忘記說(shuō)了,還有一個(gè)運(yùn)轉(zhuǎn)狀態(tài)機(jī)函數(shù),main函數(shù)在被觸發(fā)的情況下調(diào)用運(yùn)轉(zhuǎn)函數(shù),觸發(fā)條件有:投幣,人進(jìn)入。
C語(yǔ)言中調(diào)用函數(shù)的方法及步驟:
工具/原料:C語(yǔ)言
1、首先需要輸入想要調(diào)用的函數(shù)。
2、然后當(dāng)輸入一個(gè)括號(hào)后,即可觀察他的參數(shù)。
3、接著在對(duì)應(yīng)的參數(shù)中輸入?yún)?shù)值。
4、然后,系統(tǒng)會(huì)發(fā)生一個(gè)警告。
5、接著需要調(diào)用它相應(yīng)的頭文件。
6、最后再次編譯,發(fā)現(xiàn)沒(méi)有任何警告和錯(cuò)誤即可。
c語(yǔ)言寫狀態(tài)機(jī)之前:
1、確定一共有多少種狀態(tài),這里的狀態(tài)有開(kāi)和關(guān),細(xì)分還有say thankyou 和警告
2、確定狀態(tài)之間的遷移條件
如果按照四種狀態(tài):開(kāi)、關(guān)、說(shuō)謝謝、警告,那么這四種狀態(tài)之前的遷移條件很明顯了
分兩個(gè)函數(shù):
1、檢查是否需要遷移狀態(tài);
2、遷移狀態(tài).
遍歷各種狀態(tài)檢查是否有狀態(tài)需要發(fā)生遷移.一般用一個(gè)switch將各種狀態(tài)列出,然后在各種狀態(tài)里面用if檢查是否需要遷移狀態(tài),如果需要遷移,做好標(biāo)記.
再次遍歷各種狀態(tài),檢查哪些狀態(tài)做了標(biāo)記,遷移到新?tīng)顟B(tài),并做相應(yīng)的操作,比如進(jìn)入關(guān)的時(shí)候,做關(guān)門動(dòng)作。
典型的狀態(tài)機(jī)結(jié)構(gòu):
enum { state_A, state_B, state_C } state = state_A;
while(1)
{
switch ( state )
{
case state_A:
if ( event_A ) // 這里也可以用switch
{
action_1(); // 在某狀態(tài)下發(fā)生某事件執(zhí)行某個(gè)動(dòng)作,并轉(zhuǎn)入下個(gè)狀態(tài)
state = state_B;
}
else if ( event_B )
{
}
else
{
}
break;
case state_B:
... ...
}
}