最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

基礎(chǔ) | 自治智能體----類鳥群(二)

2020-03-20 11:57 作者:有木乘舟  | 我要投稿

本系列為筆者初學(xué)c/c++和游戲AI開發(fā)的學(xué)習(xí)過程,算法為主,不涉及到具體的游戲開發(fā)軟件學(xué)習(xí)(如unity,虛幻4等),若有錯(cuò)誤請(qǐng)?jiān)谠u(píng)論區(qū)留下批評(píng)意見。

  • 語(yǔ)言:c/c++ (11及以上)

  • 平臺(tái):macOS mojave

  • 編譯器:vs Code / g++

一、構(gòu)建一個(gè)世界

1.1 SFML

? SFML是一個(gè)簡(jiǎn)單方便的第三方圖形庫(kù),?接口簡(jiǎn)潔,非常適合用來當(dāng)做簡(jiǎn)單的2D游戲引擎。詳細(xì)的安裝教程見這里。

? SFML同大多數(shù)圖形庫(kù)一樣,只需要幾行代碼就可以構(gòu)建出一個(gè)窗口,并檢測(cè)鍵盤和鼠標(biāo)事件。

圖2 窗口和事件

1.2?創(chuàng)建Boids生活的環(huán)境

? 就像現(xiàn)實(shí)中的鳥群一樣,我們的Boids也需要一個(gè)可以自由飛翔的世界。

? 在這個(gè)世界里,我們就是上帝,只要點(diǎn)一點(diǎn)鼠標(biāo)左鍵,就可以憑空創(chuàng)造出一只飛鳥來。

? 我們通過一個(gè)類來實(shí)現(xiàn)這個(gè)想法,在這個(gè)類里定義世界的大小(屏幕的寬高),一個(gè)存儲(chǔ)Boids的動(dòng)態(tài)數(shù)組(存儲(chǔ)圖形),處理事件和渲染的方法,以及啟動(dòng)世界的開關(guān)。

圖3 Boids的世界

??如圖3:

  • creBoid():接收一個(gè)坐標(biāo),并在這個(gè)坐標(biāo)上生成一個(gè)boid

  • creBoids():生成一群boid,并將其存儲(chǔ)在動(dòng)態(tài)數(shù)組shapes中。

  • render():用來渲染圖形

  • handleInput():處理鍵盤和鼠標(biāo)事件。

  • run():創(chuàng)建一個(gè)窗口,并在該窗口上執(zhí)行一系列操作

? 如圖4,初始化World類時(shí),設(shè)置個(gè)體boid的大小,并將窗口大小設(shè)置為當(dāng)前屏幕的大小。函數(shù)run()創(chuàng)建該窗口,生成Boids,并持續(xù)渲染圖形,監(jiān)測(cè)事件,直到窗口被關(guān)閉。

圖4 World類初始化和run()函數(shù)

? 如圖5,handleInput()監(jiān)測(cè)兩個(gè)事件,一是退出窗口事件,二是鼠標(biāo)左鍵點(diǎn)擊事件。當(dāng)點(diǎn)擊鼠標(biāo)左鍵,會(huì)在鼠標(biāo)當(dāng)前位置生成一個(gè)boid個(gè)體。render()渲染圖形,將其顯示在窗口內(nèi)。

圖5 render()和handleInput()

? 如圖6,調(diào)用creBoids函數(shù)生成指定數(shù)量的類鳥群,調(diào)用creBoid生成單個(gè)個(gè)體,并將其存儲(chǔ)在動(dòng)態(tài)數(shù)組shapes中。

圖6 生成boids

? 最后,我們?cè)谥骱瘮?shù)中運(yùn)行這個(gè)世界:??

圖7 主函數(shù)

? 到這里,我們需要?jiǎng)?chuàng)建三個(gè)文件World.h 、World.cpp 和 main.cpp,并通過makefile文件來編譯程序。

? makefile定義了一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,是一個(gè)自動(dòng)化編譯工具。

圖8 makefile文件配置

? 最后,當(dāng)程序運(yùn)行正確的時(shí)候,應(yīng)該會(huì)得到以下的畫面:

? 現(xiàn)在的Boids還是只有“肉體”,而沒有“靈魂”,我們需要賦予每個(gè)boid行動(dòng)和簡(jiǎn)單思考的能力?;叵胍幌轮皩W(xué)到的有限狀態(tài)機(jī),如果將兩者結(jié)合起來,一定會(huì)發(fā)生很有趣的事情。


參考:

  • 《游戲人工智能編程案例精粹》

  • SFML? ??https://www.sfml-dev.org/tutorials/2.5/

  • 這個(gè)頻道的主播用unity實(shí)現(xiàn)了書中所有的項(xiàng)目,有需要的小伙伴可以自行觀看https://www.youtube.com/watch?v=XrxhwgyQa_Q&t=8300s

基礎(chǔ) | 自治智能體----類鳥群(二)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
玉林市| 吉安县| 中山市| 兴和县| 衡水市| 北辰区| 石林| 祁连县| 甘泉县| 凤冈县| 荔浦县| 沁阳市| 海盐县| 辉县市| 苏尼特右旗| 陇南市| 海南省| 金平| 南雄市| 肥城市| 沁源县| 视频| 化德县| 南川市| 肥乡县| 潼南县| 长海县| 鲜城| 邯郸县| 曲阜市| 无极县| 渭南市| 溧阳市| 隆昌县| 巍山| 宜兰县| 南昌市| 射洪县| 濮阳县| 金湖县| 高青县|