2017-04-25 24 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

真正发现图案非常复杂。像 - 研究团队很复杂。

但是,您可以通过记录迄今为止的所有动作,然后将最后一个动作汇总在一起,然后按照该顺序在现有动作列表中查找它们。如果你发现它们(而不仅仅是最后),那么你可以猜测下一步将与列表中的步骤相同。你发现序列的次数越多,下一步行动也是一样的,你就越有把握。

继续前进,您可以节省动作之间的时间,并开始比较它们,但这会让事情变得复杂很多。

祝你好运!

相关问题