【问题标题】:Javascript predict next move based on previous dataJavascript 根据以前的数据预测下一步行动
【发布时间】:2017-04-25 08:38:22
【问题描述】:

我正在学习制作一个简单的 AI 来预测玩家下一回合将出拳的方向。只有左、右、前三个方向。

目前我只能根据出拳最多的方向来预测下一步的动作。这是我的代码

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,我还应该学习什么? 我知道也许有很多库可以做到这一点,但我想在使用某些库之前先了解基本知识。

【问题讨论】:

    标签: javascript artificial-intelligence


    【解决方案1】:

    真正发现模式非常复杂。喜欢 - 研究团队复杂。

    但是,您可以通过记录到目前为止的所有动作,然后将最后的 n 个动作收集在一起并按该顺序在现有动作列表中查找它们来制作一个简单的版本。如果您找到它们(而不仅仅是在最后),那么您可以猜测下一步将与列表中的相同。您找到顺序和下一步动作相同的次数越多,您就越有把握。

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

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 2019-09-22
      • 2023-03-05
      • 1970-01-01
      相关资源
      最近更新 更多