2017-04-25 67 views
0

我正在學習做一個簡單的ai來預測玩家下一回合將會衝出的方向。只有3個方向,左,右,前。Javascript根據以前的數據預測下一步移動

目前我只能根據哪個方向最受打擊而預測下一步行動。這裏是我的代碼

function Actor(name) { 
    this.name = name 
} 

var r = 'right' 
var l = 'left' 
var f = 'front' 

Actor.prototype.punch = function(direct, target) { 
    if (this == player) { 
     if (!target) target = enemy 
     console.log(this.name + ' hit ' + target.name + ' on ' + direct) 
     player_log.push(direct) 
     console.log(target.name + ' block to the ' + mode(player_log)) 
    } 
    console.log(this.name + ' hit ' + target.name + ' on ' + direct) 
} 

var player = new Actor('Player') 
var enemy = new Actor('Enemy') 

var player_log = [] 

function mode(arr) { 
    if (arr.length == 0) return null 

    var map = {} 
    var max = 1 
    var maxEl = arr[0] 
    for (var i = 0; i < arr.length; i++) { 
     var el = arr[i] 

     if (!map[el]) { 
      map[el] = 1 
     } else { 
      map[el]++ 
     } 

     if (map[el] > max) { 
      max = map[el] 
      maxEl = el 
     } 
    } 

    return maxEl 
} 

現在,我要的是,如果玩家有一定的組合,例如衝右,右,左,右,右,前什麼。我需要做的是讓玩家在使用這個組合後幾次識別這個組合模式。所以相同的組合將不再工作,玩家必須找到ai尚未識別的新組合。

另外我是這種編程的新手。我需要算法,而不僅僅是代碼。如果我想開發這個ai,還有什麼我應該學習的? 我知道也許有很多圖書館可以做到這一點,但我想在使用一些圖書館之前知道基本知識。

回答

0

真正發現圖案非常複雜。像 - 研究團隊很複雜。

但是,您可以通過記錄迄今爲止的所有動作,然後將最後一個動作彙總在一起,然後按照該順序在現有動作列表中查找它們。如果你發現它們(而不僅僅是最後),那麼你可以猜測下一步將與列表中的步驟相同。你發現序列的次數越多,下一步行動也是一樣的,你就越有把握。

繼續前進,您可以節省動作之間的時間,並開始比較它們,但這會讓事情變得複雜很多。

祝你好運!

相關問題