2017-04-25 12 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がまだ認識できなかった新しいコンボを見つける必要があります。

また、この種のプログラミングでは新しいです。私はアルゴリズムだけでなく、コードが必要です。そして、もし私がこのAIを開発したいのであれば、私は何を学ぶべきですか? 私はおそらくこれを行うことができるライブラリがたくさんあることは知っていますが、いくつかのライブラリを使用する前に基本的なことを最初に知りたいと思います。

答えて

0

真剣にパターンを描くことは非常に複雑です。ように - 研究チームは複雑です。

しかし、これまでのすべての動きを記録してから、最後のnの動きをまとめて、その順序で既存の移動リストで探して、単純なバージョンを作成できます。あなたがそれらを見つけたら(最後だけでなく)、次の動きがリストのものと同じになると推測することができます。シーケンスが見つかる回数が増え、次の移動が同じになるほど、あなたはもっと確実になることができます。

移動すると、移動の間の時間を保存して比較することもできますが、それはかなり複雑になります。

幸運を祈る!

関連する問題