Le problème est que lorsque je clique plusieurs fois sur enter, je ne sais pas comment faire pour que les gens ne puissent pas cliquer plusieurs fois sur enter pour que le canon soit super rapide.
document.onkeydown = (e) => {
e.preventDefault();
if (e.repeat) return; // Do nothing
const { key } = e;
switch(key) {
case 'ArrowUp':
cannonball.dx++,
cannonball.dy++
break;
}
};
Voici l'objet dans lequel je l'utilise
const c = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
//variables
const cannon = {
w: 150,
h: 75,
x:0,
y:0
}
const cannonball = {
x: 77,
y: 565,
r:25,
dx:0,
dy:0
}
const cannonRotate = {
degree: -43.5
}
//running the whole function
function animate(){
c.clearRect(0,0,innerWidth,innerHeight);
//cannon
c.save();
c.translate(-25,600);
c.rotate(cannonRotate.degree * Math.PI / 180);
c.fillStyle = '#000';
c.fillRect(cannon.x,cannon.y,cannon.w,cannon.h);
c.restore();
//cannonball
c.beginPath();
c.arc(cannonball.x,cannonball.y, cannonball.r, 0, Math.PI * 2, false);
c.fillStyle = '#000';
c.fill();
cannonball.x += cannonball.dx;
cannonball.y -= cannonball.dy;
document.onkeydown = (e) => {
e.preventDefault();
if (e.repeat) return; // Do nothing
const { key } = e;
switch(key) {
case 'ArrowUp':
cannonball.dx += 5,
cannonball.dy += 5
break;
}
};
requestAnimationFrame(animate)
}