JavaScript循环和更改变量
我正在制作一个人工智能代理来玩谷歌chromes t-rex游戏,需要帮助创建一个循环,以便在游戏开始时继续玩,我必须实际按下空格键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
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发布的许可证相同。它可以免费用于任何应用程序。无论你是从这里获得的还是从上面的项目获得的,你都必须引用你的来源(出于学术目的).只要看看他们是如何做到的,并提取相关部分-你不需要复制整个文件