From dd168ba26c743f8e8f0a40625b602c3f53b6667f Mon Sep 17 00:00:00 2001
From: Rayane Belguebli <rayane.belguebli.etu@univ-lille.fr>
Date: Fri, 5 Apr 2024 11:37:51 +0200
Subject: [PATCH] add enemis LV3

---
 client/public/images/boo.png | Bin 0 -> 7608 bytes
 client/src/main.js           |   3 +++
 client/src/render.js         |  13 ++++++++++++-
 server/enemis.js             |   3 +++
 server/index.js              |  21 ++++++++++++++++-----
 5 files changed, 34 insertions(+), 6 deletions(-)
 create mode 100644 client/public/images/boo.png

diff --git a/client/public/images/boo.png b/client/public/images/boo.png
new file mode 100644
index 0000000000000000000000000000000000000000..3d49d9e2fb7f0b04b027c2edcb8680752c0051d6
GIT binary patch
literal 7608
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

literal 0
HcmV?d00001

diff --git a/client/src/main.js b/client/src/main.js
index 5c360d9..260e8c4 100644
--- a/client/src/main.js
+++ b/client/src/main.js
@@ -17,6 +17,7 @@ const imageMortier = new Image();
 const imageProjectile = new Image();
 const imageEnemi = new Image();
 const imageEnemi2 = new Image();
+const imageEnemi3 = new Image();
 const background = new Image();
 const imageCoeur = new Image();
 
@@ -24,6 +25,7 @@ imageMortier.src = '/images/mortier.png';
 imageProjectile.src = '/images/bill.png';
 imageEnemi.src = '/images/koopa.png';
 imageEnemi2.src = '/images/bob_omb.png';
+imageEnemi3.src = '/images/boo.png';
 background.src = '/images/background2.webp';
 imageCoeur.src = '/images/heart1.webp';
 let gameStarted = false;
@@ -210,6 +212,7 @@ function render() {
 					context,
 					imageEnemi,
 					imageEnemi2,
+					imageEnemi3,
 					enemi.x,
 					enemi.y,
 					enemi
diff --git a/client/src/render.js b/client/src/render.js
index 03c4bb2..7432653 100644
--- a/client/src/render.js
+++ b/client/src/render.js
@@ -9,11 +9,22 @@ export default class Render {
 		}
 	}
 
-	static renderEnnemi(canvas, context, imageEnemi, imageEnemi2, x, y, enemi) {
+	static renderEnnemi(
+		canvas,
+		context,
+		imageEnemi,
+		imageEnemi2,
+		imageEnemi3,
+		x,
+		y,
+		enemi
+	) {
 		if (enemi.difficulté == 1) {
 			draw(canvas, context, imageEnemi, x, y);
 		} else if (enemi.difficulté == 2) {
 			draw(canvas, context, imageEnemi2, x, y);
+		} else if (enemi.difficulté) {
+			draw(canvas, context, imageEnemi3, x, y);
 		}
 	}
 
diff --git a/server/enemis.js b/server/enemis.js
index 0d87d1e..45aa7ab 100644
--- a/server/enemis.js
+++ b/server/enemis.js
@@ -18,6 +18,9 @@ export default class enemi extends Entite {
 		} else if (difficulté == 2) {
 			this.vx = 5;
 			this.vy = 1;
+		} else if (difficulté == 3) {
+			this.vx = 20;
+			this.vy = 16;
 		}
 		this.difficulté = difficulté;
 		this.vies = 2;
diff --git a/server/index.js b/server/index.js
index 1a6da4a..9926c88 100644
--- a/server/index.js
+++ b/server/index.js
@@ -48,6 +48,7 @@ const bonusArray = [];
 let cpt = 0;
 let canShoot = true;
 let LVL2start = false;
+let LVL3start = false;
 
 io.on('connection', socket => {
 	cpt++;
@@ -93,14 +94,10 @@ io.on('connection', socket => {
 				canShoot = false;
 				setTimeout(function () {
 					canShoot = true;
-				}, 100);
+				}, 200);
 			}
 		});
 
-		socket.on('LVL2', LVL2start => {
-			LVL2start = true;
-		});
-
 		socket.on('canvasSize', canvasSize => {
 			console.log(canvasSize);
 			canvasSize = canvasSize;
@@ -113,6 +110,9 @@ let spawnIntervalLV1 = setInterval(() => {
 		if (t.getMin() >= 1) {
 			LVL2start = true;
 		}
+		if (t.getSec() >= 30) {
+			LVL3start = true;
+		}
 
 		let randomY = Math.random() * (canvasSize.height - 0) + 0;
 		do {
@@ -134,6 +134,17 @@ let spawnIntervalLV2 = setInterval(() => {
 	}
 }, 800);
 
+let spawnIntervalLV3 = setInterval(() => {
+	if (LVL3start && gameStarted) {
+		let randomY = Math.random() * (canvasSize.height - 0) + 0;
+		do {
+			randomY = Math.random() * (canvasSize.height - 0) + 0;
+		} while (randomY > canvasSize.height - 100);
+		const newEnemy = new enemi(canvasSize.width - 100, randomY, 1, 3);
+		enemis.push(newEnemy);
+	}
+}, 4000);
+
 let spawnBonusInterval = setInterval(() => {
 	if (gameStarted) {
 		let randomX;
-- 
GitLab