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":"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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/./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">❮</a> + <a class="next">❯</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"),