日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【C++】50.编程中切换状态的【有限状态机】

發布時間:2025/3/21 c/c++ 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C++】50.编程中切换状态的【有限状态机】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于有限狀態機的知識,這里推薦淺墨毛星云大佬的博客【游戲設計模式】之三 狀態模式、有限狀態機 & Unity版本實現,博客里做了具體的代碼講解。

狀態機是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。有限狀態機是其中最簡單的成員。


以下是我看了該博客之后的一點心得:

對于有很多狀態切換的功能,我們可能會不假思索的使用if-else直接把所有可能的情況都列舉出來,這樣會產生一大堆代碼,并且因為漏掉某個細節,然后又修補bug,添加代碼,進而就會破壞代碼結構。
這種方式明顯不可取。

雖然if-else和switch-case有時候可以通用,但是某些時候,輸入不是表達式或者是沒有定義成枚舉型的,所以這種情況下就使用if-else,例如if(num>5)你定義成什么東西轉化成switch-case?如果刻意定義成bool轉化成switch-case反而會更麻煩。

而switch-case只能是針對"表達式",例如數字、枚舉和bool型,case 3:、case KEY_UP:、case true:。


  • 我們一般思維就是,輸入來了什么動作,我們就根據這個輸入動作,來具體分析這個輸入動作在各種狀態下分別做什么處理,可能會需要使用很多的bool型的狀態值(如果你使用了枚舉定義這些狀態值,就不需要這些bool狀態值了),這是if-else的做法。

  • 但是,我們可以換一種思維方式,先判斷當前是在什么狀態(多種狀態值可以定義成枚舉型)下,然后再根據輸入動作來進行相應的處理,可能會簡潔高效很多。這就是switch-case的方法。

兩種方法你自己實踐一下,在相對復雜的狀態切換操作下,我們要想一下,怎樣的邏輯會使得代碼更簡潔,然后搭配switch-case使用,代碼肯定可以更簡潔。

至于淺墨大佬博客最后講解的狀態模式,博客中我沒有看得很明白,就不做記錄了。

總結

以上是生活随笔為你收集整理的【C++】50.编程中切换状态的【有限状态机】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。