私は単純な進化的AIに取り組んでいます。匿名関数を動的に生成する必要があります。そのために、条件とアクションのリストがあります。
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'); } ]
コードは、それぞれ1つを選択して、新しい関数を生成します。
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();
}