《遊戲人工智慧程式設計案例精粹》讀書筆記二

2021-08-10 12:08:36 字數 798 閱讀 6189

《遊戲人工智慧程式設計案例精粹》讀書筆記二

全域性狀態和狀態翻轉(state blip):當設計乙個有限狀態機時,如果加入乙個新的狀態,且這個狀態可能從任何乙個狀態或任何時間切換。容易想到的乙個方法是:直接複製條件邏輯加進每個狀態中,但這個方法是不提倡的,因為你需要對每個狀態進行邏輯的修改,乙個,五個容易改,十個百個呢? 還有一種方法是將狀態放進智慧型體中,在每次更新時呼叫,但這個也不好。因為我們前面的目標就是對人工智慧體和智慧型體的狀態進行了解耦,這個時候加進去猶如畫蛇添足。因為我們當時設計時,是將fsm的邏輯都被包含進狀態中,從而實現智慧型體類和fsm的解耦(這麼做原因有很多比如當有狀態新增或者刪除的時候我們不必對智慧型體類進行修改,對應的oo原則就是封裝變化,對修改關閉。如果不這麼做我們將要經常進入智慧型體類的設計中徒增重複工作和增加複雜程度)這時我們可以考慮建立乙個全域性狀態,每次fsm更新時就會被呼叫。這樣,所以用於fsm的邏輯被包含在狀態中並且不在擁有fsm的智慧型體類中!  狀態翻轉  其實就是當狀態退出時,智慧型體返回前乙個狀態。這個很簡單我們只需新增乙個變數對上一狀態進行儲存就行了,這樣當當前狀態結束時,可以用儲存的上一狀態作為鼻白刺?迪腫刺???⑦還有乙個需要記下的是訊息結構體telegram中 void*  extrainfo的使用,非常值得學習。作為訊息的額外資訊,因為我們不知道額外的訊息是什麼型別,用void型別指標可以保持任何型別例如:傳的訊息是msg_movetoposition訊息extrainfo可以用於儲存那個位置的座標。 當然如果還要增加總結的話,書上的**喚起了我初學c++primer時map容器和set容器支配的恐懼,然後set容器又喚起了我被過載運算子支配的恐懼~~~

end

遊戲人工智慧 讀書筆記 (二) 遊戲人工智慧簡史

從歷史來看,在很長的時間裡,創造乙個可以代替人類玩遊戲的機械人是唯一的在遊戲中應用人工智慧的方式。而在人工智慧發展的早期,絕大部分遊戲ai的研究者都在努力做出乙個很牛的ai在棋類遊戲中戰勝人類。這裡面一部分的原因是,棋類遊戲蘊含著一些人類智慧型的基本因素。大部分的棋類遊戲的規則都很簡單,但是在方寸的...

遊戲AI 人工智慧

一說到電腦ai 人工智慧 就會有人認為它是高深莫測東西。其實並沒那麼複雜,電腦ai其實是一組if語句。各型別遊戲有各型別的ai,rpg 冒險類 遊戲的ai最簡單,只要用函式產生隨機數在對攻擊物件取餘即可,稍微複雜點的也只增加了道具 魔法攻擊,其ai性質都是一樣的。例如 attack unsigned...

遊戲程式設計中的人工智慧 補

先抱怨下windows 64bit下的交叉編譯簡直折磨死人,倒騰了幾天之後決定還是切到linux下算了。虛擬機器雖然不給力,但是好歹能看出來優化後的結果。本文沒什麼講的,只是將上文說到的掃雷機的進化過程中耗時最長的函式用c重新寫一遍後比較下執行速度,廢話不多說,直接貼 看結果。原來判斷兩條直線ab和...