diff --git a/client/public/build/main.bundle.js b/client/public/build/main.bundle.js
index 172f153536d8892182c514209bb71996929565fa..1e47e9c4841f03d0f5ea9adfaf509091b30e8b85 100644
--- a/client/public/build/main.bundle.js
+++ b/client/public/build/main.bundle.js
@@ -152,6 +152,178 @@ var Sushi = /*#__PURE__*/function (_Ressources) {
   return Sushi;
 }(Ressources);
 
+/***/ }),
+
+/***/ "./client/src/Router.js":
+/*!******************************!*\
+  !*** ./client/src/Router.js ***!
+  \******************************/
+/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
+
+__webpack_require__.r(__webpack_exports__);
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */   "default": function() { return /* binding */ Router; }
+/* harmony export */ });
+function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
+function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
+function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
+var Router = /*#__PURE__*/function () {
+  function Router(routes) {
+    _classCallCheck(this, Router);
+    this.routes = routes;
+    this.actualRoute = routes[0].page;
+  }
+  _createClass(Router, [{
+    key: "ChangePages",
+    value: function ChangePages(path) {
+      for (var i = 0; i < this.routes.length; i++) {
+        if (this.routes[i].path === path) {
+          document.querySelector(".".concat(this.actualRoute)).style.display = "none";
+          this.actualRoute = this.routes[i].page;
+          document.querySelector(".".concat(this.actualRoute)).style.display = "flex";
+        }
+      }
+    }
+  }]);
+  return Router;
+}();
+
+
+/***/ }),
+
+/***/ "./client/src/main.js":
+/*!****************************!*\
+  !*** ./client/src/main.js ***!
+  \****************************/
+/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
+
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Player.js */ "./client/src/Player.js");
+/* harmony import */ var _Ressources_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Ressources.js */ "./client/src/Ressources.js");
+
+
+var Main = function Main(playerName, playerCharacter) {
+  var canvas = document.querySelector(".map");
+  var ctx = canvas.getContext("2d");
+  canvas.width = document.documentElement.clientWidth;
+  canvas.height = document.documentElement.clientHeight;
+  ctx.width = 6000;
+  ctx.height = 3340;
+  window.addEventListener("resize", function (e) {
+    e.preventDefault();
+    canvas.width = document.documentElement.clientWidth;
+    canvas.height = document.documentElement.clientHeight;
+  });
+  var image = new Image();
+  image.src = "/images/goku.png";
+  var backgroundImage = new Image();
+  backgroundImage.src = "/images/map.jpg";
+  var folder = playerCharacter;
+  var player = new _Player_js__WEBPACK_IMPORTED_MODULE_0__["default"](canvas.width / 2, canvas.height / 2, 20, folder);
+  document.addEventListener("keydown", function (event) {
+    event.preventDefault();
+    // Mettre à jour la direction en fonction des touches enfoncées
+    switch (event.keyCode) {
+      case 37:
+        // Gauche
+        player.direction.x = -1;
+        break;
+      case 38:
+        // Haut
+        player.direction.y = -1;
+        break;
+      case 39:
+        // Droite
+        player.direction.x = 1;
+        break;
+      case 40:
+        // Bas
+        player.direction.y = 1;
+        break;
+    }
+  });
+  document.addEventListener("keyup", function (event) {
+    event.preventDefault();
+    // Mettre à jour la direction en fonction des touches relâchées
+    switch (event.keyCode) {
+      case 37:
+        // Gauche
+        if (player.direction.x < 0) {
+          player.direction.x = 0;
+        }
+        break;
+      case 38:
+        // Haut
+        if (player.direction.y < 0) {
+          player.direction.y = 0;
+        }
+        break;
+      case 39:
+        // Droite
+        if (player.direction.x > 0) {
+          player.direction.x = 0;
+        }
+        break;
+      case 40:
+        // Bas
+        if (player.direction.y > 0) {
+          player.direction.y = 0;
+        }
+        break;
+    }
+  });
+  var sushis = [];
+  for (var i = 0; i < 1500; i++) {
+    var xStart = canvas.width / 2;
+    var xEnd = ctx.width - canvas.width / 2;
+    var yStart = canvas.height / 2;
+    var yEnd = ctx.height - canvas.height / 2;
+    var x = Math.random() * (xEnd - xStart) + xStart;
+    var y = Math.random() * (-yStart + yEnd) + yStart;
+    console.log(x, y);
+    var sushi = new _Ressources_js__WEBPACK_IMPORTED_MODULE_1__.Sushi(x, y, 5);
+    sushis.push(sushi);
+  }
+  var mouseX;
+  var mouseY;
+  canvas.addEventListener("mousemove", function (event) {
+    event.preventDefault();
+    mouseX = event.clientX;
+    mouseY = event.clientY;
+    player.moveTo(mouseX, mouseY, canvas);
+  });
+  function update() {
+    ctx.save();
+    ctx.clearRect(0, 0, ctx.width, ctx.height);
+    ctx.beginPath();
+
+    // Déplacer le joueur en fonction de la direction
+    var cameraX = canvas.width / 2 - player.x;
+    var cameraY = canvas.height / 2 - player.y;
+    ctx.translate(cameraX, cameraY);
+    // Déplacer le contexte pour centrer la caméra ssur le joueur
+    // Dessiner le joueur et les autres éléments du jeu
+    ctx.drawImage(backgroundImage, 0, 0, ctx.width, ctx.height);
+    sushis.forEach(function (sushi) {
+      sushi.draw(ctx);
+    });
+
+    //player.move(ctx);
+    player.eatSushi(sushis);
+    player.draw(ctx);
+    player.move(ctx, mouseX, mouseY);
+    ctx.restore();
+    // Déplacer le contexte pour centrer la caméra sur le joueur
+    //ctx.translate(-cameraX, -cameraY);
+    requestAnimationFrame(update);
+  }
+  update();
+};
+/* harmony default export */ __webpack_exports__["default"] = (Main);
+
 /***/ })
 
 /******/ 	});
@@ -213,124 +385,61 @@ var Sushi = /*#__PURE__*/function (_Ressources) {
 var __webpack_exports__ = {};
 // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
 !function() {
-/*!****************************!*\
-  !*** ./client/src/main.js ***!
-  \****************************/
+/*!*****************************!*\
+  !*** ./client/src/index.js ***!
+  \*****************************/
 __webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Player.js */ "./client/src/Player.js");
-/* harmony import */ var _Ressources_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Ressources.js */ "./client/src/Ressources.js");
+/* harmony import */ var _main_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./main.js */ "./client/src/main.js");
+/* harmony import */ var _Router_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Router.js */ "./client/src/Router.js");
 
 
-var canvas = document.querySelector(".map");
-var ctx = canvas.getContext("2d");
-canvas.width = document.documentElement.clientWidth;
-canvas.height = document.documentElement.clientHeight;
-ctx.width = 6000;
-ctx.height = 3340;
-window.addEventListener("resize", function (e) {
-  e.preventDefault();
-  canvas.width = document.documentElement.clientWidth;
-  canvas.height = document.documentElement.clientHeight;
-});
-var image = new Image();
-image.src = "/images/goku.png";
-var backgroundImage = new Image();
-backgroundImage.src = "/images/map.jpg";
-var folder = "freezer";
-var player = new _Player_js__WEBPACK_IMPORTED_MODULE_0__["default"](canvas.width / 2, canvas.height / 2, 20, folder);
-document.addEventListener("keydown", function (event) {
-  event.preventDefault();
-  // Mettre à jour la direction en fonction des touches enfoncées
-  switch (event.keyCode) {
-    case 37:
-      // Gauche
-      player.direction.x = -1;
-      break;
-    case 38:
-      // Haut
-      player.direction.y = -1;
-      break;
-    case 39:
-      // Droite
-      player.direction.x = 1;
-      break;
-    case 40:
-      // Bas
-      player.direction.y = 1;
-      break;
-  }
-});
-document.addEventListener("keyup", function (event) {
-  event.preventDefault();
-  // Mettre à jour la direction en fonction des touches relâchées
-  switch (event.keyCode) {
-    case 37:
-      // Gauche
-      if (player.direction.x < 0) {
-        player.direction.x = 0;
-      }
-      break;
-    case 38:
-      // Haut
-      if (player.direction.y < 0) {
-        player.direction.y = 0;
-      }
-      break;
-    case 39:
-      // Droite
-      if (player.direction.x > 0) {
-        player.direction.x = 0;
-      }
-      break;
-    case 40:
-      // Bas
-      if (player.direction.y > 0) {
-        player.direction.y = 0;
-      }
-      break;
-  }
-});
-var sushis = [];
-for (var i = 0; i < 1000; i++) {
-  var x = Math.random() * (ctx.width - canvas.width / 2) + canvas.width / 2;
-  var y = Math.random() * (ctx.height - canvas.height / 2) + canvas.height / 2;
-  var sushi = new _Ressources_js__WEBPACK_IMPORTED_MODULE_1__.Sushi(x, y, 5);
-  sushis.push(sushi);
+
+/* Navigation */
+
+var routes = [{
+  path: "/",
+  page: "home"
+}, {
+  path: "/play",
+  page: "play"
+}, {
+  path: "/map",
+  page: "map"
+}];
+var router = new _Router_js__WEBPACK_IMPORTED_MODULE_1__["default"](routes);
+var links = document.querySelectorAll("a");
+for (var i = 0; i < links.length; i++) {
+  links[i].addEventListener("click", function (e) {
+    e.preventDefault();
+    router.ChangePages(e.currentTarget.getAttribute("href"));
+  });
 }
-var mouseX;
-var mouseY;
-canvas.addEventListener("mousemove", function (event) {
-  event.preventDefault();
-  mouseX = event.clientX;
-  mouseY = event.clientY;
-  player.moveTo(mouseX, mouseY, canvas);
+var inputName = document.querySelector(".name");
+var slides = document.querySelectorAll(".slide");
+var playerCharacter = "goku";
+var playerName = "";
+inputName.addEventListener("input", function (e) {
+  e.preventDefault();
+  console.log(e.currentTarget.value);
+  playerName = e.currentTarget.value;
 });
-function update() {
-  ctx.save();
-  ctx.clearRect(0, 0, ctx.width, ctx.height);
-  ctx.beginPath();
-
-  // Déplacer le joueur en fonction de la direction
-  var cameraX = canvas.width / 2 - player.x;
-  var cameraY = canvas.height / 2 - player.y;
-  ctx.translate(cameraX, cameraY);
-  // Déplacer le contexte pour centrer la caméra ssur le joueur
-  // Dessiner le joueur et les autres éléments du jeu
-  ctx.drawImage(backgroundImage, 0, 0, ctx.width, ctx.height);
-  sushis.forEach(function (sushi) {
-    sushi.draw(ctx);
+for (var _i = 0; _i < slides.length; _i++) {
+  slides[_i].addEventListener("click", function (e) {
+    playerCharacter = e.currentTarget.getAttribute("name");
+    console.log(playerCharacter);
   });
-
-  //player.move(ctx);
-  player.eatSushi(sushis);
-  player.draw(ctx);
-  player.move(ctx, mouseX, mouseY);
-  ctx.restore();
-  // Déplacer le contexte pour centrer la caméra sur le joueur
-  //ctx.translate(-cameraX, -cameraY);
-  requestAnimationFrame(update);
 }
-update();
+var playPages = document.querySelector(".play");
+var startButton = document.querySelector(".start-button");
+var map = document.querySelector(".map");
+startButton.addEventListener("click", function (e) {
+  e.preventDefault();
+  playPages.style.display = "none";
+  map.style.display = "block";
+  if (playerName.length > 0) {
+    (0,_main_js__WEBPACK_IMPORTED_MODULE_0__["default"])(playerName, playerCharacter);
+  }
+});
 }();
 /******/ })()
 ;
diff --git a/client/public/build/main.bundle.js.map b/client/public/build/main.bundle.js.map
index 59bd673761f27766c2e468ed671a70c80d8ada40..03adb1a22033b7f4120e16f633255771baf0718b 100644
--- a/client/public/build/main.bundle.js.map
+++ b/client/public/build/main.bundle.js.map
@@ -1 +1 @@
-{"version":3,"file":"main.bundle.js","mappings":"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","sources":["webpack://sae-2023-groupei-lasoa-gomis/./client/src/Player.js","webpack://sae-2023-groupei-lasoa-gomis/./client/src/Ressources.js","webpack://sae-2023-groupei-lasoa-gomis/webpack/bootstrap","webpack://sae-2023-groupei-lasoa-gomis/webpack/runtime/define property getters","webpack://sae-2023-groupei-lasoa-gomis/webpack/runtime/hasOwnProperty shorthand","webpack://sae-2023-groupei-lasoa-gomis/webpack/runtime/make namespace object","webpack://sae-2023-groupei-lasoa-gomis/./client/src/main.js"],"sourcesContent":["class Player {\r\n  image = new Image();\r\n  constructor(x, y, radius, imageFolder) {\r\n    this.x = x;\r\n    this.y = y;\r\n    this.radius = radius;\r\n    this.speed = 4;\r\n    this.direction = {\r\n      x: 0,\r\n      y: 0,\r\n    };\r\n    this.imageId = 1;\r\n    this.imageFolder = imageFolder;\r\n    this.image.src = `/images/character/${this.imageFolder}/${this.imageFolder}${this.imageId}.png`;\r\n  }\r\n  draw(ctx) {\r\n    // Dessiner le cercle\r\n    ctx.beginPath();\r\n    ctx.drawImage(\r\n      this.image,\r\n      this.x - this.radius,\r\n      this.y - this.radius,\r\n      this.radius * 2,\r\n      this.radius * 2\r\n    );\r\n    ctx.arc(this.x, this.y, this.radius, 0, 2 * Math.PI);\r\n    ctx.strokeStyle = \"black\";\r\n    ctx.stroke();\r\n  }\r\n\r\n  grow() {\r\n    this.radius += 0.5;\r\n    if (this.radius % 80 === 0 && this.imageId <= 5) {\r\n      this.imageId += 1;\r\n      this.image.src = `/images/character/${this.imageFolder}/${this.imageFolder}${this.imageId}.png`;\r\n    }\r\n  }\r\n\r\n  eatSushi(sushis) {\r\n    sushis.forEach((sushi, idx) => {\r\n      const dx = sushi.x - this.x;\r\n      const dy = sushi.y - this.y;\r\n      const distance = Math.sqrt(dx * dx + dy * dy);\r\n      if (distance < this.radius) {\r\n        // Supprime la nourriture de la liste\r\n        sushis.splice(idx, 1);\r\n        // Augmente la taille du joueur\r\n        this.grow();\r\n      }\r\n    });\r\n  }\r\n\r\n  move(ctx, mouseX, mouseY) {\r\n    // Déplacer le cercle en fonction de la direction\r\n    if (\r\n      mouseX > ctx.canvas.width / 2 - this.radius &&\r\n      mouseX < ctx.canvas.width / 2 + this.radius &&\r\n      mouseY > ctx.canvas.height / 2 - this.radius &&\r\n      mouseY < ctx.canvas.height / 2 + this.radius\r\n    ) {\r\n      return;\r\n    }\r\n    this.x += this.direction.x * this.speed;\r\n    this.y += this.direction.y * this.speed;\r\n\r\n    if (this.x < this.radius + ctx.canvas.width / 2)\r\n      this.x = this.radius + ctx.canvas.width / 2;\r\n    if (this.y < this.radius + ctx.canvas.height / 2)\r\n      this.y = this.radius + ctx.canvas.height / 2;\r\n    if (this.x > ctx.width - this.radius - ctx.canvas.width / 2) {\r\n      this.x = ctx.width - this.radius - ctx.canvas.width / 2;\r\n    }\r\n    if (this.y > ctx.height - this.radius - ctx.canvas.height / 2) {\r\n      this.y = ctx.height - this.radius - ctx.canvas.height / 2;\r\n    }\r\n  }\r\n  moveTo(x, y, canvas) {\r\n    const directionX = x - canvas.width / 2;\r\n    const directionY = y - canvas.height / 2;\r\n\r\n    const distance = Math.sqrt(directionX ** 2 + directionY ** 2);\r\n    this.direction.x = directionX / distance;\r\n    this.direction.y = directionY / distance;\r\n  }\r\n}\r\n\r\nexport default Player;\r\n","class Ressources {\r\n  constructor(name, x, y, size, image) {\r\n    this.name = name;\r\n    this.x = x;\r\n    this.y = y;\r\n    this.size = size;\r\n    this.image = image;\r\n  }\r\n}\r\n\r\nexport class Sushi extends Ressources {\r\n  constructor(x, y, size) {\r\n    const backgroundImage = new Image();\r\n    backgroundImage.src = \"/images/sushi.png\";\r\n    super(\"sushi\", x, y, size, backgroundImage);\r\n  }\r\n\r\n  draw(ctx) {\r\n    ctx.beginPath();\r\n    ctx.drawImage(this.image, this.x, this.y, 25, 25);\r\n    ctx.closePath();\r\n  }\r\n}\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import Player from \"./Player.js\";\r\nimport { Sushi } from \"./Ressources.js\";\r\n\r\nconst canvas = document.querySelector(\".map\");\r\nconst ctx = canvas.getContext(\"2d\");\r\n\r\ncanvas.width = document.documentElement.clientWidth;\r\ncanvas.height = document.documentElement.clientHeight;\r\nctx.width = 6000;\r\nctx.height = 3340;\r\n\r\nwindow.addEventListener(\"resize\", (e) => {\r\n  e.preventDefault();\r\n  canvas.width = document.documentElement.clientWidth;\r\n  canvas.height = document.documentElement.clientHeight;\r\n});\r\n\r\nconst image = new Image();\r\nimage.src = \"/images/goku.png\";\r\nconst backgroundImage = new Image();\r\nbackgroundImage.src = \"/images/map.jpg\";\r\n\r\nlet folder = \"freezer\";\r\n\r\nconst player = new Player(canvas.width / 2, canvas.height / 2, 20, folder);\r\n\r\ndocument.addEventListener(\"keydown\", (event) => {\r\n  event.preventDefault();\r\n  // Mettre à jour la direction en fonction des touches enfoncées\r\n  switch (event.keyCode) {\r\n    case 37: // Gauche\r\n      player.direction.x = -1;\r\n      break;\r\n    case 38: // Haut\r\n      player.direction.y = -1;\r\n      break;\r\n    case 39: // Droite\r\n      player.direction.x = 1;\r\n      break;\r\n    case 40: // Bas\r\n      player.direction.y = 1;\r\n      break;\r\n  }\r\n});\r\n\r\ndocument.addEventListener(\"keyup\", (event) => {\r\n  event.preventDefault();\r\n  // Mettre à jour la direction en fonction des touches relâchées\r\n  switch (event.keyCode) {\r\n    case 37: // Gauche\r\n      if (player.direction.x < 0) {\r\n        player.direction.x = 0;\r\n      }\r\n      break;\r\n    case 38: // Haut\r\n      if (player.direction.y < 0) {\r\n        player.direction.y = 0;\r\n      }\r\n      break;\r\n    case 39: // Droite\r\n      if (player.direction.x > 0) {\r\n        player.direction.x = 0;\r\n      }\r\n      break;\r\n    case 40: // Bas\r\n      if (player.direction.y > 0) {\r\n        player.direction.y = 0;\r\n      }\r\n      break;\r\n  }\r\n});\r\n\r\nlet sushis = [];\r\n\r\nfor (let i = 0; i < 1000; i++) {\r\n  const x = Math.random() * (ctx.width - canvas.width / 2) + canvas.width / 2;\r\n  const y =\r\n    Math.random() * (ctx.height - canvas.height / 2) + canvas.height / 2;\r\n  const sushi = new Sushi(x, y, 5);\r\n  sushis.push(sushi);\r\n}\r\n\r\nlet mouseX;\r\nlet mouseY;\r\n\r\ncanvas.addEventListener(\"mousemove\", (event) => {\r\n  event.preventDefault();\r\n  mouseX = event.clientX;\r\n  mouseY = event.clientY;\r\n\r\n  player.moveTo(mouseX, mouseY, canvas);\r\n});\r\n\r\nfunction update() {\r\n  ctx.save();\r\n  ctx.clearRect(0, 0, ctx.width, ctx.height);\r\n  ctx.beginPath();\r\n\r\n  // Déplacer le joueur en fonction de la direction\r\n  const cameraX = canvas.width / 2 - player.x;\r\n  const cameraY = canvas.height / 2 - player.y;\r\n  ctx.translate(cameraX, cameraY);\r\n  // Déplacer le contexte pour centrer la caméra ssur le joueur\r\n  // Dessiner le joueur et les autres éléments du jeu\r\n  ctx.drawImage(backgroundImage, 0, 0, ctx.width, ctx.height);\r\n  sushis.forEach((sushi) => {\r\n    sushi.draw(ctx);\r\n  });\r\n\r\n  //player.move(ctx);\r\n  player.eatSushi(sushis);\r\n  player.draw(ctx);\r\n  player.move(ctx, mouseX, mouseY);\r\n  ctx.restore();\r\n  // Déplacer le contexte pour centrer la caméra sur le joueur\r\n  //ctx.translate(-cameraX, -cameraY);\r\n  requestAnimationFrame(update);\r\n}\r\n\r\nupdate();\r\n"],"names":["Player","x","y","radius","imageFolder","_classCallCheck","_defineProperty","Image","speed","direction","imageId","image","src","concat","_createClass","key","value","draw","ctx","beginPath","drawImage","arc","Math","PI","strokeStyle","stroke","grow","eatSushi","sushis","_this","forEach","sushi","idx","dx","dy","distance","sqrt","splice","move","mouseX","mouseY","canvas","width","height","moveTo","directionX","directionY","pow","Ressources","name","size","Sushi","_Ressources","_inherits","_super","_createSuper","backgroundImage","call","closePath","document","querySelector","getContext","documentElement","clientWidth","clientHeight","window","addEventListener","e","preventDefault","folder","player","event","keyCode","i","random","push","clientX","clientY","update","save","clearRect","cameraX","cameraY","translate","restore","requestAnimationFrame"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"main.bundle.js","mappings":";;;;;;;;;;;;;;;;;;IAAMA,MAAM;EAEV,SAAAA,OAAYC,CAAC,EAAEC,CAAC,EAAEC,MAAM,EAAEC,WAAW,EAAE;IAAAC,eAAA,OAAAL,MAAA;IAAAM,eAAA,gBAD/B,IAAIC,KAAK,EAAE;IAEjB,IAAI,CAACN,CAAC,GAAGA,CAAC;IACV,IAAI,CAACC,CAAC,GAAGA,CAAC;IACV,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACK,KAAK,GAAG,CAAC;IACd,IAAI,CAACC,SAAS,GAAG;MACfR,CAAC,EAAE,CAAC;MACJC,CAAC,EAAE;IACL,CAAC;IACD,IAAI,CAACQ,OAAO,GAAG,CAAC;IAChB,IAAI,CAACN,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACO,KAAK,CAACC,GAAG,wBAAAC,MAAA,CAAwB,IAAI,CAACT,WAAW,OAAAS,MAAA,CAAI,IAAI,CAACT,WAAW,EAAAS,MAAA,CAAG,IAAI,CAACH,OAAO,SAAM;EACjG;EAACI,YAAA,CAAAd,MAAA;IAAAe,GAAA;IAAAC,KAAA,EACD,SAAAC,KAAKC,GAAG,EAAE;MACR;MACAA,GAAG,CAACC,SAAS,EAAE;MACfD,GAAG,CAACE,SAAS,CACX,IAAI,CAACT,KAAK,EACV,IAAI,CAACV,CAAC,GAAG,IAAI,CAACE,MAAM,EACpB,IAAI,CAACD,CAAC,GAAG,IAAI,CAACC,MAAM,EACpB,IAAI,CAACA,MAAM,GAAG,CAAC,EACf,IAAI,CAACA,MAAM,GAAG,CAAC,CAChB;MACDe,GAAG,CAACG,GAAG,CAAC,IAAI,CAACpB,CAAC,EAAE,IAAI,CAACC,CAAC,EAAE,IAAI,CAACC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAGmB,IAAI,CAACC,EAAE,CAAC;MACpDL,GAAG,CAACM,WAAW,GAAG,OAAO;MACzBN,GAAG,CAACO,MAAM,EAAE;IACd;EAAC;IAAAV,GAAA;IAAAC,KAAA,EAED,SAAAU,KAAA,EAAO;MACL,IAAI,CAACvB,MAAM,IAAI,GAAG;MAClB,IAAI,IAAI,CAACA,MAAM,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAACO,OAAO,IAAI,CAAC,EAAE;QAC/C,IAAI,CAACA,OAAO,IAAI,CAAC;QACjB,IAAI,CAACC,KAAK,CAACC,GAAG,wBAAAC,MAAA,CAAwB,IAAI,CAACT,WAAW,OAAAS,MAAA,CAAI,IAAI,CAACT,WAAW,EAAAS,MAAA,CAAG,IAAI,CAACH,OAAO,SAAM;MACjG;IACF;EAAC;IAAAK,GAAA;IAAAC,KAAA,EAED,SAAAW,SAASC,MAAM,EAAE;MAAA,IAAAC,KAAA;MACfD,MAAM,CAACE,OAAO,CAAC,UAACC,KAAK,EAAEC,GAAG,EAAK;QAC7B,IAAMC,EAAE,GAAGF,KAAK,CAAC9B,CAAC,GAAG4B,KAAI,CAAC5B,CAAC;QAC3B,IAAMiC,EAAE,GAAGH,KAAK,CAAC7B,CAAC,GAAG2B,KAAI,CAAC3B,CAAC;QAC3B,IAAMiC,QAAQ,GAAGb,IAAI,CAACc,IAAI,CAACH,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE,CAAC;QAC7C,IAAIC,QAAQ,GAAGN,KAAI,CAAC1B,MAAM,EAAE;UAC1B;UACAyB,MAAM,CAACS,MAAM,CAACL,GAAG,EAAE,CAAC,CAAC;UACrB;UACAH,KAAI,CAACH,IAAI,EAAE;QACb;MACF,CAAC,CAAC;IACJ;EAAC;IAAAX,GAAA;IAAAC,KAAA,EAED,SAAAsB,KAAKpB,GAAG,EAAEqB,MAAM,EAAEC,MAAM,EAAE;MACxB;MACA,IACED,MAAM,GAAGrB,GAAG,CAACuB,MAAM,CAACC,KAAK,GAAG,CAAC,GAAG,IAAI,CAACvC,MAAM,IAC3CoC,MAAM,GAAGrB,GAAG,CAACuB,MAAM,CAACC,KAAK,GAAG,CAAC,GAAG,IAAI,CAACvC,MAAM,IAC3CqC,MAAM,GAAGtB,GAAG,CAACuB,MAAM,CAACE,MAAM,GAAG,CAAC,GAAG,IAAI,CAACxC,MAAM,IAC5CqC,MAAM,GAAGtB,GAAG,CAACuB,MAAM,CAACE,MAAM,GAAG,CAAC,GAAG,IAAI,CAACxC,MAAM,EAC5C;QACA;MACF;MACA,IAAI,CAACF,CAAC,IAAI,IAAI,CAACQ,SAAS,CAACR,CAAC,GAAG,IAAI,CAACO,KAAK;MACvC,IAAI,CAACN,CAAC,IAAI,IAAI,CAACO,SAAS,CAACP,CAAC,GAAG,IAAI,CAACM,KAAK;MAEvC,IAAI,IAAI,CAACP,CAAC,GAAG,IAAI,CAACE,MAAM,GAAGe,GAAG,CAACuB,MAAM,CAACC,KAAK,GAAG,CAAC,EAC7C,IAAI,CAACzC,CAAC,GAAG,IAAI,CAACE,MAAM,GAAGe,GAAG,CAACuB,MAAM,CAACC,KAAK,GAAG,CAAC;MAC7C,IAAI,IAAI,CAACxC,CAAC,GAAG,IAAI,CAACC,MAAM,GAAGe,GAAG,CAACuB,MAAM,CAACE,MAAM,GAAG,CAAC,EAC9C,IAAI,CAACzC,CAAC,GAAG,IAAI,CAACC,MAAM,GAAGe,GAAG,CAACuB,MAAM,CAACE,MAAM,GAAG,CAAC;MAC9C,IAAI,IAAI,CAAC1C,CAAC,GAAGiB,GAAG,CAACwB,KAAK,GAAG,IAAI,CAACvC,MAAM,GAAGe,GAAG,CAACuB,MAAM,CAACC,KAAK,GAAG,CAAC,EAAE;QAC3D,IAAI,CAACzC,CAAC,GAAGiB,GAAG,CAACwB,KAAK,GAAG,IAAI,CAACvC,MAAM,GAAGe,GAAG,CAACuB,MAAM,CAACC,KAAK,GAAG,CAAC;MACzD;MACA,IAAI,IAAI,CAACxC,CAAC,GAAGgB,GAAG,CAACyB,MAAM,GAAG,IAAI,CAACxC,MAAM,GAAGe,GAAG,CAACuB,MAAM,CAACE,MAAM,GAAG,CAAC,EAAE;QAC7D,IAAI,CAACzC,CAAC,GAAGgB,GAAG,CAACyB,MAAM,GAAG,IAAI,CAACxC,MAAM,GAAGe,GAAG,CAACuB,MAAM,CAACE,MAAM,GAAG,CAAC;MAC3D;IACF;EAAC;IAAA5B,GAAA;IAAAC,KAAA,EACD,SAAA4B,OAAO3C,CAAC,EAAEC,CAAC,EAAEuC,MAAM,EAAE;MACnB,IAAMI,UAAU,GAAG5C,CAAC,GAAGwC,MAAM,CAACC,KAAK,GAAG,CAAC;MACvC,IAAMI,UAAU,GAAG5C,CAAC,GAAGuC,MAAM,CAACE,MAAM,GAAG,CAAC;MAExC,IAAMR,QAAQ,GAAGb,IAAI,CAACc,IAAI,CAACd,IAAA,CAAAyB,GAAA,CAAAF,UAAU,EAAI,CAAC,IAAAvB,IAAA,CAAAyB,GAAA,CAAGD,UAAU,EAAI,CAAC,EAAC;MAC7D,IAAI,CAACrC,SAAS,CAACR,CAAC,GAAG4C,UAAU,GAAGV,QAAQ;MACxC,IAAI,CAAC1B,SAAS,CAACP,CAAC,GAAG4C,UAAU,GAAGX,QAAQ;IAC1C;EAAC;EAAA,OAAAnC,MAAA;AAAA;AAGH,+DAAeA,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;ICtFfgD,UAAU,gBAAAlC,YAAA,CACd,SAAAkC,WAAYC,IAAI,EAAEhD,CAAC,EAAEC,CAAC,EAAEgD,IAAI,EAAEvC,KAAK,EAAE;EAAAN,eAAA,OAAA2C,UAAA;EACnC,IAAI,CAACC,IAAI,GAAGA,IAAI;EAChB,IAAI,CAAChD,CAAC,GAAGA,CAAC;EACV,IAAI,CAACC,CAAC,GAAGA,CAAC;EACV,IAAI,CAACgD,IAAI,GAAGA,IAAI;EAChB,IAAI,CAACvC,KAAK,GAAGA,KAAK;AACpB,CAAC;AAGI,IAAMwC,KAAK,0BAAAC,WAAA;EAAAC,SAAA,CAAAF,KAAA,EAAAC,WAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAJ,KAAA;EAChB,SAAAA,MAAYlD,CAAC,EAAEC,CAAC,EAAEgD,IAAI,EAAE;IAAA7C,eAAA,OAAA8C,KAAA;IACtB,IAAMK,eAAe,GAAG,IAAIjD,KAAK,EAAE;IACnCiD,eAAe,CAAC5C,GAAG,GAAG,mBAAmB;IAAC,OAAA0C,MAAA,CAAAG,IAAA,OACpC,OAAO,EAAExD,CAAC,EAAEC,CAAC,EAAEgD,IAAI,EAAEM,eAAe;EAC5C;EAAC1C,YAAA,CAAAqC,KAAA;IAAApC,GAAA;IAAAC,KAAA,EAED,SAAAC,KAAKC,GAAG,EAAE;MACRA,GAAG,CAACC,SAAS,EAAE;MACfD,GAAG,CAACE,SAAS,CAAC,IAAI,CAACT,KAAK,EAAE,IAAI,CAACV,CAAC,EAAE,IAAI,CAACC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;MACjDgB,GAAG,CAACwC,SAAS,EAAE;IACjB;EAAC;EAAA,OAAAP,KAAA;AAAA,EAXwBH,UAAU;;;;;;;;;;;;;;;;;;;;ICVhBW,MAAM;EACzB,SAAAA,OAAYC,MAAM,EAAE;IAAAvD,eAAA,OAAAsD,MAAA;IAClB,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,WAAW,GAAGD,MAAM,CAAC,CAAC,CAAC,CAACE,IAAI;EACnC;EAAChD,YAAA,CAAA6C,MAAA;IAAA5C,GAAA;IAAAC,KAAA,EACD,SAAA+C,YAAYC,IAAI,EAAE;MAChB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACL,MAAM,CAACM,MAAM,EAAED,CAAC,EAAE,EAAE;QAC3C,IAAI,IAAI,CAACL,MAAM,CAACK,CAAC,CAAC,CAACD,IAAI,KAAKA,IAAI,EAAE;UAChCG,QAAQ,CAACC,aAAa,KAAAvD,MAAA,CAAK,IAAI,CAACgD,WAAW,EAAG,CAACQ,KAAK,CAACC,OAAO,GAAG,MAAM;UACrE,IAAI,CAACT,WAAW,GAAG,IAAI,CAACD,MAAM,CAACK,CAAC,CAAC,CAACH,IAAI;UACtCK,QAAQ,CAACC,aAAa,KAAAvD,MAAA,CAAK,IAAI,CAACgD,WAAW,EAAG,CAACQ,KAAK,CAACC,OAAO,GAAG,MAAM;QACvE;MACF;IACF;EAAC;EAAA,OAAAX,MAAA;AAAA;;;;;;;;;;;;;;ACb8B;AACO;AAExC,IAAMa,IAAI,GAAG,SAAPA,IAAIA,CAAIC,UAAU,EAAEC,eAAe,EAAK;EAC5C,IAAMjC,MAAM,GAAG0B,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;EAC7C,IAAMlD,GAAG,GAAGuB,MAAM,CAACkC,UAAU,CAAC,IAAI,CAAC;EAEnClC,MAAM,CAACC,KAAK,GAAGyB,QAAQ,CAACS,eAAe,CAACC,WAAW;EACnDpC,MAAM,CAACE,MAAM,GAAGwB,QAAQ,CAACS,eAAe,CAACE,YAAY;EACrD5D,GAAG,CAACwB,KAAK,GAAG,IAAI;EAChBxB,GAAG,CAACyB,MAAM,GAAG,IAAI;EAEjBoC,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAE,UAACC,CAAC,EAAK;IACvCA,CAAC,CAACC,cAAc,EAAE;IAClBzC,MAAM,CAACC,KAAK,GAAGyB,QAAQ,CAACS,eAAe,CAACC,WAAW;IACnDpC,MAAM,CAACE,MAAM,GAAGwB,QAAQ,CAACS,eAAe,CAACE,YAAY;EACvD,CAAC,CAAC;EAEF,IAAMnE,KAAK,GAAG,IAAIJ,KAAK,EAAE;EACzBI,KAAK,CAACC,GAAG,GAAG,kBAAkB;EAC9B,IAAM4C,eAAe,GAAG,IAAIjD,KAAK,EAAE;EACnCiD,eAAe,CAAC5C,GAAG,GAAG,iBAAiB;EAEvC,IAAIuE,MAAM,GAAGT,eAAe;EAE5B,IAAMU,MAAM,GAAG,IAAIpF,kDAAM,CAACyC,MAAM,CAACC,KAAK,GAAG,CAAC,EAAED,MAAM,CAACE,MAAM,GAAG,CAAC,EAAE,EAAE,EAAEwC,MAAM,CAAC;EAE1EhB,QAAQ,CAACa,gBAAgB,CAAC,SAAS,EAAE,UAACK,KAAK,EAAK;IAC9CA,KAAK,CAACH,cAAc,EAAE;IACtB;IACA,QAAQG,KAAK,CAACC,OAAO;MACnB,KAAK,EAAE;QAAE;QACPF,MAAM,CAAC3E,SAAS,CAACR,CAAC,GAAG,CAAC,CAAC;QACvB;MACF,KAAK,EAAE;QAAE;QACPmF,MAAM,CAAC3E,SAAS,CAACP,CAAC,GAAG,CAAC,CAAC;QACvB;MACF,KAAK,EAAE;QAAE;QACPkF,MAAM,CAAC3E,SAAS,CAACR,CAAC,GAAG,CAAC;QACtB;MACF,KAAK,EAAE;QAAE;QACPmF,MAAM,CAAC3E,SAAS,CAACP,CAAC,GAAG,CAAC;QACtB;IAAM;EAEZ,CAAC,CAAC;EAEFiE,QAAQ,CAACa,gBAAgB,CAAC,OAAO,EAAE,UAACK,KAAK,EAAK;IAC5CA,KAAK,CAACH,cAAc,EAAE;IACtB;IACA,QAAQG,KAAK,CAACC,OAAO;MACnB,KAAK,EAAE;QAAE;QACP,IAAIF,MAAM,CAAC3E,SAAS,CAACR,CAAC,GAAG,CAAC,EAAE;UAC1BmF,MAAM,CAAC3E,SAAS,CAACR,CAAC,GAAG,CAAC;QACxB;QACA;MACF,KAAK,EAAE;QAAE;QACP,IAAImF,MAAM,CAAC3E,SAAS,CAACP,CAAC,GAAG,CAAC,EAAE;UAC1BkF,MAAM,CAAC3E,SAAS,CAACP,CAAC,GAAG,CAAC;QACxB;QACA;MACF,KAAK,EAAE;QAAE;QACP,IAAIkF,MAAM,CAAC3E,SAAS,CAACR,CAAC,GAAG,CAAC,EAAE;UAC1BmF,MAAM,CAAC3E,SAAS,CAACR,CAAC,GAAG,CAAC;QACxB;QACA;MACF,KAAK,EAAE;QAAE;QACP,IAAImF,MAAM,CAAC3E,SAAS,CAACP,CAAC,GAAG,CAAC,EAAE;UAC1BkF,MAAM,CAAC3E,SAAS,CAACP,CAAC,GAAG,CAAC;QACxB;QACA;IAAM;EAEZ,CAAC,CAAC;EAEF,IAAI0B,MAAM,GAAG,EAAE;EAEf,KAAK,IAAIqC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,EAAEA,CAAC,EAAE,EAAE;IAC7B,IAAMsB,MAAM,GAAG9C,MAAM,CAACC,KAAK,GAAG,CAAC;IAC/B,IAAM8C,IAAI,GAAGtE,GAAG,CAACwB,KAAK,GAAGD,MAAM,CAACC,KAAK,GAAG,CAAC;IACzC,IAAM+C,MAAM,GAAGhD,MAAM,CAACE,MAAM,GAAG,CAAC;IAChC,IAAM+C,IAAI,GAAGxE,GAAG,CAACyB,MAAM,GAAGF,MAAM,CAACE,MAAM,GAAG,CAAC;IAC3C,IAAM1C,CAAC,GAAGqB,IAAI,CAACqE,MAAM,EAAE,IAAIH,IAAI,GAAGD,MAAM,CAAC,GAAGA,MAAM;IAClD,IAAMrF,CAAC,GAAGoB,IAAI,CAACqE,MAAM,EAAE,IAAI,CAACF,MAAM,GAAGC,IAAI,CAAC,GAAGD,MAAM;IACnDG,OAAO,CAACC,GAAG,CAAC5F,CAAC,EAAEC,CAAC,CAAC;IACjB,IAAM6B,KAAK,GAAG,IAAIoB,iDAAK,CAAClD,CAAC,EAAEC,CAAC,EAAE,CAAC,CAAC;IAChC0B,MAAM,CAACkE,IAAI,CAAC/D,KAAK,CAAC;EACpB;EAEA,IAAIQ,MAAM;EACV,IAAIC,MAAM;EAEVC,MAAM,CAACuC,gBAAgB,CAAC,WAAW,EAAE,UAACK,KAAK,EAAK;IAC9CA,KAAK,CAACH,cAAc,EAAE;IACtB3C,MAAM,GAAG8C,KAAK,CAACU,OAAO;IACtBvD,MAAM,GAAG6C,KAAK,CAACW,OAAO;IAEtBZ,MAAM,CAACxC,MAAM,CAACL,MAAM,EAAEC,MAAM,EAAEC,MAAM,CAAC;EACvC,CAAC,CAAC;EAEF,SAASwD,MAAMA,CAAA,EAAG;IAChB/E,GAAG,CAACgF,IAAI,EAAE;IACVhF,GAAG,CAACiF,SAAS,CAAC,CAAC,EAAE,CAAC,EAAEjF,GAAG,CAACwB,KAAK,EAAExB,GAAG,CAACyB,MAAM,CAAC;IAC1CzB,GAAG,CAACC,SAAS,EAAE;;IAEf;IACA,IAAMiF,OAAO,GAAG3D,MAAM,CAACC,KAAK,GAAG,CAAC,GAAG0C,MAAM,CAACnF,CAAC;IAC3C,IAAMoG,OAAO,GAAG5D,MAAM,CAACE,MAAM,GAAG,CAAC,GAAGyC,MAAM,CAAClF,CAAC;IAC5CgB,GAAG,CAACoF,SAAS,CAACF,OAAO,EAAEC,OAAO,CAAC;IAC/B;IACA;IACAnF,GAAG,CAACE,SAAS,CAACoC,eAAe,EAAE,CAAC,EAAE,CAAC,EAAEtC,GAAG,CAACwB,KAAK,EAAExB,GAAG,CAACyB,MAAM,CAAC;IAC3Df,MAAM,CAACE,OAAO,CAAC,UAACC,KAAK,EAAK;MACxBA,KAAK,CAACd,IAAI,CAACC,GAAG,CAAC;IACjB,CAAC,CAAC;;IAEF;IACAkE,MAAM,CAACzD,QAAQ,CAACC,MAAM,CAAC;IACvBwD,MAAM,CAACnE,IAAI,CAACC,GAAG,CAAC;IAChBkE,MAAM,CAAC9C,IAAI,CAACpB,GAAG,EAAEqB,MAAM,EAAEC,MAAM,CAAC;IAChCtB,GAAG,CAACqF,OAAO,EAAE;IACb;IACA;IACAC,qBAAqB,CAACP,MAAM,CAAC;EAC/B;EACAA,MAAM,EAAE;AACV,CAAC;AAED,+DAAezB,IAAI;;;;;;UC9HnB;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA,8CAA8C;;;;;WCA9C;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;ACN6B;AACI;;AAEjC;;AAEA,IAAMZ,MAAM,GAAG,CACb;EAAEI,IAAI,EAAE,GAAG;EAAEF,IAAI,EAAE;AAAO,CAAC,EAC3B;EAAEE,IAAI,EAAE,OAAO;EAAEF,IAAI,EAAE;AAAO,CAAC,EAC/B;EAAEE,IAAI,EAAE,MAAM;EAAEF,IAAI,EAAE;AAAM,CAAC,CAC9B;AACD,IAAI2C,MAAM,GAAG,IAAI9C,kDAAM,CAACC,MAAM,CAAC;AAE/B,IAAM8C,KAAK,GAAGvC,QAAQ,CAACwC,gBAAgB,CAAC,GAAG,CAAC;AAC5C,KAAK,IAAI1C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyC,KAAK,CAACxC,MAAM,EAAED,CAAC,EAAE,EAAE;EACrCyC,KAAK,CAACzC,CAAC,CAAC,CAACe,gBAAgB,CAAC,OAAO,EAAE,UAACC,CAAC,EAAK;IACxCA,CAAC,CAACC,cAAc,EAAE;IAClBuB,MAAM,CAAC1C,WAAW,CAACkB,CAAC,CAAC2B,aAAa,CAACC,YAAY,CAAC,MAAM,CAAC,CAAC;EAC1D,CAAC,CAAC;AACJ;AAEA,IAAMC,SAAS,GAAG3C,QAAQ,CAACC,aAAa,CAAC,OAAO,CAAC;AACjD,IAAM2C,MAAM,GAAG5C,QAAQ,CAACwC,gBAAgB,CAAC,QAAQ,CAAC;AAElD,IAAIjC,eAAe,GAAG,MAAM;AAC5B,IAAID,UAAU,GAAG,EAAE;AAEnBqC,SAAS,CAAC9B,gBAAgB,CAAC,OAAO,EAAE,UAACC,CAAC,EAAK;EACzCA,CAAC,CAACC,cAAc,EAAE;EAClBU,OAAO,CAACC,GAAG,CAACZ,CAAC,CAAC2B,aAAa,CAAC5F,KAAK,CAAC;EAClCyD,UAAU,GAAGQ,CAAC,CAAC2B,aAAa,CAAC5F,KAAK;AACpC,CAAC,CAAC;AAEF,KAAK,IAAIiD,EAAC,GAAG,CAAC,EAAEA,EAAC,GAAG8C,MAAM,CAAC7C,MAAM,EAAED,EAAC,EAAE,EAAE;EACtC8C,MAAM,CAAC9C,EAAC,CAAC,CAACe,gBAAgB,CAAC,OAAO,EAAE,UAACC,CAAC,EAAK;IACzCP,eAAe,GAAGO,CAAC,CAAC2B,aAAa,CAACC,YAAY,CAAC,MAAM,CAAC;IACtDjB,OAAO,CAACC,GAAG,CAACnB,eAAe,CAAC;EAC9B,CAAC,CAAC;AACJ;AAEA,IAAMsC,SAAS,GAAG7C,QAAQ,CAACC,aAAa,CAAC,OAAO,CAAC;AACjD,IAAM6C,WAAW,GAAG9C,QAAQ,CAACC,aAAa,CAAC,eAAe,CAAC;AAC3D,IAAM8C,GAAG,GAAG/C,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;AAE1C6C,WAAW,CAACjC,gBAAgB,CAAC,OAAO,EAAE,UAACC,CAAC,EAAK;EAC3CA,CAAC,CAACC,cAAc,EAAE;EAClB8B,SAAS,CAAC3C,KAAK,CAACC,OAAO,GAAG,MAAM;EAChC4C,GAAG,CAAC7C,KAAK,CAACC,OAAO,GAAG,OAAO;EAC3B,IAAIG,UAAU,CAACP,MAAM,GAAG,CAAC,EAAE;IACzBM,oDAAI,CAACC,UAAU,EAAEC,eAAe,CAAC;EACnC;AACF,CAAC,CAAC,C","sources":["webpack://sae-2023-groupei-lasoa-gomis/./client/src/Player.js","webpack://sae-2023-groupei-lasoa-gomis/./client/src/Ressources.js","webpack://sae-2023-groupei-lasoa-gomis/./client/src/Router.js","webpack://sae-2023-groupei-lasoa-gomis/./client/src/main.js","webpack://sae-2023-groupei-lasoa-gomis/webpack/bootstrap","webpack://sae-2023-groupei-lasoa-gomis/webpack/runtime/define property getters","webpack://sae-2023-groupei-lasoa-gomis/webpack/runtime/hasOwnProperty shorthand","webpack://sae-2023-groupei-lasoa-gomis/webpack/runtime/make namespace object","webpack://sae-2023-groupei-lasoa-gomis/./client/src/index.js"],"sourcesContent":["class Player {\r\n  image = new Image();\r\n  constructor(x, y, radius, imageFolder) {\r\n    this.x = x;\r\n    this.y = y;\r\n    this.radius = radius;\r\n    this.speed = 4;\r\n    this.direction = {\r\n      x: 0,\r\n      y: 0,\r\n    };\r\n    this.imageId = 1;\r\n    this.imageFolder = imageFolder;\r\n    this.image.src = `/images/character/${this.imageFolder}/${this.imageFolder}${this.imageId}.png`;\r\n  }\r\n  draw(ctx) {\r\n    // Dessiner le cercle\r\n    ctx.beginPath();\r\n    ctx.drawImage(\r\n      this.image,\r\n      this.x - this.radius,\r\n      this.y - this.radius,\r\n      this.radius * 2,\r\n      this.radius * 2\r\n    );\r\n    ctx.arc(this.x, this.y, this.radius, 0, 2 * Math.PI);\r\n    ctx.strokeStyle = \"black\";\r\n    ctx.stroke();\r\n  }\r\n\r\n  grow() {\r\n    this.radius += 0.5;\r\n    if (this.radius % 80 === 0 && this.imageId <= 5) {\r\n      this.imageId += 1;\r\n      this.image.src = `/images/character/${this.imageFolder}/${this.imageFolder}${this.imageId}.png`;\r\n    }\r\n  }\r\n\r\n  eatSushi(sushis) {\r\n    sushis.forEach((sushi, idx) => {\r\n      const dx = sushi.x - this.x;\r\n      const dy = sushi.y - this.y;\r\n      const distance = Math.sqrt(dx * dx + dy * dy);\r\n      if (distance < this.radius) {\r\n        // Supprime la nourriture de la liste\r\n        sushis.splice(idx, 1);\r\n        // Augmente la taille du joueur\r\n        this.grow();\r\n      }\r\n    });\r\n  }\r\n\r\n  move(ctx, mouseX, mouseY) {\r\n    // Déplacer le cercle en fonction de la direction\r\n    if (\r\n      mouseX > ctx.canvas.width / 2 - this.radius &&\r\n      mouseX < ctx.canvas.width / 2 + this.radius &&\r\n      mouseY > ctx.canvas.height / 2 - this.radius &&\r\n      mouseY < ctx.canvas.height / 2 + this.radius\r\n    ) {\r\n      return;\r\n    }\r\n    this.x += this.direction.x * this.speed;\r\n    this.y += this.direction.y * this.speed;\r\n\r\n    if (this.x < this.radius + ctx.canvas.width / 2)\r\n      this.x = this.radius + ctx.canvas.width / 2;\r\n    if (this.y < this.radius + ctx.canvas.height / 2)\r\n      this.y = this.radius + ctx.canvas.height / 2;\r\n    if (this.x > ctx.width - this.radius - ctx.canvas.width / 2) {\r\n      this.x = ctx.width - this.radius - ctx.canvas.width / 2;\r\n    }\r\n    if (this.y > ctx.height - this.radius - ctx.canvas.height / 2) {\r\n      this.y = ctx.height - this.radius - ctx.canvas.height / 2;\r\n    }\r\n  }\r\n  moveTo(x, y, canvas) {\r\n    const directionX = x - canvas.width / 2;\r\n    const directionY = y - canvas.height / 2;\r\n\r\n    const distance = Math.sqrt(directionX ** 2 + directionY ** 2);\r\n    this.direction.x = directionX / distance;\r\n    this.direction.y = directionY / distance;\r\n  }\r\n}\r\n\r\nexport default Player;\r\n","class Ressources {\r\n  constructor(name, x, y, size, image) {\r\n    this.name = name;\r\n    this.x = x;\r\n    this.y = y;\r\n    this.size = size;\r\n    this.image = image;\r\n  }\r\n}\r\n\r\nexport class Sushi extends Ressources {\r\n  constructor(x, y, size) {\r\n    const backgroundImage = new Image();\r\n    backgroundImage.src = \"/images/sushi.png\";\r\n    super(\"sushi\", x, y, size, backgroundImage);\r\n  }\r\n\r\n  draw(ctx) {\r\n    ctx.beginPath();\r\n    ctx.drawImage(this.image, this.x, this.y, 25, 25);\r\n    ctx.closePath();\r\n  }\r\n}\r\n","export default class Router {\r\n  constructor(routes) {\r\n    this.routes = routes;\r\n    this.actualRoute = routes[0].page;\r\n  }\r\n  ChangePages(path) {\r\n    for (let i = 0; i < this.routes.length; i++) {\r\n      if (this.routes[i].path === path) {\r\n        document.querySelector(`.${this.actualRoute}`).style.display = \"none\";\r\n        this.actualRoute = this.routes[i].page;\r\n        document.querySelector(`.${this.actualRoute}`).style.display = \"flex\";\r\n      }\r\n    }\r\n  }\r\n}\r\n","import Player from \"./Player.js\";\r\nimport { Sushi } from \"./Ressources.js\";\r\n\r\nconst Main = (playerName, playerCharacter) => {\r\n  const canvas = document.querySelector(\".map\");\r\n  const ctx = canvas.getContext(\"2d\");\r\n\r\n  canvas.width = document.documentElement.clientWidth;\r\n  canvas.height = document.documentElement.clientHeight;\r\n  ctx.width = 6000;\r\n  ctx.height = 3340;\r\n\r\n  window.addEventListener(\"resize\", (e) => {\r\n    e.preventDefault();\r\n    canvas.width = document.documentElement.clientWidth;\r\n    canvas.height = document.documentElement.clientHeight;\r\n  });\r\n\r\n  const image = new Image();\r\n  image.src = \"/images/goku.png\";\r\n  const backgroundImage = new Image();\r\n  backgroundImage.src = \"/images/map.jpg\";\r\n\r\n  let folder = playerCharacter;\r\n\r\n  const player = new Player(canvas.width / 2, canvas.height / 2, 20, folder);\r\n\r\n  document.addEventListener(\"keydown\", (event) => {\r\n    event.preventDefault();\r\n    // Mettre à jour la direction en fonction des touches enfoncées\r\n    switch (event.keyCode) {\r\n      case 37: // Gauche\r\n        player.direction.x = -1;\r\n        break;\r\n      case 38: // Haut\r\n        player.direction.y = -1;\r\n        break;\r\n      case 39: // Droite\r\n        player.direction.x = 1;\r\n        break;\r\n      case 40: // Bas\r\n        player.direction.y = 1;\r\n        break;\r\n    }\r\n  });\r\n\r\n  document.addEventListener(\"keyup\", (event) => {\r\n    event.preventDefault();\r\n    // Mettre à jour la direction en fonction des touches relâchées\r\n    switch (event.keyCode) {\r\n      case 37: // Gauche\r\n        if (player.direction.x < 0) {\r\n          player.direction.x = 0;\r\n        }\r\n        break;\r\n      case 38: // Haut\r\n        if (player.direction.y < 0) {\r\n          player.direction.y = 0;\r\n        }\r\n        break;\r\n      case 39: // Droite\r\n        if (player.direction.x > 0) {\r\n          player.direction.x = 0;\r\n        }\r\n        break;\r\n      case 40: // Bas\r\n        if (player.direction.y > 0) {\r\n          player.direction.y = 0;\r\n        }\r\n        break;\r\n    }\r\n  });\r\n\r\n  let sushis = [];\r\n\r\n  for (let i = 0; i < 1500; i++) {\r\n    const xStart = canvas.width / 2;\r\n    const xEnd = ctx.width - canvas.width / 2;\r\n    const yStart = canvas.height / 2;\r\n    const yEnd = ctx.height - canvas.height / 2;\r\n    const x = Math.random() * (xEnd - xStart) + xStart;\r\n    const y = Math.random() * (-yStart + yEnd) + yStart;\r\n    console.log(x, y);\r\n    const sushi = new Sushi(x, y, 5);\r\n    sushis.push(sushi);\r\n  }\r\n\r\n  let mouseX;\r\n  let mouseY;\r\n\r\n  canvas.addEventListener(\"mousemove\", (event) => {\r\n    event.preventDefault();\r\n    mouseX = event.clientX;\r\n    mouseY = event.clientY;\r\n\r\n    player.moveTo(mouseX, mouseY, canvas);\r\n  });\r\n\r\n  function update() {\r\n    ctx.save();\r\n    ctx.clearRect(0, 0, ctx.width, ctx.height);\r\n    ctx.beginPath();\r\n\r\n    // Déplacer le joueur en fonction de la direction\r\n    const cameraX = canvas.width / 2 - player.x;\r\n    const cameraY = canvas.height / 2 - player.y;\r\n    ctx.translate(cameraX, cameraY);\r\n    // Déplacer le contexte pour centrer la caméra ssur le joueur\r\n    // Dessiner le joueur et les autres éléments du jeu\r\n    ctx.drawImage(backgroundImage, 0, 0, ctx.width, ctx.height);\r\n    sushis.forEach((sushi) => {\r\n      sushi.draw(ctx);\r\n    });\r\n\r\n    //player.move(ctx);\r\n    player.eatSushi(sushis);\r\n    player.draw(ctx);\r\n    player.move(ctx, mouseX, mouseY);\r\n    ctx.restore();\r\n    // Déplacer le contexte pour centrer la caméra sur le joueur\r\n    //ctx.translate(-cameraX, -cameraY);\r\n    requestAnimationFrame(update);\r\n  }\r\n  update();\r\n};\r\n\r\nexport default Main;\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import Main from \"./main.js\";\r\nimport Router from \"./Router.js\";\r\n\r\n/* Navigation */\r\n\r\nconst routes = [\r\n  { path: \"/\", page: \"home\" },\r\n  { path: \"/play\", page: \"play\" },\r\n  { path: \"/map\", page: \"map\" },\r\n];\r\nlet router = new Router(routes);\r\n\r\nconst links = document.querySelectorAll(\"a\");\r\nfor (let i = 0; i < links.length; i++) {\r\n  links[i].addEventListener(\"click\", (e) => {\r\n    e.preventDefault();\r\n    router.ChangePages(e.currentTarget.getAttribute(\"href\"));\r\n  });\r\n}\r\n\r\nconst inputName = document.querySelector(\".name\");\r\nconst slides = document.querySelectorAll(\".slide\");\r\n\r\nlet playerCharacter = \"goku\";\r\nlet playerName = \"\";\r\n\r\ninputName.addEventListener(\"input\", (e) => {\r\n  e.preventDefault();\r\n  console.log(e.currentTarget.value);\r\n  playerName = e.currentTarget.value;\r\n});\r\n\r\nfor (let i = 0; i < slides.length; i++) {\r\n  slides[i].addEventListener(\"click\", (e) => {\r\n    playerCharacter = e.currentTarget.getAttribute(\"name\");\r\n    console.log(playerCharacter);\r\n  });\r\n}\r\n\r\nconst playPages = document.querySelector(\".play\");\r\nconst startButton = document.querySelector(\".start-button\");\r\nconst map = document.querySelector(\".map\");\r\n\r\nstartButton.addEventListener(\"click\", (e) => {\r\n  e.preventDefault();\r\n  playPages.style.display = \"none\";\r\n  map.style.display = \"block\";\r\n  if (playerName.length > 0) {\r\n    Main(playerName, playerCharacter);\r\n  }\r\n});\r\n"],"names":["Player","x","y","radius","imageFolder","_classCallCheck","_defineProperty","Image","speed","direction","imageId","image","src","concat","_createClass","key","value","draw","ctx","beginPath","drawImage","arc","Math","PI","strokeStyle","stroke","grow","eatSushi","sushis","_this","forEach","sushi","idx","dx","dy","distance","sqrt","splice","move","mouseX","mouseY","canvas","width","height","moveTo","directionX","directionY","pow","Ressources","name","size","Sushi","_Ressources","_inherits","_super","_createSuper","backgroundImage","call","closePath","Router","routes","actualRoute","page","ChangePages","path","i","length","document","querySelector","style","display","default","Main","playerName","playerCharacter","getContext","documentElement","clientWidth","clientHeight","window","addEventListener","e","preventDefault","folder","player","event","keyCode","xStart","xEnd","yStart","yEnd","random","console","log","push","clientX","clientY","update","save","clearRect","cameraX","cameraY","translate","restore","requestAnimationFrame","router","links","querySelectorAll","currentTarget","getAttribute","inputName","slides","playPages","startButton","map"],"sourceRoot":""}
\ No newline at end of file
diff --git a/client/public/css/style.css b/client/public/css/style.css
index ce471802eb74c09458bce50ca552e0064215a2d7..5161f817c86ca2e4ed37b3de6cb761451222aa23 100644
--- a/client/public/css/style.css
+++ b/client/public/css/style.css
@@ -5,10 +5,210 @@ body{
     box-sizing: border-box;
     margin: 0;
     padding: 0;
+}
+a{
+    text-decoration: none;
+}
+h1{
+    margin: 0;
+}
+ul{
+    padding: 0;
+    margin: 0;
+}
+li{
+    list-style: none;
+}
+/*Home Page*/
+.home{
+    display: flex; /*DISPLAY*/
+    align-items: center;
+    justify-content: center;
+    width: 100%;
+    height: 100vh;
+    min-height: 600px;
+    background-image: url('../images/map.jpg');
+    background-size: cover;
+    background-position: center;
+}
+.home-menu{
+    display: flex;
+    align-items: center;
+    position: relative;
+    width: 32%;
+    height: 56%;
+    border-radius: 30px;
+    border: 10px solid #D84800;
+    background-color: #11236572;
+}
+.home-menu > ul {
+    display: flex;
+    flex-direction: column;
+    justify-content: space-around;
+    align-items: center;
+    font-size: 40px;
+    font-family: 'Karantina', cursive;
+    width: 100%;
+    height: 60%;
+}
+.home-menu > ul > li a{
+    -webkit-text-stroke: 0.3px #000;
+    text-shadow: 7px 7px 7px rgba(0, 0, 0, 0.25);
+    color: #D84800;
+    cursor: pointer;
+}
+.home-menu > ul > li a:hover{
+    text-shadow: 4px 4px 4px rgba(0, 0, 0, 0.25);
+}
+.logo{
+    position: absolute;
+    left: -400px;
+    top: -50px;
+    transform: rotate(-11deg);
+}
+.goku{
+    position: absolute;
+    right: -130px;
+    top: -100px;
+}
+/*Play Page*/
+.play{
+    display: none; /*DISPLAY*/
+    flex-direction: column;
+    align-items: center;
+    width: 100%;
+    height: 100vh;
+    min-height: 600px;
+    background-image: url('../images/play_background.png');
+    background-size: cover;
+    background-position: center;
+}
+
+.play-top{
+    padding: 0 20px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    width: 100%;
+    height: 20%;
+    font-family: 'Karantina', cursive;
+}
+
+.play-top > a > h1{
+    font-size: 60px;
+    font-weight: 400;
+    color: #fff;
+    cursor: pointer;
+}
+
+.play-middle{
+    display: flex;
+    flex-direction: column;
+    width: 45%;
+    height: 60%;
+}
+
+.play-middle-top{
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    position: relative;
+    width: 100%;
+    height: 30%;
+    color: #fff;
+    font-family: 'Karantina', cursive;
+}
+.play-middle-top > img{
+    position: absolute;
+    left: -240px;
+    top: -16px;
+    width: 250px;
+    transform: rotate(30deg);
+}
+.play-middle-top > h1{
+    font-weight: 400;
+    font-size: 40px;
+}
+.play-middle-top > .name{
+    width: 100%;
+    height: 50%;
+    background: none;
+    border: 5px solid #0094FF;
+    outline: none;
+    color: #fff;
+    font-size: 30px;
+    font-family: 'Karantina', cursive;
+}
+.play-middle-bottom{
+    width: 100%;
+    height: 70%;
+    color: #fff;
+}
+.play-middle-bottom-title{
+    display: flex;
+    justify-content: center;
+    width: 100%;
+    height: 20%;
+    font-size: 30px;
+    font-family: 'Karantina', cursive;
+}
+.play-middle-bottom-title > h1{
+    font-weight: 400;
+    text-shadow: 5px 5px 5px rgba(0, 0, 0, 0.4);
+}
+
+.carousel {
+    position: relative;
     overflow: hidden;
+    width: 100%;
+    height: 80%;
 }
+  
+.slides-container {
+    display: flex;
+    height: 100%;
+    transition: transform 0.5s ease-in-out;
+}
+  
+.slide {
+    height: 100%;
+    padding: 1rem;
+    cursor: pointer;
+}
+  
+.prev, .next {
+    position: absolute;
+    top: 50%;
+    transform: translateY(-50%);
+    padding: 1rem;
+    color: #fff;
+    background-color: #000;
+    cursor: pointer;
+}
+  
+.next {
+    right: 0;
+}
+
+.play-bottom{
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    width: 100%;
+    height: 20%;
+}
+
+.start-button{
+    padding: 10px 80px;
+    background-color: #D84800;
+    color: #fff;
+    font-family: 'Karantina', cursive;
+    font-size: 30px;
+    border: none;
+    cursor: pointer;
+}
+
 .map{
-    box-sizing: border-box;
+    display: none;
     background-size: cover;
-    box-sizing: border-box;
-}
\ No newline at end of file
+}
diff --git a/client/public/images/goku.png b/client/public/images/goku.png
index 061596ecf051004877fc3c7ceac335ab85b5d1f8..f288b704be7902632c20cffc25efa640bf6e6046 100644
Binary files a/client/public/images/goku.png and b/client/public/images/goku.png differ
diff --git a/client/public/images/krillin.png b/client/public/images/krillin.png
new file mode 100644
index 0000000000000000000000000000000000000000..723f61831cd240650e58bd84165260d9534d35e2
Binary files /dev/null and b/client/public/images/krillin.png differ
diff --git a/client/public/images/logo.png b/client/public/images/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..12e6feb8e7b277aabc6d20bfd3982e3c9df69fa7
Binary files /dev/null and b/client/public/images/logo.png differ
diff --git a/client/public/images/play_background.png b/client/public/images/play_background.png
new file mode 100644
index 0000000000000000000000000000000000000000..ebbae2a35b8ed93f65f76ed52582f3b6f5a3713f
Binary files /dev/null and b/client/public/images/play_background.png differ
diff --git a/client/public/index.html b/client/public/index.html
index de8363bb7b3bdce0f2a0bbf71f7f658b209189cb..f7fe5a7b7a65ac587b0aa4bd81eaa1b5fc6dbd0e 100644
--- a/client/public/index.html
+++ b/client/public/index.html
@@ -7,8 +7,51 @@
     <title>Dragon.io</title>
     <script src="./build/main.bundle.js" defer></script>
     <link rel="stylesheet" href="css/style.css">
+    <link rel="preconnect" href="https://fonts.googleapis.com">
+    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+    <link href="https://fonts.googleapis.com/css2?family=Karantina&display=swap" rel="stylesheet">
 </head>
-<body>
+<body> 
+    <section class="home">
+        <div class="home-menu">
+            <img class="logo" src="./images/logo.png" />
+            <img class="goku" src="./images/goku.png" />
+            <ul>
+                <li><a href="/play"><h1>PLAY</h1></a></li>
+                <li><a href="/settings"><h1>SETTINGS</h1></a></li>
+                <li><a href="/credits"><h1>CREDITS</h1></a></li>
+            </ul>
+        </div>
+    </section>
+    <section class="play">
+        <div class="play-top">
+            <img src="./images/logo.png" />
+            <a href="/"><h1 class="exit">EXIT</h1></a>
+        </div>
+        <div class="play-middle">
+            <div class="play-middle-top">
+                <img src="./images/krillin.png" />
+                <h1>YOUR NAME</h1>
+                <input class="name" type="text"  placeholder="What you name" />
+            </div>
+            <div class="play-middle-bottom">
+                <div class="play-middle-bottom-title">
+                    <h1>CHOOSE YOUR CHARACTER</h1>
+                </div>
+                <div class="carousel">
+                    <div class="slides-container">
+                        <img class="slide" name="goku" src="./images/character/goku/goku1.png">
+                        <img class="slide" name="freezer" src="./images/character/freezer/freezer1.png">
+                    </div>
+                    <a class="prev">&#10094;</a>
+                    <a class="next">&#10095;</a>
+                  </div>
+            </div>
+        </div>
+        <div class="play-bottom">
+            <button href="/map" class="start-button">START</button>
+        </div>
+    </section>
     <canvas class="map"></canvas>
 </body>
 </html>
\ No newline at end of file
diff --git a/client/src/Router.js b/client/src/Router.js
new file mode 100644
index 0000000000000000000000000000000000000000..55913ee34eb14fa95ae63fd8cc5902fddedab9ff
--- /dev/null
+++ b/client/src/Router.js
@@ -0,0 +1,15 @@
+export default class Router {
+  constructor(routes) {
+    this.routes = routes;
+    this.actualRoute = routes[0].page;
+  }
+  ChangePages(path) {
+    for (let i = 0; i < this.routes.length; i++) {
+      if (this.routes[i].path === path) {
+        document.querySelector(`.${this.actualRoute}`).style.display = "none";
+        this.actualRoute = this.routes[i].page;
+        document.querySelector(`.${this.actualRoute}`).style.display = "flex";
+      }
+    }
+  }
+}
diff --git a/client/src/index.js b/client/src/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..1f3cdd718480aaa2488e2a0afbc4d3cc09232ce1
--- /dev/null
+++ b/client/src/index.js
@@ -0,0 +1,51 @@
+import Main from "./main.js";
+import Router from "./Router.js";
+
+/* Navigation */
+
+const routes = [
+  { path: "/", page: "home" },
+  { path: "/play", page: "play" },
+  { path: "/map", page: "map" },
+];
+let router = new Router(routes);
+
+const links = document.querySelectorAll("a");
+for (let i = 0; i < links.length; i++) {
+  links[i].addEventListener("click", (e) => {
+    e.preventDefault();
+    router.ChangePages(e.currentTarget.getAttribute("href"));
+  });
+}
+
+const inputName = document.querySelector(".name");
+const slides = document.querySelectorAll(".slide");
+
+let playerCharacter = "goku";
+let playerName = "";
+
+inputName.addEventListener("input", (e) => {
+  e.preventDefault();
+  console.log(e.currentTarget.value);
+  playerName = e.currentTarget.value;
+});
+
+for (let i = 0; i < slides.length; i++) {
+  slides[i].addEventListener("click", (e) => {
+    playerCharacter = e.currentTarget.getAttribute("name");
+    console.log(playerCharacter);
+  });
+}
+
+const playPages = document.querySelector(".play");
+const startButton = document.querySelector(".start-button");
+const map = document.querySelector(".map");
+
+startButton.addEventListener("click", (e) => {
+  e.preventDefault();
+  playPages.style.display = "none";
+  map.style.display = "block";
+  if (playerName.length > 0) {
+    Main(playerName, playerCharacter);
+  }
+});
diff --git a/client/src/main.js b/client/src/main.js
index e76c85b287c7532f49930079831337386d15f443..fbadd45d7a5723ff441ae750f01656877560210a 100644
--- a/client/src/main.js
+++ b/client/src/main.js
@@ -1,120 +1,127 @@
 import Player from "./Player.js";
 import { Sushi } from "./Ressources.js";
 
-const canvas = document.querySelector(".map");
-const ctx = canvas.getContext("2d");
+const Main = (playerName, playerCharacter) => {
+  const canvas = document.querySelector(".map");
+  const ctx = canvas.getContext("2d");
 
-canvas.width = document.documentElement.clientWidth;
-canvas.height = document.documentElement.clientHeight;
-ctx.width = 6000;
-ctx.height = 3340;
-
-window.addEventListener("resize", (e) => {
-  e.preventDefault();
   canvas.width = document.documentElement.clientWidth;
   canvas.height = document.documentElement.clientHeight;
-});
-
-const image = new Image();
-image.src = "/images/goku.png";
-const backgroundImage = new Image();
-backgroundImage.src = "/images/map.jpg";
-
-let folder = "freezer";
-
-const player = new Player(canvas.width / 2, canvas.height / 2, 20, folder);
-
-document.addEventListener("keydown", (event) => {
-  event.preventDefault();
-  // Mettre à jour la direction en fonction des touches enfoncées
-  switch (event.keyCode) {
-    case 37: // Gauche
-      player.direction.x = -1;
-      break;
-    case 38: // Haut
-      player.direction.y = -1;
-      break;
-    case 39: // Droite
-      player.direction.x = 1;
-      break;
-    case 40: // Bas
-      player.direction.y = 1;
-      break;
-  }
-});
-
-document.addEventListener("keyup", (event) => {
-  event.preventDefault();
-  // Mettre à jour la direction en fonction des touches relâchées
-  switch (event.keyCode) {
-    case 37: // Gauche
-      if (player.direction.x < 0) {
-        player.direction.x = 0;
-      }
-      break;
-    case 38: // Haut
-      if (player.direction.y < 0) {
-        player.direction.y = 0;
-      }
-      break;
-    case 39: // Droite
-      if (player.direction.x > 0) {
-        player.direction.x = 0;
-      }
-      break;
-    case 40: // Bas
-      if (player.direction.y > 0) {
-        player.direction.y = 0;
-      }
-      break;
+  ctx.width = 6000;
+  ctx.height = 3340;
+
+  window.addEventListener("resize", (e) => {
+    e.preventDefault();
+    canvas.width = document.documentElement.clientWidth;
+    canvas.height = document.documentElement.clientHeight;
+  });
+
+  const image = new Image();
+  image.src = "/images/goku.png";
+  const backgroundImage = new Image();
+  backgroundImage.src = "/images/map.jpg";
+
+  let folder = playerCharacter;
+
+  const player = new Player(canvas.width / 2, canvas.height / 2, 20, folder);
+
+  document.addEventListener("keydown", (event) => {
+    event.preventDefault();
+    // Mettre à jour la direction en fonction des touches enfoncées
+    switch (event.keyCode) {
+      case 37: // Gauche
+        player.direction.x = -1;
+        break;
+      case 38: // Haut
+        player.direction.y = -1;
+        break;
+      case 39: // Droite
+        player.direction.x = 1;
+        break;
+      case 40: // Bas
+        player.direction.y = 1;
+        break;
+    }
+  });
+
+  document.addEventListener("keyup", (event) => {
+    event.preventDefault();
+    // Mettre à jour la direction en fonction des touches relâchées
+    switch (event.keyCode) {
+      case 37: // Gauche
+        if (player.direction.x < 0) {
+          player.direction.x = 0;
+        }
+        break;
+      case 38: // Haut
+        if (player.direction.y < 0) {
+          player.direction.y = 0;
+        }
+        break;
+      case 39: // Droite
+        if (player.direction.x > 0) {
+          player.direction.x = 0;
+        }
+        break;
+      case 40: // Bas
+        if (player.direction.y > 0) {
+          player.direction.y = 0;
+        }
+        break;
+    }
+  });
+
+  let sushis = [];
+
+  for (let i = 0; i < 1500; i++) {
+    const xStart = canvas.width / 2;
+    const xEnd = ctx.width - canvas.width / 2;
+    const yStart = canvas.height / 2;
+    const yEnd = ctx.height - canvas.height / 2;
+    const x = Math.random() * (xEnd - xStart) + xStart;
+    const y = Math.random() * (-yStart + yEnd) + yStart;
+    console.log(x, y);
+    const sushi = new Sushi(x, y, 5);
+    sushis.push(sushi);
   }
-});
-
-let sushis = [];
-
-for (let i = 0; i < 1000; i++) {
-  const x = Math.random() * (ctx.width - canvas.width / 2) + canvas.width / 2;
-  const y =
-    Math.random() * (ctx.height - canvas.height / 2) + canvas.height / 2;
-  const sushi = new Sushi(x, y, 5);
-  sushis.push(sushi);
-}
-
-let mouseX;
-let mouseY;
-
-canvas.addEventListener("mousemove", (event) => {
-  event.preventDefault();
-  mouseX = event.clientX;
-  mouseY = event.clientY;
-
-  player.moveTo(mouseX, mouseY, canvas);
-});
-
-function update() {
-  ctx.save();
-  ctx.clearRect(0, 0, ctx.width, ctx.height);
-  ctx.beginPath();
-
-  // Déplacer le joueur en fonction de la direction
-  const cameraX = canvas.width / 2 - player.x;
-  const cameraY = canvas.height / 2 - player.y;
-  ctx.translate(cameraX, cameraY);
-  // Déplacer le contexte pour centrer la caméra ssur le joueur
-  // Dessiner le joueur et les autres éléments du jeu
-  ctx.drawImage(backgroundImage, 0, 0, ctx.width, ctx.height);
-  sushis.forEach((sushi) => {
-    sushi.draw(ctx);
+
+  let mouseX;
+  let mouseY;
+
+  canvas.addEventListener("mousemove", (event) => {
+    event.preventDefault();
+    mouseX = event.clientX;
+    mouseY = event.clientY;
+
+    player.moveTo(mouseX, mouseY, canvas);
   });
 
-  //player.move(ctx);
-  player.eatSushi(sushis);
-  player.draw(ctx);
-  player.move(ctx, mouseX, mouseY);
-  ctx.restore();
-  // Déplacer le contexte pour centrer la caméra sur le joueur
-  //ctx.translate(-cameraX, -cameraY);
-  requestAnimationFrame(update);
-}
-
-update();
+  function update() {
+    ctx.save();
+    ctx.clearRect(0, 0, ctx.width, ctx.height);
+    ctx.beginPath();
+
+    // Déplacer le joueur en fonction de la direction
+    const cameraX = canvas.width / 2 - player.x;
+    const cameraY = canvas.height / 2 - player.y;
+    ctx.translate(cameraX, cameraY);
+    // Déplacer le contexte pour centrer la caméra ssur le joueur
+    // Dessiner le joueur et les autres éléments du jeu
+    ctx.drawImage(backgroundImage, 0, 0, ctx.width, ctx.height);
+    sushis.forEach((sushi) => {
+      sushi.draw(ctx);
+    });
+
+    //player.move(ctx);
+    player.eatSushi(sushis);
+    player.draw(ctx);
+    player.move(ctx, mouseX, mouseY);
+    ctx.restore();
+    // Déplacer le contexte pour centrer la caméra sur le joueur
+    //ctx.translate(-cameraX, -cameraY);
+    requestAnimationFrame(update);
+  }
+  update();
+};
+
+export default Main;
diff --git a/webpack.config.js b/webpack.config.js
index bf17e7d692bb25fd169a87e25a725db307754b80..11d9bf42d9ae0894a1aa7bdd4e4914b4ad656ba7 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -2,7 +2,7 @@ import path from "path";
 
 export default {
   // Fichier d'entrée :
-  entry: "./client/src/main.js",
+  entry: "./client/src/index.js",
   // Fichier de sortie :
   output: {
     path: path.resolve(process.cwd(), "./client/public/build"),