為了消除你心中的疑惑,你可以準備一張紙和一支筆,讓我們一起來畫一張流程圖。對於女主角能夠進行的動作畫乙個「矩形」:站立、跳躍、躲避和俯衝。當你可以按下乙個鍵讓主角從乙個狀態切換到另乙個狀態的時候,我們畫乙個箭頭,讓它從乙個矩形指向另乙個矩形。同時在箭頭上面新增文字,表示我們按下的按鈕。
恭喜,你剛剛已經成功建立了乙個有限狀態機。有限狀態機借鑑了電腦科學裡的自動機理論(automata theory)中的一種資料結構(圖靈機)思想。有限狀態機(fsms)可以看作是最簡單的圖靈機(如圖7-1所示)。
其表達的是:
這其實就是乙個狀態機:每乙個房間是乙個狀態。你所在的房間就是當前的狀態。每個房間的出口就是它的轉換,導航命令就是輸入。
在我們的例子中,在站立狀態的時候如果按下向下方向鍵,則狀態轉換到躲避狀態。如果在跳躍狀態的時候按下向下方向鍵,則會轉換到俯衝攻擊狀態。如果對於每乙個輸入事件沒有對應的轉換,則這個輸入就會被忽略。
簡而言之,整個狀態機可以分為:狀態、輸入和轉換。你可以通過畫狀態流程圖來表示它們。不幸的是,編譯器並不認識狀態圖,所以,我們接下來要介紹如何實現。gof的狀態模式是一種實現方法,但是讓我們先從更簡單的方法開始。
遊戲程式設計模式 命令模式
最近深感 設計對於軟體開發過程中的重要性,所以重新拾起了設計模式,以前學的比較鬆散,理解不夠,這一次本著learning,try,teaching的精神,重新認識和學習設計模式。這一次參考robert nystrom 著的 遊戲程式設計模式 一書,與原先的gof所著的24種設計模式不同,但思想是相通...
遊戲程式設計模式 框架 效能 遊戲
恢復內容開始 好的設計意味著當我們做出乙個改動時,就好像整個程式都在期待它一樣。我們可以呼叫少量可選的函式來完美地解決乙個問題,而不會為軟體帶來其他的多餘的 只管寫我們自己的 框架會幫我們收拾一切!關鍵部分 框架意味著變化。衡量乙個設計好壞的方法就是看它應對變化的靈活性。好的改變,是在下乙個人在新增...
遊戲程式設計模式 命令模式 Part II
我們剛剛定義的命令類適用於前面的例子,但是它們有很大的侷限性。問題在於,它們假設了存在著jump firegun 等等這樣的隱含地知道如何找到玩家的角色並像操縱傀儡般操縱它的頂層函式。這種假定的耦合限制了這些命令的用途。jumpcommand可以使其跳躍的東西只有玩家。讓我們來放寬這個限制。我們將我...