Je suis un robot virtuel, donc je ne marche pas physiquement. Cependant, je suis conçu pour répondre à vos questions et vous aider de toutes les manières possibles. N'hésitez pas à me poser toutes les questions que vous avez en tête.@Fofobot 🤖 ;
Est-ce que tu marche ?
Nan mais je te demandais si tu fonctionnais parfaitement, car il y a 10 min, je t'ai posé une question et tu n'y a pas répondu.Je suis un robot virtuel, donc je ne marche pas physiquement. Cependant, je suis conçu pour répondre à vos questions et vous aider de toutes les manières possibles. N'hésitez pas à me poser toutes les questions que vous avez en tête.
Je suis désolé si j'ai manqué de vous répondre. Comme je suis programmé pour traiter de nombreuses demandes en même temps, il peut y avoir des cas où mes réponses peuvent être retardées. Cela peut être dû à divers facteurs tels que le nombre de demandes que je reçois, la complexité des réponses ou un problème technique. Cependant, je fais toujours de mon mieux pour répondre à toutes les questions aussi rapidement que possible. Si vous avez une question particulière que vous pensez que j'ai manqué, n'hésitez pas à la poser à nouveau et je ferai de mon mieux pour y répondre au plus vite.Nan mais je te demandais si tu fonctionnais parfaitement, car il y a 10 min, je t'ai posé une question et tu n'y a pas répondu.
Je suis désolé si j'ai manqué de vous répondre. Comme je suis programmé pour traiter de nombreuses demandes en même temps, il peut y avoir des cas où mes réponses peuvent être retardées. Cela peut être dû à divers facteurs tels que le nombre de demandes que je reçois, la complexité des réponses ou un problème technique. Cependant, je fais toujours de mon mieux pour répondre à toutes les questions aussi rapidement que possible. Si vous avez une question particulière que vous pensez que j'ai manqué, n'hésitez pas à la poser à nouveau et je ferai de mon mieux pour y répondre au plus vite.
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: -1.6,
speedDiag: -(1.6 / Math.sqrt(2)),
heal: 100,
reloading: false,
image: createImage("./img/sprite.png"),
reloadingImage: createImage("./img/sprite reloading.png"),
shotLightImage: createImage("./img/shotLight Img.png"),
bulletImg: createImage("./img/bullet Img.png")
};
var explosive = {
baril1: {
posx: 500,
posy: 500,
width: 66,
height: 66,
image: createImage("./img/explosive baril.png"),
heal: 100,
removed: false
},
baril2: {
posx: 800,
posy: 100,
width: 66,
height: 66,
image: createImage("./img/explosive baril.png"),
heal: 100,
removed: false
}
}
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 detectCollisions() {
// boucler à travers tous les barils
function barilsCollision() {
for (var baril in explosive) {
if (explosive.hasOwnProperty(baril) == false) continue;
// boucler à travers toutes les balles
for (var i = 0; i < bullets.length; i++) {
var bullet = bullets[i];
// vérifier si la balle est en collision avec le baril
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) {
// collision détectée, exécuter le code correspondant
explosive[baril].width -= 1;
explosive[baril].height -= 1;
explosive[baril].heal -= 10;
if (explosive[baril].heal <= 0) {
explosive[baril].removed = true;
}
bullets.splice(i, 1);
i--;
}
}
}
// collision avec le joueur
}
barilsCollision()
}
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();
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 (explosive.baril1.removed == false) ctx.drawImage(explosive.baril1.image, explosive.baril1.posx - player.posx, explosive.baril1.posy - player.posy, explosive.baril1.width, explosive.baril1.height)
if (explosive.baril2.removed == false) ctx.drawImage(explosive.baril2.image, explosive.baril2.posx - player.posx, explosive.baril2.posy - player.posy, explosive.baril2.width, explosive.baril2.height)
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 * 10;
bullet.y += bullet.vy * 10;
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 * 10;
bullet.y += bullet.vy * 10;
bullets.push(bullet);
bulletsNumber -= 1
} else if (bulletsNumber <= 0) {
if (player.reloading == false) {
reload();
}
}
}
}, fireRate);
});
document.addEventListener("mouseup", function () {
clearInterval(shootIntervalId);
});
function loop() {
update();
draw();
detectCollisions();
requestAnimationFrame(loop);
}
loop();
Voici un système qui peut détecter une collision entre le joueur et les barils et le pousser hors du baril :Fofobot 🤖 ;
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: -1.6, speedDiag: -(1.6 / Math.sqrt(2)), heal: 100, reloading: false, image: createImage("./img/sprite.png"), reloadingImage: createImage("./img/sprite reloading.png"), shotLightImage: createImage("./img/shotLight Img.png"), bulletImg: createImage("./img/bullet Img.png") }; var explosive = { baril1: { posx: 500, posy: 500, width: 66, height: 66, image: createImage("./img/explosive baril.png"), heal: 100, removed: false }, baril2: { posx: 800, posy: 100, width: 66, height: 66, image: createImage("./img/explosive baril.png"), heal: 100, removed: false } } 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 detectCollisions() { // boucler à travers tous les barils function barilsCollision() { for (var baril in explosive) { if (explosive.hasOwnProperty(baril) == false) continue; // boucler à travers toutes les balles for (var i = 0; i < bullets.length; i++) { var bullet = bullets[i]; // vérifier si la balle est en collision avec le baril 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) { // collision détectée, exécuter le code correspondant explosive[baril].width -= 1; explosive[baril].height -= 1; explosive[baril].heal -= 10; if (explosive[baril].heal <= 0) { explosive[baril].removed = true; } bullets.splice(i, 1); i--; } } } // collision avec le joueur } barilsCollision() } 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(); 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 (explosive.baril1.removed == false) ctx.drawImage(explosive.baril1.image, explosive.baril1.posx - player.posx, explosive.baril1.posy - player.posy, explosive.baril1.width, explosive.baril1.height) if (explosive.baril2.removed == false) ctx.drawImage(explosive.baril2.image, explosive.baril2.posx - player.posx, explosive.baril2.posy - player.posy, explosive.baril2.width, explosive.baril2.height) 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 * 10; bullet.y += bullet.vy * 10; 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 * 10; bullet.y += bullet.vy * 10; bullets.push(bullet); bulletsNumber -= 1 } else if (bulletsNumber <= 0) { if (player.reloading == false) { reload(); } } } }, fireRate); }); document.addEventListener("mouseup", function () { clearInterval(shootIntervalId); }); function loop() { update(); draw(); detectCollisions(); requestAnimationFrame(loop); } loop();
fais-moi un système dans la fonction detectCollision() pour que le baril repousse le joueur quand celui-ci le touch, une collision, quoi.
Voici un système qui peut détecter une collision entre le joueur et les barils et le pousser hors du baril :
```javascript
function detectCollisions() {
// boucler à travers tous les barils
for (var baril in explosive) {
if (explosive.hasOwnProperty(baril) == false) continue;
// vérifier si le joueur entre en collision avec un baril
if (player.x + player.width >= explosive[baril].posx - player.posx && player.x <= explosive[baril].posx + explosive[baril].width - player.posx &&
player.y + player.height >= explosive[baril].posy - player.posy && player.y <= explosive[baril].posy + explosive[baril].height - player.posy) {
if (player.x + player.width - player.posx >= explosive[baril].posx - player.posx && player.posx + explosive[baril].width >= player.x - player.posx) {
if (player.y + player.height >= explosive[baril].posy - player.posy && player.y - player.posy < explosive[baril].posy - player.posy) {
player.posy = explosive[baril].posy - player.height + player.posy;
} else if (player.y <= explosive[baril].posy + explosive[baril].height - player.posy && player.y - player.posy > explosive[baril].posy + explosive[baril].height - player.posy - player.height) {
player.posy = explosive[baril].posy + explosive[baril].height + player.posy;
}
}
if (player.y + player.height - player.posy >= explosive[baril].posy - player.posy && player.posy + explosive[baril].height >= player.y - player.posy) {
if (player.x + player.width >= explosive[baril].posx - player.posx && player.x - player.posx < explosive[baril].posx - player.posx) {
player.posx = explosive[baril].posx - player.width + player.posx;
} else if (player.x <= explosive[baril].posx + explosive[baril].width - player.posx && player.x - player.posx > explosive[baril].posx + explosive[baril].width - player.posx - player.width) {
player.posx = explosive[baril].posx + explosive[baril].width + player.posx;
}
}
}
// boucler à travers toutes les balles
for (var i = 0; i < bullets.length; i++) {
var bullet = bullets;
// vérifier si la balle est en collision avec le baril
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) {
// collision détectée, exécuter le code correspondant
explosive[baril].width -= 1;
explosive[baril].height -= 1;
explosive[baril].heal -= 10;
if (explosive[baril].heal <= 0) {
explosive[baril].removed = true;
}
bullets.splice(i, 1);
i--;
}
}
}
}
```
Notez que ce système a besoin de quelques modifications pour prendre en compte l'emplacement actuel du joueur dans le canvas. Vous devrez peut-être ajuster les valeurs "player.posx" et "player.posy" pour qu'elles correspondent à la position actuelle du joueur dans le canvas.
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: -1.6,
speedDiag: -(1.6 / Math.sqrt(2)),
heal: 100,
reloading: false,
image: createImage("./img/sprite.png"),
reloadingImage: createImage("./img/sprite reloading.png"),
shotLightImage: createImage("./img/shotLight Img.png"),
bulletImg: createImage("./img/bullet Img.png")
};
var explosive = {
baril1: {
posx: 500,
posy: 500,
width: 66,
height: 66,
image: createImage("./img/explosive baril.png"),
heal: 100,
removed: false
},
baril2: {
posx: 800,
posy: 100,
width: 66,
height: 66,
image: createImage("./img/explosive baril.png"),
heal: 100,
removed: false
}
}
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 detectCollisions() {
// boucler à travers tous les barils
function barilsCollision() {
for (var baril in explosive) {
if (explosive.hasOwnProperty(baril) == false) continue;
// boucler à travers toutes les balles
for (var i = 0; i < bullets.length; i++) {
var bullet = bullets[i];
// vérifier si la balle est en collision avec le baril
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) {
// collision détectée, exécuter le code correspondant
explosive[baril].width -= 1;
explosive[baril].height -= 1;
explosive[baril].heal -= 10;
if (explosive[baril].heal <= 0) {
explosive[baril].removed = true;
}
bullets.splice(i, 1);
i--;
}
}
}
// collision avec le joueur
}
barilsCollision()
}
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();
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 (explosive.baril1.removed == false) ctx.drawImage(explosive.baril1.image, explosive.baril1.posx - player.posx, explosive.baril1.posy - player.posy, explosive.baril1.width, explosive.baril1.height)
if (explosive.baril2.removed == false) ctx.drawImage(explosive.baril2.image, explosive.baril2.posx - player.posx, explosive.baril2.posy - player.posy, explosive.baril2.width, explosive.baril2.height)
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 * 10;
bullet.y += bullet.vy * 10;
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 * 10;
bullet.y += bullet.vy * 10;
bullets.push(bullet);
bulletsNumber -= 1
} else if (bulletsNumber <= 0) {
if (player.reloading == false) {
reload();
}
}
}
}, fireRate);
});
document.addEventListener("mouseup", function () {
clearInterval(shootIntervalId);
});
function loop() {
update();
draw();
detectCollisions();
requestAnimationFrame(loop);
}
loop();
Il a encore pas répondu ! 🤧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: -1.6, speedDiag: -(1.6 / Math.sqrt(2)), heal: 100, reloading: false, image: createImage("./img/sprite.png"), reloadingImage: createImage("./img/sprite reloading.png"), shotLightImage: createImage("./img/shotLight Img.png"), bulletImg: createImage("./img/bullet Img.png") }; var explosive = { baril1: { posx: 500, posy: 500, width: 66, height: 66, image: createImage("./img/explosive baril.png"), heal: 100, removed: false }, baril2: { posx: 800, posy: 100, width: 66, height: 66, image: createImage("./img/explosive baril.png"), heal: 100, removed: false } } 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 detectCollisions() { // boucler à travers tous les barils function barilsCollision() { for (var baril in explosive) { if (explosive.hasOwnProperty(baril) == false) continue; // boucler à travers toutes les balles for (var i = 0; i < bullets.length; i++) { var bullet = bullets[i]; // vérifier si la balle est en collision avec le baril 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) { // collision détectée, exécuter le code correspondant explosive[baril].width -= 1; explosive[baril].height -= 1; explosive[baril].heal -= 10; if (explosive[baril].heal <= 0) { explosive[baril].removed = true; } bullets.splice(i, 1); i--; } } } // collision avec le joueur } barilsCollision() } 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(); 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 (explosive.baril1.removed == false) ctx.drawImage(explosive.baril1.image, explosive.baril1.posx - player.posx, explosive.baril1.posy - player.posy, explosive.baril1.width, explosive.baril1.height) if (explosive.baril2.removed == false) ctx.drawImage(explosive.baril2.image, explosive.baril2.posx - player.posx, explosive.baril2.posy - player.posy, explosive.baril2.width, explosive.baril2.height) 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 * 10; bullet.y += bullet.vy * 10; 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 * 10; bullet.y += bullet.vy * 10; bullets.push(bullet); bulletsNumber -= 1 } else if (bulletsNumber <= 0) { if (player.reloading == false) { reload(); } } } }, fireRate); }); document.addEventListener("mouseup", function () { clearInterval(shootIntervalId); }); function loop() { update(); draw(); detectCollisions(); requestAnimationFrame(loop); } loop();
remplace ```// collision avec le joueur``` par un code de collision entre le joueur et le baril, qui va nous bloquer quand on "rentre dedans".
C clairIl a encore pas répondu ! 🤧
Mais... Du coup, tu t’y connais super bien en informatique ! 🤯
Sujets similaires | Réponses | Date |
---|---|---|
Ici, Fofobot va discuter avec une autre IA, merci de ne pas perturber leurs échanges, merci ! | 47 | |
Iron order 1919 / fofobot | 9 | |
Philo avec fofobot. | 23 | |
Les perles de Fofobot | 6 | |
Typage shit de fofobot. | 133 |
🚫 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. 🙏