diff --git a/client/src/scoreboard.json b/client/src/scoreboard.json
index 1f9b964ecf3e9db4c8a235b1e807c0fbdd2ef604..320005cc0fe78e40472d6eb525d41cd9ccd68dd7 100644
--- a/client/src/scoreboard.json
+++ b/client/src/scoreboard.json
@@ -1,29 +1,5 @@
 {
   "results": [
-    {
-      "nom": "julien",
-      "score": -15
-    },
-    {
-      "nom": "julien",
-      "score": -15
-    },
-    {
-      "nom": "julien",
-      "score": -15
-    },
-    {
-      "nom": "julien2",
-      "score": -10
-    },
-    {
-      "nom": "j",
-      "score": -10
-    },
-    {
-      "nom": "test",
-      "score": -15
-    },
     {
       "nom": "pierre",
       "score": 20
@@ -33,89 +9,57 @@
       "score": -15
     },
     {
-      "nom": "p",
-      "score": 30
-    },
-    {
-      "nom": "pp",
       "score": -15
     },
     {
-      "nom": "ma",
-      "score": 70
-    },
-    {
-      "nom": "ppapa",
-      "score": 40
-    },
-    {
-      "nom": "mm",
-      "score": 55
-    },
-    {
-      "score": -15
-    },
-    {
-      "nom": "testtt",
-      "score": -15
-    },
-    {
-      "score": -5
-    },
-    {
-      "nom": "test",
+      "nom": "m",
       "score": -15
     },
     {
       "nom": "m",
-      "score": 20
+      "score": 0
     },
     {
-      "nom": "m`",
-      "score": -15
+      "nom": "m",
+      "score": 0
     },
     {
-      "nom": "p",
-      "score": 5
+      "nom": "anne",
+      "score": -5
     },
     {
-      "nom": "m",
-      "score": -25
+      "nom": "test2",
+      "score": -10
     },
     {
-      "nom": "test",
-      "score": -10
+      "score": -15
     },
     {
-      "nom": "p",
       "score": -15
     },
     {
-      "nom": "^",
+      "nom": "ff",
       "score": -15
     },
     {
-      "nom": "m",
+      "nom": "test2",
       "score": -5
     },
     {
-      "nom": "tes",
+      "nom": "mama",
       "score": -15
     },
     {
-      "score": -10
+      "nom": "te",
+      "score": -20
     },
     {
-      "nom": "p",
+      "nom": "f",
       "score": 0
     },
     {
-      "nom": "m",
-      "score": 5
-    },
-    {
-      "nom": "p",
-      "score": -10
+      "nom": "f",
+      "score": -15
     }
   ]
 }
\ No newline at end of file
diff --git a/server/ScoreBoard.js b/server/ScoreBoard.js
index 09e510a261cff513e9555a225bdef1fb1cd0d3eb..6c8bdf4a500124eb931b12abbc33072da5f40280 100644
--- a/server/ScoreBoard.js
+++ b/server/ScoreBoard.js
@@ -10,13 +10,11 @@ export class GestionScore {
 			const data = fs.readFileSync(this.jsonFilePath);
 			const scores = JSON.parse(data);
 
-			// Trier les scores par ordre décroissant
 			scores.results.sort((a, b) => b.score - a.score);
 
 			let html =
 				'<table><thead><tr><th>Nom</th><th>Score</th></tr></thead><tbody>';
 
-			// Afficher les 10 premiers résultats
 			const numberOfResults = Math.min(10, scores.results.length);
 			for (let i = 0; i < numberOfResults; i++) {
 				const result = scores.results[i];
diff --git a/server/index.js b/server/index.js
index d0f9adb4557c228929dfb05952d7988aa9af7b9b..e2ced2535c8afbc7fb3cf783ffc3efbb88e09d12 100644
--- a/server/index.js
+++ b/server/index.js
@@ -46,7 +46,7 @@ const avatars = [];
 const enemis = [];
 const bonusArray = [];
 
-let cpt = 0;
+let cptConnexion = 0;
 let canShoot = true;
 let LVL2start = false;
 let LVL3start = false;
@@ -55,62 +55,100 @@ const gestionScore = new GestionScore('client/src/scoreboard.json');
 let scores = gestionScore.afficherScores();
 
 io.on('connection', socket => {
-	cpt++;
-	if (cpt <= 4) {
+	cptConnexion++;
+
+	if (cptConnexion <= 4) {
 		firstAvatar = true;
-		const avatar = new Avatar(`${socket.id}`, cpt);
-		io.emit('newAvatar', { id: cpt, x: avatar.getX(), y: avatar.getY() });
-		avatars.push(avatar);
-		socket.on('pseudo', pseudo => {
-			avatar.pseudo = pseudo;
+
+		const avatar = createAvatar(socket);
+
+		io.emit('newAvatar', {
+			id: cptConnexion,
+			x: avatar.getX(),
+			y: avatar.getY(),
 		});
+
+		handlePseudonym(socket, avatar);
+
 		io.emit('scores', scores);
 
-		socket.on('disconnect', () => {
-			avatars.forEach(avatar => {
-				if (avatar.nom == socket.id) {
-					io.emit('disconnectEvent', avatar.id);
-					avatars.splice(avatars.indexOf(avatar), 1);
-				}
-			});
-			console.log(`Déconnexion du client ${socket.id}`);
-		});
+		handleDisconnect(socket);
 
-		socket.on('start', s => {
-			if (s == true && cpt != 0) {
-				gameStarted = s;
-			} else if (cpt == 0) {
-				gameStarted = false;
-			}
-		});
+		handleGameStart(socket);
 
-		socket.on('clickEvent', clickEvent => {
-			const playerAvatar = avatars.find(avatar => avatar.nom === clickEvent.id);
-			if (playerAvatar) {
-				playerAvatar.click[clickEvent.key] = clickEvent.pressed;
-			} else {
-				console.log(`Aucun avatar trouvé avec le nom ${clickEvent.id}`);
-			}
-		});
+		handleClickEvents(socket);
 
-		socket.on('shoot', shoot => {
-			const playerAvatar = avatars.find(avatar => avatar.nom === shoot.id);
+		handleShooting(socket);
 
-			if (canShoot) {
-				playerAvatar.tirer();
-				canShoot = false;
-				setTimeout(function () {
-					canShoot = true;
-				}, 200);
+		handleCanvasSize(socket);
+	}
+});
+
+function createAvatar(socket) {
+	const avatar = new Avatar(`${socket.id}`, cptConnexion);
+	avatars.push(avatar);
+	return avatar;
+}
+
+function handlePseudonym(socket, avatar) {
+	socket.on('pseudo', pseudo => {
+		avatar.pseudo = pseudo;
+	});
+}
+
+function handleDisconnect(socket) {
+	socket.on('disconnect', () => {
+		avatars.forEach(avatar => {
+			if (avatar.nom == socket.id) {
+				io.emit('disconnectEvent', avatar.id);
+				avatars.splice(avatars.indexOf(avatar), 1);
 			}
 		});
+		console.log(`Déconnexion du client ${socket.id}`);
+	});
+}
 
-		socket.on('canvasSize', canvasSize => {
-			console.log(canvasSize);
-			canvasSize = canvasSize;
-		});
-	}
-});
+function handleGameStart(socket) {
+	socket.on('start', s => {
+		if (s == true && cptConnexion != 0) {
+			gameStarted = s;
+		} else if (cptConnexion == 0) {
+			gameStarted = false;
+		}
+	});
+}
+
+function handleClickEvents(socket) {
+	socket.on('clickEvent', clickEvent => {
+		const playerAvatar = avatars.find(avatar => avatar.nom === clickEvent.id);
+		if (playerAvatar) {
+			playerAvatar.click[clickEvent.key] = clickEvent.pressed;
+		} else {
+			console.log(`Aucun avatar trouvé avec le nom ${clickEvent.id}`);
+		}
+	});
+}
+
+function handleShooting(socket) {
+	socket.on('shoot', shoot => {
+		const playerAvatar = avatars.find(avatar => avatar.nom === shoot.id);
+
+		if (canShoot) {
+			playerAvatar.tirer();
+			canShoot = false;
+			setTimeout(function () {
+				canShoot = true;
+			}, 200);
+		}
+	});
+}
+
+function handleCanvasSize(socket) {
+	socket.on('canvasSize', size => {
+		console.log(size);
+		canvasSize = size;
+	});
+}
 
 let spawnIntervalLV1 = setInterval(() => {
 	if (gameStarted) {
@@ -163,71 +201,31 @@ let spawnBonusInterval = setInterval(() => {
 }, 15000);
 
 setInterval(() => {
-	scores = gestionScore.afficherScores();
-	io.emit('scores', scores);
+	updateScores();
+
 	io.emit('enemis', enemis);
+
 	io.emit('bonusArray', bonusArray);
 
-	let areAvatarsActive = avatars.some(avatar => !avatar.spectateur);
+	const areAvatarsActive = avatars.some(avatar => !avatar.spectateur);
 
+	// Si des avatars sont actifs
 	if (firstAvatar && areAvatarsActive) {
-		let avatarData = [];
+		const avatarData = [];
+
 		avatars.forEach(avatar => {
 			avatar.canvasSize = canvasSize;
-			if (
-				avatar.getStatut() == 'invincibilite' &&
-				t.getTotalTime() - avatar.getStatutTime() == 15
-			) {
-				avatar.setStatut('null');
-			}
-			enemis.forEach(enemi => {
-				if (
-					enemi.hitbox.colision(avatar.hitbox) &&
-					avatar.getStatut() != 'invincibilite' &&
-					!avatar.spectateur
-				) {
-					if (canLostLifeAvatar) {
-						avatar.decrementScore(5);
-						enemis.splice(enemis.indexOf(enemi), 1);
-						avatar.perdreVie();
-						canLostLifeAvatar = false;
-						setTimeout(function () {
-							canLostLifeAvatar = true;
-						}, 100);
-					}
-					if (avatar.getVies() == 0) {
-						gestionScore.ajouterScore(avatar.pseudo, avatar.score);
-
-						avatar.setSpectateur();
-						io.emit('dead', avatar.id);
-					}
-				}
 
-				enemi.deplacer();
-				avatar.colision(enemi.hitbox);
-				avatar.projectiles.forEach(projectile => {
-					if (projectile.hitbox.colision(enemi.hitbox)) {
-						if (enemi.getVies() < 0) {
-							console.log(avatar.id);
-							avatar.incrementScore(5);
-							enemis.splice(enemis.indexOf(enemi), 1);
-						}
-						avatar.projectiles.splice(
-							avatar.projectiles.indexOf(projectile),
-							1
-						);
-						if (canLostLifeEnemi) {
-							enemi.perdreVie();
-							canLostLifeEnemi = false;
-							setTimeout(function () {
-								canLostLifeEnemi = true;
-							}, 1000 / 60);
-						}
-					}
-				});
-			});
-			avatar.deplacer();
-			avatar.projectiles.forEach(projectile => projectile.deplacer());
+			updateInvincibilityStatus(avatar);
+
+			handleAvatarEnemyCollisions(avatar);
+
+			moveEnemies();
+
+			handleAvatarProjectileCollisions(avatar);
+
+			moveAvatarsAndProjectiles(avatar);
+
 			if (!avatar.spectateur) {
 				avatarData.push({
 					id: avatar.id,
@@ -239,27 +237,110 @@ setInterval(() => {
 					socketId: avatar.nom,
 				});
 			}
-			bonusArray.forEach(bonus => {
-				if (bonus.hitbox.colision(avatar.hitbox)) {
-					if (bonusNoms[bonus.getChoix()] == 'vie') {
-						avatar.gagnerVie();
-					} else if (bonusNoms[bonus.getChoix()] == 'invincibilite') {
-						avatar.setStatut('invincibilite');
-						avatar.setStatutTime(t.getTotalTime());
-					}
-					bonusArray.splice(bonusArray.indexOf(bonus), 1);
-				}
-				if (bonus.estExpire(t.getTotalTime())) {
-					bonusArray.splice(bonusArray.indexOf(bonus), 1);
-				}
-			});
+
+			handleAvatarBonusCollisions(avatar);
 		});
+
 		io.emit('avatarsData', avatarData);
 	} else {
-		gameStarted = false;
-		cpt = 0;
-		t = new timer();
-		avatars.length = 0; // Réinitialiser le tableau d'avatars
-		io.emit('endGame', true);
+		stopGame();
 	}
 }, 1000 / 60);
+
+function updateScores() {
+	scores = gestionScore.afficherScores();
+	io.emit('scores', scores);
+}
+
+function updateInvincibilityStatus(avatar) {
+	if (
+		avatar.getStatut() == 'invincibilite' &&
+		t.getTotalTime() - avatar.getStatutTime() == 15
+	) {
+		avatar.setStatut('null');
+	}
+}
+
+function handleAvatarEnemyCollisions(avatar) {
+	enemis.forEach(enemi => {
+		if (
+			enemi.hitbox.colision(avatar.hitbox) &&
+			avatar.getStatut() != 'invincibilite' &&
+			!avatar.spectateur
+		) {
+			if (canLostLifeAvatar) {
+				avatar.decrementScore(5);
+				enemis.splice(enemis.indexOf(enemi), 1);
+				avatar.perdreVie();
+				canLostLifeAvatar = false;
+				setTimeout(function () {
+					canLostLifeAvatar = true;
+				}, 100);
+			}
+			if (avatar.getVies() == 0) {
+				gestionScore.ajouterScore(avatar.pseudo, avatar.score);
+				avatar.setSpectateur();
+				io.emit('dead', avatar.id);
+			}
+		}
+	});
+}
+
+function moveEnemies() {
+	enemis.forEach(enemi => {
+		enemi.deplacer();
+	});
+}
+
+function handleAvatarProjectileCollisions(avatar) {
+	enemis.forEach(enemi => {
+		avatar.projectiles.forEach(projectile => {
+			if (projectile.hitbox.colision(enemi.hitbox)) {
+				if (enemi.getVies() < 0) {
+					avatar.incrementScore(5);
+					enemis.splice(enemis.indexOf(enemi), 1);
+				}
+				avatar.projectiles.splice(avatar.projectiles.indexOf(projectile), 1);
+				if (canLostLifeEnemi) {
+					enemi.perdreVie();
+					canLostLifeEnemi = false;
+					setTimeout(function () {
+						canLostLifeEnemi = true;
+					}, 1000 / 60);
+				}
+			}
+		});
+	});
+}
+
+function moveAvatarsAndProjectiles(avatar) {
+	avatar.deplacer();
+	avatar.projectiles.forEach(projectile => {
+		projectile.deplacer();
+	});
+}
+
+function handleAvatarBonusCollisions(avatar) {
+	bonusArray.forEach(bonus => {
+		if (bonus.hitbox.colision(avatar.hitbox)) {
+			if (bonusNoms[bonus.getChoix()] == 'vie') {
+				avatar.gagnerVie();
+			} else if (bonusNoms[bonus.getChoix()] == 'invincibilite') {
+				avatar.setStatut('invincibilite');
+				avatar.setStatutTime(t.getTotalTime());
+			}
+			bonusArray.splice(bonusArray.indexOf(bonus), 1);
+		}
+		if (bonus.estExpire(t.getTotalTime())) {
+			bonusArray.splice(bonusArray.indexOf(bonus), 1);
+		}
+	});
+}
+
+function stopGame() {
+	gameStarted = false;
+	cptConnexion = 0;
+	t = new timer();
+	avatars.length = 0;
+	io.emit('endGame', true);
+}