JavaScript:
var shotLightVisible = false;
var intervalId;
function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "black";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.translate(player.x, player.y);
ctx.rotate(angle + Math.PI / 2);
ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);
if (shotLightVisible) {
ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
}
ctx.restore();
}
function blink() {
// alterner l'affichage de l'image shotLightImage
if (shotLightVisible) {
shotLightVisible = false;
} else {
shotLightVisible = true;
}
}
canvas.addEventListener("mousedown", function () {
// initialiser la variable shotLightVisible à true au début du clignotement
shotLightVisible = true;
var aK47sound = new Audio('./sounds/AK-47.mp3');
aK47sound.play();
intervalId = setInterval(function () {
var aK47sound = new Audio('./sounds/AK-47.mp3');
aK47sound.play();
blink();
}, 150);
window.addEventListener("mouseup", function () {
clearInterval(intervalId);
shotLightVisible = false;
})
});
Comment faire en sorte qu'il ne soit pas possible de spamer comme un gros malade en mettant une cadence max de 1 coup (son + flash) toutes les 0.15 sec
Pour limiter le joueur à un seul coup toutes les 0,15 seconde, vous pouvez utiliser une variable `lastEventTime` pour stocker le moment où le dernier tir a été effectué. Puis, dans l'événement "mousedown", vous pouvez vérifier si suffisamment de temps s'est écoulé depuis le dernier tir, et n'exécuter le code du tir que si c'est le cas.
Voici comment vous pouvez modifier votre code pour appliquer cette restriction :
```
var shotLightVisible = false;
var intervalId;
var lastEventTime = 0; // stocke le moment où le dernier tir a été effectué
function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "black";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.translate(player.x, player.y);
ctx.rotate(angle + Math.PI / 2);
ctx.drawImage(player.image, -player.width / 2, -player.height / 2, player.width, player.height);
if (shotLightVisible) {
ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 20, 20, 20);
}
ctx.restore();
}
function blink() {
// alterner l'affichage de l'image shotLightImage
if (shotLightVisible) {
shotLightVisible = false;
} else {
shotLightVisible = true;
}
}
canvas.addEventListener("mousedown", function () {
// vérifier si suffisamment de temps s'est écoulé depuis le dernier tir
if (Date.now() - lastEventTime > 150) {
// initialiser la variable shotLightVisible à true au début du clignotement
shotLightVisible = true;
var aK47sound = new Audio('./sounds/AK-47.mp3');
aK47sound.play();
intervalId = setInterval(function () {
var aK47sound = new Audio('./sounds/AK-47.mp3');
aK47