當前位置:
首頁 > 科技 > 剛會編程就寫AI貪吃蛇!根本停不下來……

剛會編程就寫AI貪吃蛇!根本停不下來……

小編今天帶著大家寫一個(剛學會C就能寫)…

AlphaGo自動走的貪吃蛇

具體來說出門一條蛇…

積分全靠打…

技能各種辣眼睛…

小編代言、X寶爆款…

用上設計界最流行的黑底騷黃以及黑底騷紫

以至於小編今天在辦公室…

玩得根本停不下來

自頂向下的設計模式

現在我們先不管我們的小蛇臉什麼樣

身材怎麼樣

我們需要思考遊戲的外層框架

我們的蛇怎麼才能動?

其實就是不斷地每隔一段時間刷新我們的畫面…

就像

動畫一樣…

快瞎用戶的速度不斷地放幻燈片

但動畫放得根本停不下來怎麼辦

設定個全局變數作為終止條件

用一個while搞定…

while裡面我們需要接收

來自鍵盤給命令

或者之後我們AI系統自動給命令

然後蛇按照我們的命令移動

對遊戲內的類建模

雖說我們用的是面向過程C語言寫的代碼…

但小編愛挑戰新花樣…

把裡面的元素抽象為類

分別是3種類

蛇、食物、地圖

蛇的話,我們用一個隊列存儲

當蛇需要

移動的時候,我們會把…

原來的蛇尾部分用一個空白的字元填充

在新的位置列印一個蛇頭

至於食物,我們需要實現一個隨機產生食物的函數…

在某個不重複的,

而且非地圖

非蛇身的位置…畫上一個新的食物

至於

地圖

我們採用硬編碼的方式

編好在代碼裡面…

咱么之後不斷修改地圖元素

列印出來就好

以上,我們已經

對主要的類進行建模

碰撞檢測

一般來說,遊戲引擎(如cocos2dx)

都會有碰撞檢測的機制…

蛇、食物、牆都是剛體

也就是給予他們現實世界的物理性質

重力質量彈性不可穿透性

我們需要在

刷新遊戲之前…

判斷是否兩者是否將要撞一起

給貪吃蛇加點智商

目前,基本上你的貪吃蛇已經可以受你的控制了…

(更多細節請看代碼)

但是…我們想讓貪吃蛇控制不住記幾地移動、吃食物

更直白說,做成一條有自主意識的蛇…

AlphaGo

我們用到了啟發式搜索AI演算法

我們普通的搜索演算法

一般是歷遍所有狀態空間的…

選一個最好的狀態

轉換到該狀態...

每個狀態對應蛇的位置食物位置牆的位置

然而,像AlphaGo一樣,下圍棋…

狀態空間是很大的…

計算機算力算不過來的…

這時候我們需要一些

信息

來進行更有效率的搜索…

最簡單的實現…

就是告訴我們小蛇

避免碰撞到我們的蛇身和圍牆…

往哪個方向走…最接近我們的食物…

然而,小編的代碼還加上不少東西呢…

例如,盡量不讓小蛇自己把自己圍起來

然而…

啟發式搜索並不能保證…

一定能完好無損的吃到食物

這與你用什麼信息啟發有關…

給大家推薦一個公眾號

騰訊課堂Coding學院:專註分享IT技術資訊,提供豐富的技術類指導教程,包含求職就業、能力晉陞、認證考試、前沿技術等專業的培訓內容及經典技術幹活經驗,關注即可領取免費課程資料包!


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲加社區 的精彩文章:

「羊毛黨」竟然可以月入百萬?教你一招如何防禦
想要玩轉AI,你需要知道這5點

TAG:雲加社區 |