Skip to content
Snippets Groups Projects
Commit 78144b62 authored by Rayane Belguebli's avatar Rayane Belguebli
Browse files

#35 synchro timer

parent 91caeea7
No related branches found
No related tags found
No related merge requests found
...@@ -78,6 +78,7 @@ function afficherFinDePartie() { ...@@ -78,6 +78,7 @@ function afficherFinDePartie() {
function startGame(event) { function startGame(event) {
gameStarted = true; gameStarted = true;
socket.emit('start', gameStarted);
event.preventDefault(); event.preventDefault();
canvas.style.display = ''; canvas.style.display = '';
document.querySelector('.divMain').innerHTML = setHtml.vide(); document.querySelector('.divMain').innerHTML = setHtml.vide();
...@@ -86,6 +87,10 @@ function startGame(event) { ...@@ -86,6 +87,10 @@ function startGame(event) {
socket.emit('canvasSize', canvasSize); socket.emit('canvasSize', canvasSize);
} }
setInterval(() => {
socket.emit('start', gameStarted);
}, 1000 / 16);
const canvasResizeObserver = new ResizeObserver(() => resampleCanvas()); const canvasResizeObserver = new ResizeObserver(() => resampleCanvas());
canvasResizeObserver.observe(canvas); canvasResizeObserver.observe(canvas);
...@@ -116,48 +121,48 @@ let newEnemis = []; ...@@ -116,48 +121,48 @@ let newEnemis = [];
let newBonus = []; let newBonus = [];
function render() { function render() {
console.log(sec);
context.clearRect(0, 0, canvas.width, canvas.height); context.clearRect(0, 0, canvas.width, canvas.height);
context.drawImage(background, 0, 0, canvas.width, canvas.height); context.drawImage(background, 0, 0, canvas.width, canvas.height);
console.log(gameStarted);
context.font = '40pt New Super Mario Font U'; if (gameStarted) {
context.fillStyle = 'blue'; context.font = '40pt New Super Mario Font U';
context.fillText(avatar.getScore(), 10, 50); context.fillStyle = 'blue';
context.fillText(0 + ':' + min + ':' + sec, canvas.width / 2, 50); context.fillText(avatar.getScore(), 10, 50);
context.fillText(0 + ':' + min + ':' + sec, canvas.width / 2, 50);
for (let i = 0; i < avatar.getVies(); i++) {
context.drawImage(imageCoeur, canvas.width - (3 - i) * 50, 0, 50, 50); for (let i = 0; i < avatar.getVies(); i++) {
} context.drawImage(imageCoeur, canvas.width - (3 - i) * 50, 0, 50, 50);
for (let avatarId in avatars) {
context.drawImage(avatar.image, avatars[avatarId].x, avatars[avatarId].y);
if (avatars[avatarId].projectiles != undefined) {
avatars[avatarId].projectiles.forEach(projectile => {
context.drawImage(imageProjectile, projectile.x, projectile.y);
});
} }
} for (let avatarId in avatars) {
socket.on('enemis', data => { context.drawImage(avatar.image, avatars[avatarId].x, avatars[avatarId].y);
newEnemis = data; if (avatars[avatarId].projectiles != undefined) {
}); avatars[avatarId].projectiles.forEach(projectile => {
newEnemis.forEach(enemi => { context.drawImage(imageProjectile, projectile.x, projectile.y);
if (enemi.difficulté == 1) { });
draw(canvas, context, imageEnemi, enemi.x, enemi.y); }
} else if (enemi.difficulté == 2) {
draw(canvas, context, imageEnemi2, enemi.x, enemi.y);
} }
}); socket.on('enemis', data => {
socket.on('bonusArray', data => { newEnemis = data;
newBonus = data; });
}); newEnemis.forEach(enemi => {
newBonus.forEach(bonus => { if (enemi.difficulté == 1) {
console.log(bonus); draw(canvas, context, imageEnemi, enemi.x, enemi.y);
let img = new Image(); } else if (enemi.difficulté == 2) {
img.src = bonusImages[bonus.choix]; draw(canvas, context, imageEnemi2, enemi.x, enemi.y);
img.width = 75; }
img.height = 75; });
draw(canvas, context, img, bonus.x, bonus.y); socket.on('bonusArray', data => {
}); newBonus = data;
});
newBonus.forEach(bonus => {
console.log(bonus);
let img = new Image();
img.src = bonusImages[bonus.choix];
img.width = 75;
img.height = 75;
draw(canvas, context, img, bonus.x, bonus.y);
});
}
requestAnimationFrame(render); requestAnimationFrame(render);
} }
......
...@@ -19,6 +19,7 @@ let canvasSize = new Coordinate(1920, 1261); ...@@ -19,6 +19,7 @@ let canvasSize = new Coordinate(1920, 1261);
let canLostLifeAvatar = true; let canLostLifeAvatar = true;
let canLostLifeEnemi = true; let canLostLifeEnemi = true;
let gameStarted = false;
let t = new timer(); let t = new timer();
...@@ -42,8 +43,12 @@ httpServer.listen(port, () => { ...@@ -42,8 +43,12 @@ httpServer.listen(port, () => {
}); });
setInterval(function () { setInterval(function () {
t.addTime(); if (gameStarted) {
io.emit('timer', t.getMin(), t.getSec()); t.addTime();
io.emit('timer', t.getMin(), t.getSec());
} else {
t = new timer();
}
}, 1000); }, 1000);
const avatars = []; const avatars = [];
...@@ -74,6 +79,14 @@ io.on('connection', socket => { ...@@ -74,6 +79,14 @@ io.on('connection', socket => {
} }
}); });
socket.on('start', s => {
if (s == true) {
gameStarted = s;
} else {
gameStarted = false;
}
});
socket.on('shoot', shoot => { socket.on('shoot', shoot => {
const playerAvatar = avatars.find(avatar => avatar.nom === shoot.id); const playerAvatar = avatars.find(avatar => avatar.nom === shoot.id);
...@@ -98,20 +111,23 @@ io.on('connection', socket => { ...@@ -98,20 +111,23 @@ io.on('connection', socket => {
}); });
let spawnIntervalLV1 = setInterval(() => { let spawnIntervalLV1 = setInterval(() => {
if (t.getSec() >= 10) { console.log(gameStarted);
LVL2start = true; if (gameStarted) {
} if (t.getSec() >= 10) {
LVL2start = true;
}
let randomY = Math.random() * (canvasSize.height - 0) + 0; let randomY = Math.random() * (canvasSize.height - 0) + 0;
do { do {
randomY = Math.random() * (canvasSize.height - 0) + 0; randomY = Math.random() * (canvasSize.height - 0) + 0;
} while (randomY > canvasSize.height - 57); } while (randomY > canvasSize.height - 57);
const newEnemy = new enemi(canvasSize.width, randomY, 0, 1); const newEnemy = new enemi(canvasSize.width, randomY, 0, 1);
enemis.push(newEnemy); enemis.push(newEnemy);
}
}, 1000); }, 1000);
let spawnIntervalLV2 = setInterval(() => { let spawnIntervalLV2 = setInterval(() => {
if (LVL2start) { if (LVL2start && gameStarted) {
let randomY = Math.random() * (canvasSize.height - 0) + 0; let randomY = Math.random() * (canvasSize.height - 0) + 0;
do { do {
randomY = Math.random() * (canvasSize.height - 0) + 0; randomY = Math.random() * (canvasSize.height - 0) + 0;
...@@ -124,93 +140,100 @@ let spawnIntervalLV2 = setInterval(() => { ...@@ -124,93 +140,100 @@ let spawnIntervalLV2 = setInterval(() => {
}, 800); }, 800);
let spawnBonusInterval = setInterval(() => { let spawnBonusInterval = setInterval(() => {
let randomX; if (gameStarted) {
let randomY; let randomX;
const choix = Math.floor(Math.random() * bonusNoms.length); let randomY;
do { const choix = Math.floor(Math.random() * bonusNoms.length);
randomY = Math.random() * (canvasSize.height - 0) + 0; do {
} while (randomY > canvasSize.height - 75); randomY = Math.random() * (canvasSize.height - 0) + 0;
do { } while (randomY > canvasSize.height - 75);
randomX = Math.random() * (canvasSize.width - 0) + 0; do {
} while (randomX > canvasSize.width - 75); randomX = Math.random() * (canvasSize.width - 0) + 0;
const bonus = new Bonus(choix, 1, randomX, randomY, t.getTotalTime()); } while (randomX > canvasSize.width - 75);
bonusArray.push(bonus); const bonus = new Bonus(choix, 1, randomX, randomY, t.getTotalTime());
bonusArray.push(bonus);
}
}, 15000); }, 15000);
setInterval(() => { setInterval(() => {
io.emit('enemis', enemis); if (gameStarted) {
io.emit('bonusArray', bonusArray); io.emit('enemis', enemis);
io.emit('bonusArray', bonusArray);
let avatarData = [];
avatars.forEach(avatar => { let avatarData = [];
avatar.canvasSize = canvasSize; avatars.forEach(avatar => {
if ( avatar.canvasSize = canvasSize;
avatar.getStatut() == 'invincibilite' &&
t.getTotalTime() - avatar.getStatutTime() == 15
) {
avatar.setStatut('null');
}
enemis.forEach(enemi => {
if ( if (
enemi.hitbox.colision(avatar.hitbox) && avatar.getStatut() == 'invincibilite' &&
avatar.getStatut() != 'invincibilite' t.getTotalTime() - avatar.getStatutTime() == 15
) { ) {
if (canLostLifeAvatar) { avatar.setStatut('null');
avatar.decrementScore(5);
enemis.splice(enemis.indexOf(enemi), 1);
avatar.perdreVie();
canLostLifeAvatar = false;
setTimeout(function () {
canLostLifeAvatar = true;
}, 100);
}
if (avatar.getVies() == 0) {
//afficherFinDePartie();
avatar.initAvatar();
//t = new timer();
}
} }
if (enemi.getVies() < 0) { enemis.forEach(enemi => {
avatar.incrementScore(5); if (
enemis.splice(enemis.indexOf(enemi), 1); enemi.hitbox.colision(avatar.hitbox) &&
} avatar.getStatut() != 'invincibilite'
enemi.deplacer(); ) {
avatar.colision(enemi.hitbox); if (canLostLifeAvatar) {
avatar.projectiles.forEach(projectile => { avatar.decrementScore(5);
if (projectile.hitbox.colision(enemi.hitbox)) { enemis.splice(enemis.indexOf(enemi), 1);
avatar.projectiles.splice(avatar.projectiles.indexOf(projectile), 1); avatar.perdreVie();
if (canLostLifeEnemi) { canLostLifeAvatar = false;
enemi.perdreVie();
canLostLifeEnemi = false;
setTimeout(function () { setTimeout(function () {
canLostLifeEnemi = true; canLostLifeAvatar = true;
}, 1000 / 60); }, 100);
}
if (avatar.getVies() == 0) {
//afficherFinDePartie();
avatar.initAvatar();
//t = new timer();
} }
} }
if (enemi.getVies() < 0) {
avatar.incrementScore(5);
enemis.splice(enemis.indexOf(enemi), 1);
}
enemi.deplacer();
avatar.colision(enemi.hitbox);
avatar.projectiles.forEach(projectile => {
if (projectile.hitbox.colision(enemi.hitbox)) {
avatar.projectiles.splice(
avatar.projectiles.indexOf(projectile),
1
);
if (canLostLifeEnemi) {
enemi.perdreVie();
canLostLifeEnemi = false;
setTimeout(function () {
canLostLifeEnemi = true;
}, 1000 / 60);
}
}
});
}); });
}); avatar.deplacer();
avatar.deplacer(); avatar.projectiles.forEach(projectile => projectile.deplacer());
avatar.projectiles.forEach(projectile => projectile.deplacer()); avatarData.push({
avatarData.push({ id: avatar.id,
id: avatar.id, x: avatar.getX(),
x: avatar.getX(), y: avatar.getY(),
y: avatar.getY(), projectiles: avatar.projectiles,
projectiles: avatar.projectiles, });
}); bonusArray.forEach(bonus => {
bonusArray.forEach(bonus => { if (bonus.hitbox.colision(avatar.hitbox)) {
if (bonus.hitbox.colision(avatar.hitbox)) { if (bonusNoms[bonus.getChoix()] == 'vie') {
if (bonusNoms[bonus.getChoix()] == 'vie') { avatar.gagnerVie();
avatar.gagnerVie(); } else if (bonusNoms[bonus.getChoix()] == 'invincibilite') {
} else if (bonusNoms[bonus.getChoix()] == 'invincibilite') { avatar.setStatut('invincibilite');
avatar.setStatut('invincibilite'); avatar.setStatutTime(t.getTotalTime());
avatar.setStatutTime(t.getTotalTime()); }
bonusArray.splice(bonusArray.indexOf(bonus), 1);
} }
bonusArray.splice(bonusArray.indexOf(bonus), 1); if (bonus.estExpire(t.getTotalTime())) {
} bonusArray.splice(bonusArray.indexOf(bonus), 1);
if (bonus.estExpire(t.getTotalTime())) { }
bonusArray.splice(bonusArray.indexOf(bonus), 1); });
}
}); });
}); io.emit('avatarsData', avatarData);
io.emit('avatarsData', avatarData); }
}, 1000 / 60); }, 1000 / 60);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment