【发布时间】: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