我正在用一个简单的JS脚本击败Chrome dino游戏,这是一个非常基本的挑战。您可以在chrome:// dino /或https://chromedino.com/上找到它 我的跳转/仙人掌事件调度工作正常,但是我的“鸭子”按住不放,我不知道如何调试/查找为什么按住它而不是仅仅按下。
任何帮助将不胜感激,这只是一个简单的小项目,没什么大不了的
// A JS script made for the offline Chrome dino game. Accessible from either chrome://dino/ or https://chromedino.com/
var canvas = document.getElementsByTagName("canvas")[0],
ctx = canvas.getContext("2d"); // Return the drawing context of the canvas
(function recurse(){
// Reduce the Uint8ClampedArray into a number. If it isn't zero, there's an obstacle
// This is the cactus jump
let cactus = (ctx.getImageData(85,118,60,1).data).reduce(reducer);
// This is the duck, when the Pterodactyl comes
let pterodactyl = (ctx.getImageData(90,85,1,1 ).data).reduce(reducer);
if(cactus){
var e = new KeyboardEvent('keydown',{'keyCode':38,'which':38});
document.dispatchEvent(e);
console.log(cactus)
} else if(pterodactyl){
var e = new KeyboardEvent('keydown',{'keyCode':40,'which':40});
document.dispatchEvent(e);
}
setTimeout(recurse, 50);
})();
function reducer(a,b){
return a + b
}
我已经检查了键盘事件没有触发https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent的KeyboardEvent.repeat
并且不是!
答案 0 :(得分:1)
然后可以尝试使用keypress
而不是keydown
那为什么跳起来很好呢?
不知道您的jump
是什么,但我敢打赌,jump
动作不能被压下,与duck
一样,您只要按下键就回避
希望有帮助