遊戲人工智慧–FSM篇

來源:互聯網
上載者:User

遊戲人工智慧編程案例,搞到這本書後,就大致看了一下,總算買了本實際點的書了,比起我的上一本來講,要實際多了。自己利用空閑時間看了第一章(略過),第二章。也就是有限狀態機器(FSM)。看到本章的總結後,知道有限狀態機器在設計上還要研究,看來只是入門,不過對我這個剛接觸的人而言,也很不錯了。

   大致談一下自己的感想(理解):

   有限狀態機器,看到名字後,你就會猜:有限個狀態而組成的機制。也蠻確切地阿:),那麼很顯然就要把你的狀態擺出來。狀態嗎,有許多種,你會自然想到用1,2,3,4 等等來表示狀態,而這些1,2,3,4 等等也再進一步,可以用enum來表示狀態,然後就是switch,case來選擇狀態進而處理。這是初步的構想。

    然而如果遇到狀態居多,那麼case就要像麵條一樣,並且調試起來也不方便(書上說的,自己調試一下就知道了)。並且狀態的擴充也稱了問題,除非去enum裡加,也就是擴充性不好。

    後來就想到了建立State基類,讓每個具體的狀態去繼承,具體的具體的狀態再去繼承具體的狀態,等等。

來解決擴充性,和狀態之間的聯絡問題。對了State這個基類還有一個虛函數execute,美其名曰:執行。

在某個具體的狀態,會幹某個具體的事情。就是這個意思。比如在睡覺,就是睡覺狀態:做夢就是睡覺執行的東西,當然也可以不做夢,打虎樓也行,你自己定義了。理解這個execute就行了。

   對了,忘了角色的定義了,沒有角色,何來狀態。當然角色的定義比較廣泛,可以指人物,樹木,天氣,一塊石頭也行。那麼要定義一個基類了:BaseGameEntity 。這個角色要有自己的ID,就好比每個人都有身份證一樣,這個ID不能重複的。還有角色總要幹些事情,那麼自身會在不斷改變,那麼就定義一個update函數了。那麼這個基類也就基本上搞定了,update函數搞成純虛的就行了。

    具體角色實現什麼,就自己定義了。    

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.