Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript循环和更改变量_Javascript_Html_If Statement - Fatal编程技术网

JavaScript循环和更改变量

JavaScript循环和更改变量,javascript,html,if-statement,Javascript,Html,If Statement,我正在制作一个人工智能代理来玩谷歌chromes t-rex游戏,需要帮助创建一个循环,以便在游戏开始时继续玩,我必须实际按下空格键 document.getElementById("botStatus").addEventListener("change", function() { if (this.checked === true) { // Activate bot var INTERVAL = 2; window.tRexBot = setInterval

我正在制作一个人工智能代理来玩谷歌chromes t-rex游戏,需要帮助创建一个循环,以便在游戏开始时继续玩,我必须实际按下空格键

document.getElementById("botStatus").addEventListener("change", function() {

  if (this.checked === true) {
    // Activate bot
    var INTERVAL = 2;
    window.tRexBot = setInterval(function() {
      var tRex = Runner.instance_.tRex;
      var obstacles = Runner.instance_.horizon.obstacles;
      var lengthsize = 0;
      var a = 0.1;
      var b = 5;
      var c = 35;
      var d = 160;
      var posWidth = 20;

      // if (!tRex.jumping && (obstacles.length > 0) && (obstacles[0].xPos + obstacles[0].width) <= ((parseInt(Runner.instance_.currentSpeed - 0.1) - 5) * 34 + 160) && (obstacles[0].xPos + obstacles[0].width) > 20) {
      if (!tRex.jumping && (obstacles.length > lengthsize) && (obstacles[0].xPos + obstacles[0].width) <= ((parseInt(Runner.instance_.currentSpeed - a) - b) * c + d) && (obstacles[0].xPos + obstacles[0].width) > posWidth) {
        // console.log(obstacles[0].xPos + obstacles[0].width + " | " + ((parseInt(Runner.instance_.currentSpeed - 0.1) - 5) * 34 + 160));
        tRex.startJump();
      }
    }, INTERVAL);
  } else {
    // Disable bot
    clearInterval(tRexBot);
  }
});
document.getElementById(“botStatus”).addEventListener(“更改”,函数(){
如果(this.checked==true){
//激活机器人
var区间=2;
window.tRexBot=setInterval(函数(){
var tRex=Runner.instance\uux.tRex;
var障碍=Runner.instance\uuz.horizon.barries;
var lengthsize=0;
var a=0.1;
var b=5;
var c=35;
var d=160;
var-posWidth=20;
//如果(!tRex.jumping&&(barriends.length>0)和(barriends[0].xPos+barriends[0].width)20){
如果(!tRex.jumping&&(障碍物.length>lengthsize)&&(障碍物[0].xPos+障碍物[0].width)posWidth){
//console.log(障碍[0].xPos+障碍[0].width+“|”+((parseInt(Runner.instance|.currentSpeed-0.1)-5)*34+160));
tRex.startJump();
}
},间隔);
}否则{
//禁用机器人
净空间隔(tRexBot);
}
});
我所需要的是,一旦间隔结束,我希望它能获得游戏当前的速度和障碍物的距离,然后增加或减少我在新间隔中设置的变量,这样它就有希望学习如何在速度加快时越来越深入游戏


如果这样做有意义的话?

您可以做一些更改来改进代码

1) 将启动/停止bot的代码提取到它们自己的函数中

var INTERVAL = 2;

function startBot(){
  var bot = {}; //empty bot info
  bot.tRex = Runner.instance_.tRex;
  ....
  bot.posWidth = 20;
  bot.interval = setInterval(function() {
    if (!bot.tRex.jumping && (bot.obstacles.length > bot.lengthsize) /*...*/) {
        tRex.startJump();
      }
  },INTERVAL);
  return bot;
}

function stopBot(bot) {
  clearInterval(bot.interval);
}

document.getElementById("botStatus").addEventListener("change", function() {
  if (this.checked === true) {
    window.bot = startBot();
  }
  else {
    stopBot(window.bot);
  }
}
2) 将配置参数传递到“startBot”函数中,以便您可以在外部更轻松地更改它

var config = { posWidth:20,a: 01,...};

startBot(config);
function startBot(config) {
  var bot = config;
  //....
}

有些人已经这样做了,也许你可以从他们的github中提取间隔信息?我不能从github存储库中提取太多代码,因为我是为人工智能的大学模块做这件事的。如果我完全诚实的话,我真的很难掌握许多概念。而且,javascript不是我最喜欢的语言……谢谢你的帮助链接:)你在这里获得的任何帮助都将获得麻省理工学院许可证,该许可证与project@Marker发布的许可证相同。它可以免费用于任何应用程序。无论你是从这里获得的还是从上面的项目获得的,你都必须引用你的来源(出于学术目的).只要看看他们是如何做到的,并提取相关部分-你不需要复制整个文件