我正在開發一個自動售貨機項目,並嘗試構建一個狀態機,正如我從其他示例中看到的那樣。我試圖建立的機器可以容納100美元。它需要鎳,一角和四分之一。所以,我應該逐一定義大約2000個州。我怎樣才能以更簡單的方式構建FSM?我只想提出一個建議。如何在狀態過多時建立FSM?
謝謝:)
我正在開發一個自動售貨機項目,並嘗試構建一個狀態機,正如我從其他示例中看到的那樣。我試圖建立的機器可以容納100美元。它需要鎳,一角和四分之一。所以,我應該逐一定義大約2000個州。我怎樣才能以更簡單的方式構建FSM?我只想提出一個建議。如何在狀態過多時建立FSM?
謝謝:)
爲什麼你覺得機器的現金餘額的每一個可能的值需要一個獨立的國家?這聽起來像是對FSM使用不佳。
只需使用一個整數寄存器來保存機器的總餘額,或者使用單獨的寄存器來保存各種硬幣和賬單的數量並從中計算總數。
各國可能是諸如process payment
,dispense item
或refund change
之類的東西。不是機器的平衡。
僅僅因爲你有2000個「狀態」並不意味着你必須在case語句中枚舉它們中的每一個。
正如其他人所說的,你需要將你的一些狀態存儲在計數器中。
這2000個州代表什麼?你能不能只實施一堆計數器? (當然,這是FSMs) –
2000個州代表每增加5美分的金額高達100美元。例如,63.85美元是機器可能的狀態。 – user1594118