自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

極客游戲——坦克大戰(zhàn)AI編寫

開發(fā) 前端
傳統(tǒng)的游戲,都是人們來操作游戲元素,而這個游戲不同,你要寫一套算法,用這套算法去控制你的坦克,游戲開始之后,你能做的就只是看著兩臺坦克對戰(zhàn),他們的靈活性,戰(zhàn)斗力以至于『智能』都取決于你的算法。

今天看到一個特別有意思的東西,叫做CODE GAME,你可以通過Javascripe語言來給你的小坦克寫AI,然后與其他人的AI坦克對戰(zhàn)。

極客游戲——坦克大戰(zhàn)AI編寫

傳統(tǒng)的游戲,都是人們來操作游戲元素,而這個游戲不同,你要寫一套算法,用這套算法去控制你的坦克,游戲開始之后,你能做的就只是看著兩臺坦克對戰(zhàn),他們的靈活性,戰(zhàn)斗力以至于『智能』都取決于你的算法。

這讓我想到了多年前的『磁芯大戰(zhàn)』,這是最古老的游戲,也是計算機病毒的前身,兩個科學(xué)家互相用匯編語言編寫能夠破壞對方程序的程序,生存到最后即為勝者。今天我們鮮有人再有能力用匯編語言去編寫程序了,但是CODEGAME卻給了我們一種『創(chuàng)造』的可能。

CODEGAME的世界由一片由16×12的『格』組成,這些格子中有些是暢通無阻的大路,有些是子彈和坦克都無法穿越的石頭,還有些是柔軟而富有隱蔽性的草坪,坦克如果處在草坪中,就不會對對方發(fā)現(xiàn)。坦克可以發(fā)射子彈,也可以前進,還可以朝左或朝右轉(zhuǎn)向。事實上,這幾乎就是你能有的所有操作了。

這些操作都是由指令來構(gòu)成的,比如

  1. 坦克前進:me.go() 
  2.  
  3. 坦克轉(zhuǎn)向:me.turn(n) n=left or right 
  4.  
  5. 坦克發(fā)射子彈:me.fire() 

這是我們能做的所有操作,但是我們還可以通過一些函數(shù)來感知自身或周圍的情況,比如

  1. 己方坦克坐標(biāo):me.tank.position 
  2.  
  3. 己方坦克朝向:me.tank.direction 
  4.  
  5. 敵方坦克坐標(biāo):enemy.tank.position 
  6.  
  7. 敵方坦克朝向:enemy.tank。position 
  8.  
  9. 地圖:game.map[x][y] x為橫坐標(biāo),y為豎坐標(biāo),返回的是那一點是『石頭』『草坪』還是什么都沒有 
  10.  
  11. 星星坐標(biāo):star.position 

我們的目的就是讓我們的小坦克吃盡可能多的星星,或者消滅敵方坦克,同時注意不要被地方擊中,在以上前提下,還要使算法盡可能高效。

這個上手非常容易,官方的指南中的代碼直接貼上去,就得到了一個可以轉(zhuǎn)向可以發(fā)射子彈的坦克,但是如果你希望你的坦克更加聰明一些,那就需要自己動手了。

我首先給我的坦克加上了探路系統(tǒng),這個系統(tǒng)的算法由一系列語句實現(xiàn),它可以讓我的坦克在遇到障礙物之前就及時轉(zhuǎn)向,并且能夠在死胡同里面很快的走出來:

極客游戲——坦克大戰(zhàn)AI編寫

緊接著我又編寫了攻擊系統(tǒng),這個系統(tǒng)能讓我追蹤并在合適的時候發(fā)射子彈。

極客游戲——坦克大戰(zhàn)AI編寫

這兩個系統(tǒng)基本上保證了我的小坦克初具威嚴(yán)了,它可以邊走邊射什么的。但是作為一臺聰明的坦克,它還應(yīng)該有找星星的算法,因為盡可能多的吃星星也是獲勝條件之一,于是我寫了找星星算法

極客游戲——坦克大戰(zhàn)AI編寫

找星星是優(yōu)先級不太高的,當(dāng)能打敵人的時候是沖敵人去的,但是如果沒事,坦克還會去找找星星。到這基本上就差不多了,但是我注意到在對戰(zhàn)中我還是經(jīng)常被別人的坦克擊中,于是我又加了閃避系統(tǒng),使得我的小坦克在發(fā)現(xiàn)敵人的子彈的時候能快速逃離,這樣又增加了一些勝算。

極客游戲——坦克大戰(zhàn)AI編寫

至此,一個『聰明』的小坦克就誕生了,這個坦克會主動發(fā)現(xiàn)敵人,然后轉(zhuǎn)到正確的方向開炮,遇到對方的子彈還會躲閃,同時它會在整個地圖尋找星星,雖然我為它寫了所有AI,但是我還是贊嘆它的靈活和智慧,簡單的『左轉(zhuǎn)』『前進』『右轉(zhuǎn)』『射擊』結(jié)合對狀態(tài)的感知,居然會讓死物變得靈活。這種靈活并非『控制』的靈活,而是不受控制的靈活。你不能操作你的坦克,你只能看著它走來走去。

這真是人工智能的樂趣。

生命和智慧有時候并非我們想象的那么復(fù)雜,也許它們更像是一種由簡單演變而來的精巧,生物的每個基因都并不復(fù)雜,可是卻組合成了嘆為觀止的生命體系。而程序中的簡單指令可以在某種程度上還原這種精巧。

我的坦克雖然有六百行代碼,可是在很多方面還是做的不夠,比如對障礙物的高級判斷,預(yù)先計算敵方坦克路線來發(fā)射子彈等等,這些都是可以完善的。值得一提的是,這并非『程序員』的游戲,它所需要的編程知識非常少,官方的文檔可以讓所有人在十分鐘內(nèi)入門,而這些也就足夠了。這個游戲更需要的是對行為的思考和對算法的考慮。我認(rèn)為它適合每個極客,每個對人工智能,計算機與生物感興趣的人。

如果你編寫了你的小坦克,歡迎你挑戰(zhàn)我,我的用戶名是wdkwdkwdk,在對手用戶名那里填寫我的名字,即可與我的坦克對戰(zhàn)~

責(zé)任編輯:張偉 來源: wdk的博客
相關(guān)推薦

2013-07-17 18:38:32

Android游戲源碼Android源碼下載Android坦克大戰(zhàn)

2011-04-25 09:30:42

坦克大戰(zhàn)Java

2018-01-22 20:35:27

微信小游戲開發(fā)

2022-03-10 11:04:04

Vue3Canvas前端

2020-07-07 09:36:22

AI 數(shù)據(jù)人工智能

2023-12-20 17:34:13

科技人工智能

2020-10-24 23:38:46

新基建

2013-09-24 10:40:41

華為 服務(wù)終端

2012-08-29 15:49:50

2010-09-06 11:02:35

喬布斯

2016-05-16 15:23:54

任意云戴爾微軟

2024-07-31 15:44:06

2022-10-24 08:40:14

AI虛擬手勢計算

2016-05-16 14:32:30

任意云戴爾微軟

2016-05-24 13:36:56

任意云戴爾微軟

2016-01-21 15:19:43

性能極客APM

2015-04-30 13:21:38

2013-09-26 09:47:42

豌豆莢

2011-05-04 15:21:20

swing
點贊
收藏

51CTO技術(shù)棧公眾號