我正在研究简单的进化人工智能。我需要动态生成一个匿名函数。为此,我有一个条件和操作列表:
var conditions = [
function () { return enemyNear(), },
function () { return mySpeed() > 5; },
function () { return 1 === 1; }];
var actions = [
function () { return alert('walk'); },
function () { return alert('jump'); }
function () { return alert('attack'); } ]
代码选择其中一个来生成一个新函数:
condition = conditions [Math.floor(Math.random()*conditions .length)];
actions = conditions [Math.floor(Math.random()*actions .length)];
如果选择的条件是enemyNear()
并且选择的动作是walk()
,我如何生成简单的匿名函数?
behavior = function() {
if(enemyNear()) {
walk();
}
}
如果需要,我可以更改数组的保存方式。如何才能做到这一点?
所有字符behaviors
都在这样的循环中调用:
for(i=0,i<chars.length,i++) {
chars[i].behavior.call();
}