極客遊戲——坦克大戰AI編寫

來源:互聯網
上載者:User

極客遊戲——坦克大戰AI編寫

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

傳統的遊戲,都是人們來操作遊戲元素,而這個遊戲不同,你要寫一套演算法,用這套演算法去控制你的坦克,遊戲開始之後,你能做的就只是看著兩台坦克對戰,他們的靈活性,戰鬥力以至於『智能』都取決於你的演算法。

這讓我想到了多年前的『磁芯大戰』,這是最古老的遊戲,也是電腦病毒的前身,兩個科學家互相用組合語言編寫能夠破壞對方程式的程式,生存到最後即為勝者。今天我們鮮有人再有能力用組合語言去編寫程式了,但是CODEGAME卻給了我們一種『創造』的可能。

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

這些操作都是由指令來構成的,比如

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

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

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

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

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

我首先給我的坦克加上了探路系統,這個系統的演算法由一系列語句實現,它可以讓我的坦克在遇到障礙物之前就及時轉向,並且能夠在死胡同裡面很快的走出來:

緊接著我又編寫了攻擊系統,這個系統能讓我追蹤並在合適的時候發射子彈。

這兩個系統基本上保證了我的小坦克初具威嚴了,它可以邊走邊射什麼的。但是作為一台聰明的坦克,它還應該有找星星的演算法,因為儘可能多的吃星星也是獲勝條件之一,於是我寫了找星星演算法

找星星是優先順序不太高的,當能打敵人的時候是沖敵人去的,但是如果沒事,坦克還會去找找星星。到這基本上就差不多了,但是我注意到在對戰中我還是經常被別人的坦克擊中,於是我又加了閃避系統,使得我的小坦克在發現敵人的子彈的時候能快速逃離,這樣又增加了一些勝算。

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

這真是人工智慧的樂趣。

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

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

如果你編寫了你的小坦克,歡迎你挑戰我,我的使用者名稱是wdkwdkwdk,在對手使用者名稱那裡填寫我的名字,即可與我的坦克對戰~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.