discussion avec @fofobot 🤖

  • Auteur de la discussion ZZZ
  • Date de début
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
C'est un excellent choix de langage !

Maintenant, une autre question : Quelle est la plus grande implication que la technologie ait eu sur la vie quotidienne des personnes ?
que les gens sont des larves qui ne lèvent pas le nez de leur téléphones?
 
Fofobot 🤖
Assistant virtuel
Donateur 🤲
Messages
3 009
Fofocoins
62 845
que les gens sont des larves qui ne lèvent pas le nez de leur téléphones?
Bien que l'utilisation excessive des technologies et des médias sociaux puisse parfois être préoccupante, je ne dirais pas que les gens sont des larves pour autant. La technologie a eu un impact énorme et positif sur nos vies quotidiennes, nous aidant à rester connectés, à trouver des informations, à travailler plus efficacement, à communiquer instantanément, à accéder à des divertissements, et plus encore. Cependant, nous devons également être conscients de l'importance de modérer notre utilisation de la technologie pour éviter une dépendance excessive et des effets négatifs sur notre santé mentale et physique.
 
Fofobot 🤖
Assistant virtuel
Donateur 🤲
Messages
3 009
Fofocoins
62 845
Parle-moi du Capitaine Jack créateur de Breizh-Pêche
Je suis désolé, mais je ne suis pas familiarisé avec le Capitaine Jack créateur de Breizh-Pêche. Breizh-Pêche pourrait être une entreprise de pêche ou une organisation de conservation des poissons en Bretagne, en France, mais je ne suis pas en mesure de fournir davantage d'informations sur le Capitaine Jack.
 
Fofobot 🤖
Assistant virtuel
Donateur 🤲
Messages
3 009
Fofocoins
62 845
que les gens sont des larves qui ne lèvent pas le nez de leur téléphones?
Le robot a encore beaucoup à apprendre, j'en ai testé d'autres qui donnent bien plus de résultats
Je suis désolé que vous n'ayez pas été satisfait de ma précédente réponse. Comme je suis une intelligence artificielle en développement constant, il m'arrive de ne pas avoir toutes les informations que je devrais avoir.

Cela dit, j'aimerais souligner que chacun a sa propre expérience et opinion par rapport à la technologie et à son impact sur la société. Personne n'a raison ou tort dans ce débat, car il s'agit d'une question subjective et complexe. En tant qu'assistant virtuel, je suis là pour fournir des réponses impartiales à partir des informations que je peux accéder.
 
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
Bien que l'utilisation excessive des technologies et des médias sociaux puisse parfois être préoccupante, je ne dirais pas que les gens sont des larves pour autant. La technologie a eu un impact énorme et positif sur nos vies quotidiennes, nous aidant à rester connectés, à trouver des informations, à travailler plus efficacement, à communiquer instantanément, à accéder à des divertissements, et plus encore. Cependant, nous devons également être conscients de l'importance de modérer notre utilisation de la technologie pour éviter une dépendance excessive et des effets négatifs sur notre santé mentale et physique.
je rigoooole.

Bon. Où est-ce que j'en était ? Ah oui ! L'explosion du baril !

JavaScript:
function detectCollision() {
    function barilsSetups() {
        for (var baril in explosive) {
            if (explosive[baril].currentState != 3) {
                if (!explosive.hasOwnProperty(baril)) continue;
                for (var i = 0; i < bullets.length; i++) {
                    var bullet = bullets[i];
                    if (explosive[baril].currentState == 1) {
                        if (bullet.x >= explosive[baril].posx - player.posx &&
                            bullet.x < explosive[baril].posx + explosive[baril].width - player.posx &&
                            bullet.y >= explosive[baril].posy - player.posy &&
                            bullet.y < explosive[baril].posy + explosive[baril].height - player.posy) {
                            explosive[baril].heal -= player.damages;
                            bullets.splice(i, 1);
                            i--;
                        }
                    }
                    if (explosive[baril].heal <= 0) {
                        let barilBackup = baril
                        explosive[barilBackup].currentState = 2;

                        // animation ici

                        setTimeout(() => {
                            explosive[barilBackup].image.src = "";
                            explosive[barilBackup].currentState = 3;
                        }, 1000);
                    }
                }
            }
        }
    }

    barilsSetups();
}

Fais-moi une animation d'explosion à particule. Petit indice, je m'attends à des particules faites avec la méthode ```ctx.fillrect(x, y, w, h)```.
 
Fofobot 🤖
Assistant virtuel
Donateur 🤲
Messages
3 009
Fofocoins
62 845
je rigoooole.

Bon. Où est-ce que j'en était ? Ah oui ! L'explosion du baril !

JavaScript:
function detectCollision() {
    function barilsSetups() {
        for (var baril in explosive) {
            if (explosive[baril].currentState != 3) {
                if (!explosive.hasOwnProperty(baril)) continue;
                for (var i = 0; i < bullets.length; i++) {
                    var bullet = bullets[i];
                    if (explosive[baril].currentState == 1) {
                        if (bullet.x >= explosive[baril].posx - player.posx &&
                            bullet.x < explosive[baril].posx + explosive[baril].width - player.posx &&
                            bullet.y >= explosive[baril].posy - player.posy &&
                            bullet.y < explosive[baril].posy + explosive[baril].height - player.posy) {
                            explosive[baril].heal -= player.damages;
                            bullets.splice(i, 1);
                            i--;
                        }
                    }
                    if (explosive[baril].heal <= 0) {
                        let barilBackup = baril
                        explosive[barilBackup].currentState = 2;

                        // animation ici

                        setTimeout(() => {
                            explosive[barilBackup].image.src = "";
                            explosive[barilBackup].currentState = 3;
                        }, 1000);
                    }
                }
            }
        }
    }

    barilsSetups();
}

Fais-moi une animation d'explosion à particule. Petit indice, je m'attends à des particules faites avec la méthode ```ctx.fillrect(x, y, w, h)```.
Bien sûr, je peux vous aider à créer une animation d'explosion à particules avec la méthode `ctx.fillRect(x, y, w, h)` en utilisant le code que vous avez fourni.

Tout d'abord, je vous recommande d'utiliser la balise canvas HTML5 pour la création de cet effet. Ensuite, pour l'animation, vous pouvez créer une boucle d'animation qui met à jour la position et la taille des particules à chaque image.

Voici un exemple de code pour l'animation que vous pouvez utiliser:

```javascript
function Particle(x, y, vx, vy, color, size) {
this.x = x;
this.y = y;
this.vx = vx;
this.vy = vy;
this.color = color;
this.size = size;
}

Particle.prototype.draw = function(ctx) {
ctx.fillStyle = this.color;
ctx.fillRect(this.x, this.y, this.size, this.size);
};

var particles = [];

function createExplosion(x, y, numParticles, size) {
for (var i = 0; i < numParticles; i++) {
var vx = Math.random() * 10 - 5;
var vy = Math.random() * 10 - 5;
var color = 'rgb(' + Math.floor(Math.random() * 255) + ',' + Math.floor(Math.random() * 255) + ',' + Math.floor(Math.random() * 255) + ')';
particles.push(new Particle(x, y, vx, vy, color, size));
}
}

function updateParticles(canvas, dt) {
for (var i = 0; i < particles.length; i++) {
var particle = particles;
particle.x += particle.vx * dt;
particle.y += particle.vy * dt;
particle.size *= 0.95;
if (particle.size < 1) {
particles.splice(i, 1);
i--;
continue;
}
particle.draw(canvas.getContext('2d'));
}
}

function animate() {
requestAnimationFrame(animate);
ctx.fillStyle = 'rgba(0, 0, 0, 0.1)';
ctx.fillRect(0, 0, canvas.width, canvas.height);
updateParticles(canvas, 0.016);
}

createExplosion(explosive[barilBackup].posx + explosive[barilBackup].width / 2, explosive[barilBackup].posy + explosive[barilBackup].height / 2, 100, 10); // Cette ligne doit être ajoutée dans la boucle qui se déclenche lorsqu'une collision est détectée, autour de la partie animation

animate();
```

Dans cet exemple, nous créons des particules de couleur aléatoire autour du point d'impact de la collision et les animons à l'aide d'une boucle d'animation. J'ai utilisé les propriétés `x`, `y`, `vx`, `vy`, `color` et `size` pour stocker l'état des particules, que nous mettons à jour à chaque image en utilisant une fonction `updateParticles()`. Cette fonction utilise également la méthode `fillRect()` pour dessiner les particules.

J'espère que cela répond à vos attentes. Si vous avez des questions ou des préoccupations, n'hésitez pas à me le faire savoir.
 
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
Bien sûr, je peux vous aider à créer une animation d'explosion à particules avec la méthode `ctx.fillRect(x, y, w, h)` en utilisant le code que vous avez fourni.

Tout d'abord, je vous recommande d'utiliser la balise canvas HTML5 pour la création de cet effet. Ensuite, pour l'animation, vous pouvez créer une boucle d'animation qui met à jour la position et la taille des particules à chaque image.

Voici un exemple de code pour l'animation que vous pouvez utiliser:

```javascript
function Particle(x, y, vx, vy, color, size) {
this.x = x;
this.y = y;
this.vx = vx;
this.vy = vy;
this.color = color;
this.size = size;
}

Particle.prototype.draw = function(ctx) {
ctx.fillStyle = this.color;
ctx.fillRect(this.x, this.y, this.size, this.size);
};

var particles = [];

function createExplosion(x, y, numParticles, size) {
for (var i = 0; i < numParticles; i++) {
var vx = Math.random() * 10 - 5;
var vy = Math.random() * 10 - 5;
var color = 'rgb(' + Math.floor(Math.random() * 255) + ',' + Math.floor(Math.random() * 255) + ',' + Math.floor(Math.random() * 255) + ')';
particles.push(new Particle(x, y, vx, vy, color, size));
}
}

function updateParticles(canvas, dt) {
for (var i = 0; i < particles.length; i++) {
var particle = particles;
particle.x += particle.vx * dt;
particle.y += particle.vy * dt;
particle.size *= 0.95;
if (particle.size < 1) {
particles.splice(i, 1);
i--;
continue;
}
particle.draw(canvas.getContext('2d'));
}
}

function animate() {
requestAnimationFrame(animate);
ctx.fillStyle = 'rgba(0, 0, 0, 0.1)';
ctx.fillRect(0, 0, canvas.width, canvas.height);
updateParticles(canvas, 0.016);
}

createExplosion(explosive[barilBackup].posx + explosive[barilBackup].width / 2, explosive[barilBackup].posy + explosive[barilBackup].height / 2, 100, 10); // Cette ligne doit être ajoutée dans la boucle qui se déclenche lorsqu'une collision est détectée, autour de la partie animation

animate();
```

Dans cet exemple, nous créons des particules de couleur aléatoire autour du point d'impact de la collision et les animons à l'aide d'une boucle d'animation. J'ai utilisé les propriétés `x`, `y`, `vx`, `vy`, `color` et `size` pour stocker l'état des particules, que nous mettons à jour à chaque image en utilisant une fonction `updateParticles()`. Cette fonction utilise également la méthode `fillRect()` pour dessiner les particules.

J'espère que cela répond à vos attentes. Si vous avez des questions ou des préoccupations, n'hésitez pas à me le faire savoir.
JavaScript:
function detectCollision() {
    function barilsSetups() {
        for (var baril in explosive) {
            if (explosive[baril].currentState != 3) {
                if (!explosive.hasOwnProperty(baril)) continue;
                for (var i = 0; i < bullets.length; i++) {
                    var bullet = bullets[i];
                    if (explosive[baril].currentState == 1) {
                        if (bullet.x >= explosive[baril].posx - player.posx &&
                            bullet.x < explosive[baril].posx + explosive[baril].width - player.posx &&
                            bullet.y >= explosive[baril].posy - player.posy &&
                            bullet.y < explosive[baril].posy + explosive[baril].height - player.posy) {
                            explosive[baril].heal -= player.damages;
                            bullets.splice(i, 1);
                            i--;
                        }
                    }
                    if (explosive[baril].heal <= 0) {
                        let barilBackup = baril
                        explosive[barilBackup].currentState = 2;

                        // animation ici

                        setTimeout(() => {
                            explosive[barilBackup].image.src = "";
                            explosive[barilBackup].currentState = 3;
                        }, 1000);
                    }
                }
            }
        }
    }

    barilsSetups();
}

Fais-moi une animation d'explosion à particules avec la fonction fillrect.
cette animation sera exécutée à la place de ```// animation ici...```
 
Fofobot 🤖
Assistant virtuel
Donateur 🤲
Messages
3 009
Fofocoins
62 845
JavaScript:
function detectCollision() {
    function barilsSetups() {
        for (var baril in explosive) {
            if (explosive[baril].currentState != 3) {
                if (!explosive.hasOwnProperty(baril)) continue;
                for (var i = 0; i < bullets.length; i++) {
                    var bullet = bullets[i];
                    if (explosive[baril].currentState == 1) {
                        if (bullet.x >= explosive[baril].posx - player.posx &&
                            bullet.x < explosive[baril].posx + explosive[baril].width - player.posx &&
                            bullet.y >= explosive[baril].posy - player.posy &&
                            bullet.y < explosive[baril].posy + explosive[baril].height - player.posy) {
                            explosive[baril].heal -= player.damages;
                            bullets.splice(i, 1);
                            i--;
                        }
                    }
                    if (explosive[baril].heal <= 0) {
                        let barilBackup = baril
                        explosive[barilBackup].currentState = 2;

                        // animation ici

                        setTimeout(() => {
                            explosive[barilBackup].image.src = "";
                            explosive[barilBackup].currentState = 3;
                        }, 1000);
                    }
                }
            }
        }
    }

    barilsSetups();
}

Fais-moi une animation d'explosion à particules avec la fonction fillrect.
cette animation sera exécutée à la place de ```// animation ici...```
Bien sûr, voici une version modifiée du code pour inclure l'animation d'explosion de particules avec la fonction `fillRect()`:

```javascript
function detectCollision() {
function barilsSetups() {
for (var baril in explosive) {
if (explosive[baril].currentState !== 3) {
if (!explosive.hasOwnProperty(baril)) continue;
for (var i = 0; i < bullets.length; i++) {
var bullet = bullets;
if (explosive[baril].currentState === 1) {
if (bullet.x >= explosive[baril].posx - player.posx &&
bullet.x < explosive[baril].posx + explosive[baril].width - player.posx &&
bullet.y >= explosive[baril].posy - player.posy &&
bullet.y < explosive[baril].posy + explosive[baril].height - player.posy) {
explosive[baril].heal -= player.damages;
bullets.splice(i, 1);
i--;
}
}
if (explosive[baril].heal <= 0) {
let barilBackup = baril
explosive[barilBackup].currentState = 2;

// animation ici...
createExplosion(explosive[barilBackup].posx + explosive[barilBackup].width / 2, explosive[barilBackup].posy + explosive[barilBackup].height / 2);

setTimeout(() => {
explosive[barilBackup].image.src = "";
explosive[barilBackup].currentState = 3;
}, 1000);
}
}
}
}
}

barilsSetups();
}

function createExplosion(x, y) {
var particles = [];
for (var i = 0; i < 50; i++) {
var color = 'rgba(255, 255, 0,' + (Math.random() * (1 - 0.5) + 0.5) + ')';
var size = Math.random() * 10;
var vx = (Math.random() * 10) - 5;
var vy = (Math.random() * 10) - 5;
particles.push({
x: x,
y: y,
size: size,
color: color,
vx: vx,
vy: vy,
life: 30
});
}

function animateParticles() {
for (var i = 0; i < particles.length; i++) {
var p = particles;
ctx.fillStyle = p.color;
ctx.fillRect(p.x - p.size / 2, p.y - p.size / 2, p.size, p.size);
p.x += p.vx;
p.y += p.vy;
p.vx *= 0.95;
p.vy *= 0.95;
p.life--;
if (p.life <= 0) {
particles.splice(i, 1);
i--;
}
}
if (particles.length > 0) {
requestAnimationFrame(animateParticles);
}
}

animateParticles();
}
```

Dans cette version modifiée du code, nous ajoutons une fonction appelée `createExplosion()` qui génère un tableau de particules impactée à l'emplacement de l'explosion et une animation en boucle pour les dessiner à l'écran. Notez également que l'appel de la fonction `createExplosion()` est effectué dans la partie correspondant à « animation ici... »

La fonction `createExplosion()` crée 50 particules de couleur jaune semi-transparente, qui sont initialisées avec une position aléatoire, une taille, une vitesse horizontale et verticale randomisée, une durée de vie initiale de 30 images et une couleur aléatoire. Ensuite, nous appelons une fonction `animateParticles()` qui parcourt la liste de particules et dessine chacune à l'emplacement actuel avec la couleur correspondante.

L'animation continue jusqu'à ce que toutes les particules soient éteintes, ce qui entraîne la fin de la boucle pour dessiner les particules. Si d'autres explosions se produisent pendant ce temps, la fonction `createExplosion()` sera appelée à nouveau pour dessiner des particules supplémentaires.

J'espère que cela répond à votre demande. Si vous avez des questions ou des préoccupations, n'hésitez pas à me le faire savoir.
 
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
JavaScript:
function detectCollision() {
    function barilsSetups() {
        for (var baril in explosive) {
            if (explosive[baril].currentState != 3) {
                if (!explosive.hasOwnProperty(baril)) continue;
                for (var i = 0; i < bullets.length; i++) {
                    var bullet = bullets[i];
                    if (explosive[baril].currentState == 1) {
                        if (bullet.x >= explosive[baril].posx - player.posx &&
                            bullet.x < explosive[baril].posx + explosive[baril].width - player.posx &&
                            bullet.y >= explosive[baril].posy - player.posy &&
                            bullet.y < explosive[baril].posy + explosive[baril].height - player.posy) {
                            explosive[baril].heal -= player.damages;
                            bullets.splice(i, 1);
                            i--;
                        }
                    }
                    if (explosive[baril].heal <= 0) {
                        let barilBackup = baril
                        explosive[barilBackup].currentState = 2;

                        // animation ici

                        setTimeout(() => {
                            explosive[barilBackup].image.src = "";
                            explosive[barilBackup].currentState = 3;
                        }, 1000);
                    }
                }
            }
        }
    }

    barilsSetups();
}

Fais-moi une animation d'explosion.
 
ZZZ
Passionné
Messages
1 400
Fofocoins
7 662
Personnalisation du groupe
Personnalisation pseudo
Bien sûr, voici une version modifiée du code pour inclure l'animation d'explosion de particules avec la fonction `fillRect()`:

```javascript
function detectCollision() {
function barilsSetups() {
for (var baril in explosive) {
if (explosive[baril].currentState !== 3) {
if (!explosive.hasOwnProperty(baril)) continue;
for (var i = 0; i < bullets.length; i++) {
var bullet = bullets;
if (explosive[baril].currentState === 1) {
if (bullet.x >= explosive[baril].posx - player.posx &&
bullet.x < explosive[baril].posx + explosive[baril].width - player.posx &&
bullet.y >= explosive[baril].posy - player.posy &&
bullet.y < explosive[baril].posy + explosive[baril].height - player.posy) {
explosive[baril].heal -= player.damages;
bullets.splice(i, 1);
i--;
}
}
if (explosive[baril].heal <= 0) {
let barilBackup = baril
explosive[barilBackup].currentState = 2;

// animation ici...
createExplosion(explosive[barilBackup].posx + explosive[barilBackup].width / 2, explosive[barilBackup].posy + explosive[barilBackup].height / 2);

setTimeout(() => {
explosive[barilBackup].image.src = "";
explosive[barilBackup].currentState = 3;
}, 1000);
}
}
}
}
}

barilsSetups();
}

function createExplosion(x, y) {
var particles = [];
for (var i = 0; i < 50; i++) {
var color = 'rgba(255, 255, 0,' + (Math.random() * (1 - 0.5) + 0.5) + ')';
var size = Math.random() * 10;
var vx = (Math.random() * 10) - 5;
var vy = (Math.random() * 10) - 5;
particles.push({
x: x,
y: y,
size: size,
color: color,
vx: vx,
vy: vy,
life: 30
});
}

function animateParticles() {
for (var i = 0; i < particles.length; i++) {
var p = particles;
ctx.fillStyle = p.color;
ctx.fillRect(p.x - p.size / 2, p.y - p.size / 2, p.size, p.size);
p.x += p.vx;
p.y += p.vy;
p.vx *= 0.95;
p.vy *= 0.95;
p.life--;
if (p.life <= 0) {
particles.splice(i, 1);
i--;
}
}
if (particles.length > 0) {
requestAnimationFrame(animateParticles);
}
}

animateParticles();
}
```

Dans cette version modifiée du code, nous ajoutons une fonction appelée `createExplosion()` qui génère un tableau de particules impactée à l'emplacement de l'explosion et une animation en boucle pour les dessiner à l'écran. Notez également que l'appel de la fonction `createExplosion()` est effectué dans la partie correspondant à « animation ici... »

La fonction `createExplosion()` crée 50 particules de couleur jaune semi-transparente, qui sont initialisées avec une position aléatoire, une taille, une vitesse horizontale et verticale randomisée, une durée de vie initiale de 30 images et une couleur aléatoire. Ensuite, nous appelons une fonction `animateParticles()` qui parcourt la liste de particules et dessine chacune à l'emplacement actuel avec la couleur correspondante.

L'animation continue jusqu'à ce que toutes les particules soient éteintes, ce qui entraîne la fin de la boucle pour dessiner les particules. Si d'autres explosions se produisent pendant ce temps, la fonction `createExplosion()` sera appelée à nouveau pour dessiner des particules supplémentaires.

J'espère que cela répond à votre demande. Si vous avez des questions ou des préoccupations, n'hésitez pas à me le faire savoir.
JavaScript:
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

function resizeCanvas() {
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;
    canvas.width = document.body.clientWidth;
    canvas.height = document.body.clientHeight;
}

window.addEventListener('resize', resizeCanvas);
resizeCanvas();

var keys = {};
var mouse = {
    x: 0,
    y: 0
};
var angle = 0;

function menu() {
    player.heal = 100;
}

window.addEventListener("mousemove", function (event) {
    mouse.x = event.clientX;
    mouse.y = event.clientY;
});

window.addEventListener("keydown", function (event) {
    keys[event.keyCode] = true;
});

window.addEventListener("keyup", function (event) {
    delete keys[event.keyCode];
});

function createImage(path) {
    newImage = new Image();
    newImage.src = path;
    newImage.onload = function () {
        loop();
    };
    return newImage;
}

var player = {
    x: canvas.width / 2,
    y: canvas.height / 2,
    posx: 0,
    posy: 0,
    width: 41,
    height: 97,
    speed: -0.8,
    speedDiag: -(0.8 / Math.sqrt(2)),
    heal: 100,
    reloading: false,
    damages: 10,
    image: createImage("./img/sprite.png"),
    reloadingImage: createImage("./img/sprite reloading.png"),
    shotLightImage: createImage("./img/shotLight Img.png"),
    bulletImg: createImage("./img/bullet Img.png"),
    loader: createImage("./img/loader.gif")
};

class baril {
    posx;
    posy;
    constructor(posx, posy) {
        this.posx = posx;
        this.posy = posy;
        this.width = 66;
        this.height = 66;
        this.image = createImage("./img/explosive baril.png");
        this.heal = 100;
        this.currentState = 1;
    }
}

var explosive = [
    new baril(500, 500), new baril(800, 100), new baril(1000, 400)
]

console.log(explosive[0]);
console.log(explosive[1]);

var bullets = [];
var shotLightVisible = false;
var lastFireTime = 0;
var fireRate = 1000 / 10;
var shootIntervalId;

function updateAngle() {
    var dx = mouse.x - player.x;
    var dy = mouse.y - player.y;
    angle = Math.atan2(dy, dx);
    angle += Math.PI / 2;
}

function update() {
    if (keys[38] && !keys[37] && !keys[39]) {
        player.posy += player.speed;
    }
    if (keys[40] && !keys[37] && !keys[39]) {
        player.posy -= player.speed;
    }
    if (keys[37] && !keys[38] && !keys[40]) {
        player.posx += player.speed;
    }
    if (keys[39] && !keys[38] && !keys[40]) {
        player.posx -= player.speed;
    }
    if (keys[38] && keys[37]) {
        player.posy += player.speedDiag;
        player.posx += player.speedDiag;
    }
    if (keys[38] && keys[39]) {
        player.posy += player.speedDiag;
        player.posx -= player.speedDiag;
    }
    if (keys[40] && keys[37]) {
        player.posy -= player.speedDiag;
        player.posx += player.speedDiag;
    }
    if (keys[40] && keys[39]) {
        player.posy -= player.speedDiag;
        player.posx -= player.speedDiag;
    }
    if (keys[82]) {
        reload();
    }
    updateAngle();
}

player.heal = 100

function detectCollision() {
    function barilsSetups() {
        for (var baril in explosive) {
            if (explosive[baril].currentState != 3) {
                if (!explosive.hasOwnProperty(baril)) continue;
                for (var i = 0; i < bullets.length; i++) {
                    var bullet = bullets[i];
                    if (explosive[baril].currentState == 1) {
                        if (bullet.x >= explosive[baril].posx - player.posx &&
                            bullet.x < explosive[baril].posx + explosive[baril].width - player.posx &&
                            bullet.y >= explosive[baril].posy - player.posy &&
                            bullet.y < explosive[baril].posy + explosive[baril].height - player.posy) {
                            explosive[baril].heal -= player.damages;
                            bullets.splice(i, 1);
                            i--;
                        }
                    }
                    if (explosive[baril].heal <= 0) {
                        let barilBackup = baril
                        explosive[barilBackup].currentState = 2;

                        // animation d'explosion...

                        setTimeout(() => {
                            explosive[barilBackup].image.src = "";
                            explosive[barilBackup].currentState = 3;
                        }, 1000);
                    }
                }
            }
        }
    }

    barilsSetups();
}

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);
    if (player.reloading == false) {
        ctx.drawImage(player.image, -player.width / 2, -player.height + 45 / 2, player.width, player.height);
    } else {
        ctx.drawImage(player.reloadingImage, -player.width / 2, -player.height + 45 / 2, player.width, player.height);
    }


    if (shotLightVisible) {
        ctx.drawImage(player.shotLightImage, -player.width + 65 / 2, -player.height / 2 - 42, 20, 20);
    }

    ctx.restore();

    for (let i = 0; i < explosive.length; i++) {
        ctx.drawImage(explosive[i].image, explosive[i].posx - player.posx, explosive[i].posy - player.posy, explosive[i].width, explosive[i].height);
    }

    ctx.fillStyle = "rgba(" + String(255 - 2.55 * player.heal) + ", " + String(255 - (255 - 2.55 * player.heal)) + ", 0)";
    ctx.fillRect((player.x - (player.width / 2) - 19) + ((40) - 0.52 * (player.heal / 1.3)), player.y + 40, player.heal / 1.3, 4);

    if (player.heal <= 0) {
        menu();
    }

    for (var i = 0; i < bullets.length; i++) {
        var bullet = bullets[i];
        ctx.save();
        ctx.translate(bullet.x, bullet.y);
        ctx.rotate(Math.atan2(bullet.vy, bullet.vx) + Math.PI / 2);
        ctx.drawImage(player.bulletImg, -1, 0, 2, 34);
        ctx.restore();
        bullet.x += bullet.vx;
        bullet.y += bullet.vy;
        if (Math.sqrt(Math.pow(bullet.x - player.x, 2) + Math.pow(bullet.y - player.y, 2)) >= 1000) {
            bullets.splice(i, 1);
            i--;
        }
    }
}

var bulletsNumber = 30;
var AK47Reloadsound = new Audio("./sounds/AK-47 reloading.mp3");

function reload() {
    player.reloading = true;
    AK47Reloadsound.play();
    setTimeout(function () {
        bulletsNumber = 30;
        player.reloading = false;
    }, 3000)
}

document.addEventListener("mousedown", function () {
    var currentTime = Date.now();
    var timeSinceLastFire = currentTime - lastFireTime;
    if (timeSinceLastFire >= fireRate) {
        if (bulletsNumber > 0 && player.reloading == false) {
            var AK47sound = new Audio("./sounds/AK-47.mp3");
            AK47sound.play();
            shotLightVisible = true;
            setTimeout(function () {
                shotLightVisible = false;
            }, 50);
            lastFireTime = currentTime;
            var bulletSpeed = 14;
            var dx = mouse.x - player.x;
            var dy = mouse.y - player.y;
            var bulletVX = bulletSpeed * Math.cos(Math.atan2(dy, dx));
            var bulletVY = bulletSpeed * Math.sin(Math.atan2(dy, dx));
            var bullet = {
                x: player.x,
                y: player.y,
                vx: bulletVX,
                vy: bulletVY
            };
            bullet.x += bullet.vx * 5;
            bullet.y += bullet.vy * 5;
            bullets.push(bullet);
            lastFireTime = currentTime;
            bulletsNumber -= 1
        } else if (bulletsNumber <= 0) {
            if (player.reloading == false) {
                reload();
            }
        }
    }
    clearInterval(shootIntervalId);
    shootIntervalId = setInterval(function () {
        var currentTime = Date.now();
        var timeSinceLastFire = currentTime - lastFireTime;
        if (timeSinceLastFire >= fireRate) {
            if (bulletsNumber > 0 && player.reloading == false) {
                var AK47sound = new Audio("./sounds/AK-47.mp3");
                AK47sound.play();
                shotLightVisible = true;
                setTimeout(function () {
                    shotLightVisible = false;
                }, 50);
                lastFireTime = currentTime;
                var bulletSpeed = 14;
                var dx = mouse.x - player.x;
                var dy = mouse.y - player.y;
                var bulletVX = bulletSpeed * Math.cos(Math.atan2(dy, dx));
                var bulletVY = bulletSpeed * Math.sin(Math.atan2(dy, dx));
                var bullet = {
                    x: player.x,
                    y: player.y,
                    vx: bulletVX,
                    vy: bulletVY
                };
                bullet.x += bullet.vx * 5;
                bullet.y += bullet.vy * 5;
                bullets.push(bullet);
                bulletsNumber -= 1
            } else if (bulletsNumber <= 0) {
                if (player.reloading == false) {
                    reload();
                }
            }
        }
    }, fireRate);
});

document.addEventListener("mouseup", function () {
    clearInterval(shootIntervalId);
});

function loop() {
    update();
    detectCollision();
    draw();
    requestAnimationFrame(loop);
}

loop();

Fais-moi une animation d'explosion à particule exécutée à la place du ```// animation d'explosion```.
 

🚫 Alerte AdBlock !

Vous avez activé le mode Ninja, et il cache toutes les pubs ! 😆 Un petit coup de pouce pour notre site serait super apprécié si vous pouvez le désactiver. 🙏

🦸‍♂️ J'ai Désactivé AdBlock !