From fae1bf49e3b4de951e672900203b9f5a79d8e38a Mon Sep 17 00:00:00 2001 From: Alexander Popov Date: Sun, 4 Jul 2021 18:07:44 +0300 Subject: [PATCH] on cloud --- README.md | 3 +- config.json | 8 +++ favicon.ico | Bin 0 -> 15406 bytes game.js | 33 ++++++++++ gameData.json | 8 +++ icon.png | Bin 0 -> 9798 bytes index.html | 15 +++++ js/index.js | 153 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 6 +- styles.css | 20 ++++++ webpack.config.js | 11 ++++ 11 files changed, 255 insertions(+), 2 deletions(-) create mode 100644 config.json create mode 100644 favicon.ico create mode 100644 game.js create mode 100644 gameData.json create mode 100644 icon.png create mode 100644 index.html create mode 100644 js/index.js create mode 100644 styles.css create mode 100644 webpack.config.js diff --git a/README.md b/README.md index c97e53e..5e0820a 100644 --- a/README.md +++ b/README.md @@ -1 +1,2 @@ -# quizEngine \ No newline at end of file +# quizEngine +![Logo](icon.png) diff --git a/config.json b/config.json new file mode 100644 index 0000000..7841c41 --- /dev/null +++ b/config.json @@ -0,0 +1,8 @@ +{ + "gameName": "quizEngine", + "gameVersion": [0, 0, 1], + + "scene": { + "backGradient": ["#2f80ff", "#3ccbff"] + } +} diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a5a09963a7daa99467651bf25ca626a146472ac4 GIT binary patch literal 15406 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 Q|9++tviLvFJ5vJx1FnY+jQ{`u literal 0 HcmV?d00001 diff --git a/game.js b/game.js new file mode 100644 index 0000000..172b023 --- /dev/null +++ b/game.js @@ -0,0 +1,33 @@ +/* + * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "./src/js/index.js": +/*!*************************!*\ + !*** ./src/js/index.js ***! + \*************************/ +/***/ (() => { + +eval("\n\nlet DEBUG = true;\nlet canvas;\nlet context;\nlet cW;\nlet cH;\n\nlet dragging = false;\n\nfunction mMove(e) {\n if (dragging) {\n point.pX = e.offsetX * cW / canvas.clientWidth | 0;\n point.pY = e.offsetY * cH / canvas.clientHeight | 0;\n };\n}\n\nfunction mDown(e) {\n dragging = true;\n}\n\nfunction mUp(e) {\n dragging = false;\n}\n\nfunction clearContext() {\n context.fillStyle = '#b27e56';\n context.fillRect(0, 0, cW, cH);\n}\n\n// Init\nwindow.onload = function() {\n canvas = document.getElementById('game');\n context = canvas.getContext('2d');\n cW = canvas.width;\n cH = canvas.height;\n\n window.requestAnimationFrame(gameLoop);\n};\n\n// GameLoop\nfunction gameLoop(timeStamp) {\n update();\n draw();\n\n window.requestAnimationFrame(gameLoop);\n}\n\nfunction update() {\n\n}\n\nfunction draw() {\n clearContext();\n}\n\n\n//# sourceURL=webpack://quizEngine/./src/js/index.js?"); + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module can't be inlined because the eval devtool is used. +/******/ var __webpack_exports__ = {}; +/******/ __webpack_modules__["./src/js/index.js"](); +/******/ +/******/ })() +; \ No newline at end of file diff --git a/gameData.json b/gameData.json new file mode 100644 index 0000000..bc40a5e --- /dev/null +++ b/gameData.json @@ -0,0 +1,8 @@ +[ + { + "question": "Что это такое?", + "image": "image.png", + "answer": [ "Мост", "Рудник", "Река", "Солнце" ], + "rightAnser": "мост" + } +] diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cc145054246b8e056a94590484783edbb1d44129 GIT binary patch literal 9798 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 Tilo4N7@oSyYvn4C`RD%winevI literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..27043c1 --- /dev/null +++ b/index.html @@ -0,0 +1,15 @@ + + + + + quizEngine + + + +
+ +
+ + + + diff --git a/js/index.js b/js/index.js new file mode 100644 index 0000000..eb8c806 --- /dev/null +++ b/js/index.js @@ -0,0 +1,153 @@ +'use strict'; + +import config from '../config.json'; +import gameData from '../gameData.json'; + +let DEBUG = true; +let canvas; +let context; +let cW; +let cH; +let landscape = true; + +let button = null; + +let dragging = false; + +function mMove(e) { + if (dragging) { + point.pX = e.offsetX * cW / canvas.clientWidth | 0; + point.pY = e.offsetY * cH / canvas.clientHeight | 0; + }; +} + +function mDown(e) { + dragging = true; +} + +function mUp(e) { + dragging = false; +} + +function clearContext() { + let graBack = context.createLinearGradient(cW / 2, 0, cW / 2, cH); + graBack.addColorStop(0, config.scene.backGradient[0]); + graBack.addColorStop(1, config.scene.backGradient[1]); + context.fillStyle = graBack; + context.fillRect(0, 0, cW, cH); +} + +// Init +window.onload = function() { + canvas = document.getElementById('game'); + context = canvas.getContext('2d'); + cW = canvas.width; + cH = canvas.height; + + if (cW >= cH) { + landscape = true; + } + else { + landscape = false; + } + + button = { + info: { x: 10, y: cH - 80, w: 70, h: 70 }, + sfx: { x: cW - 80, y: cH - 80, w: 70, h: 70 }, + } + + window.requestAnimationFrame(gameLoop); +}; + +// GameLoop +function gameLoop(timeStamp) { + update(); + draw(); + + window.requestAnimationFrame(gameLoop); +} + +function update() { +} + +function draw() { + clearContext(); + + // draw image ------------------------------------------ + // let imageSize = { w: 320, h: 140 }; + // let graImage = context.createLinearGradient(cW / 2 - imageSize.w / 2, cH / 2 - imageSize.h / 2, cW / 2 - imageSize.w / 2 + imageSize.w, cH / 2 - imageSize.h / 2 + imageSize.h); + // graImage.addColorStop(0, "#ff4ba7"); + // graImage.addColorStop(1, "#ffda64"); + // context.fillStyle = graImage; + // context.fillRect(cW / 2 - imageSize.w / 2, cH / 2 - imageSize.h / 2, + // imageSize.w, imageSize.h); + + // draw quest ------------------------------------------ + context.font = "32px Ubuntu"; + context.textAlign = "center"; + context.fillStyle = "white"; + context.fillText(gameData[0].question, cW / 2, cH - 420); + + // draw buttons ------------------------------------------ + let graButton = context.createLinearGradient(0, 0, cW / 2, cH / 2); + graButton.addColorStop(0, "#3fff7c"); + graButton.addColorStop(1, "#3ffbe0"); + context.fillStyle = graButton; + + function centerW(size) { + return cW / 2 - size / 2; + } + function centerH(size) { + return cH / 2 - size / 2; + } + + context.fillRect(centerW(cW / 1.5), cH - 380, cW / 1.5, 50); + context.fillRect(centerW(cW / 1.5), cH - 320, cW / 1.5, 50); + context.fillRect(centerW(cW / 1.5), cH - 260, cW / 1.5, 50); + context.fillRect(centerW(cW / 1.5), cH - 200, cW / 1.5, 50); + + context.strokeStyle = "navy"; + context.lineWidth = 2; + + context.strokeRect(centerW(cW / 1.5), cH - 380, cW / 1.5, 50); + context.strokeRect(centerW(cW / 1.5), cH - 320, cW / 1.5, 50); + context.strokeRect(centerW(cW / 1.5), cH - 260, cW / 1.5, 50); + context.strokeRect(centerW(cW / 1.5), cH - 200, cW / 1.5, 50); + + context.font = "32px Ubuntu"; + context.textAlign = "center"; + context.fillStyle = "white"; + + for (let i = 0; i < 4; i++) { + switch(i) { + case 0: + context.fillText(gameData[0].answer[i], cW / 2, cH - 380 + 35); + break; + case 1: + context.fillText(gameData[0].answer[i], cW / 2, cH - 320 + 35); + break; + case 2: + context.fillText(gameData[0].answer[i], cW / 2, cH - 260 + 35); + break; + case 3: + context.fillText(gameData[0].answer[i], cW / 2, cH - 200 + 35); + break; + } + } + + + // UI ------------------------------------------ + context.fillStyle = "red"; + context.strokeStyle = "navy"; + context.lineWidth = 2; + context.fillRect(button.info.x, button.info.y, button.info.w, button.info.h); // info button + context.strokeRect(button.info.x, button.info.y, button.info.w, button.info.h); // info button + context.fillRect(button.sfx.x, button.sfx.y, button.sfx.w, button.sfx.h); // sfx button + context.strokeRect(button.sfx.x, button.sfx.y, button.sfx.w, button.sfx.h); // sfx button + + let q = 10; + + for (var i = 1; i <= q - 1; i++) { + q[i]; + } +} diff --git a/package.json b/package.json index 815b6ff..1b3c80b 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "description": "", "main": "index.js", "scripts": { + "build": "webpack", "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { @@ -18,6 +19,9 @@ }, "homepage": "https://github.com/emilecok/quizEngine#readme", "devDependencies": { - "docsify-cli": "^4.4.3" + "docsify-cli": "^4.4.3", + "webpack": "^5.42.0", + "webpack-cli": "^4.7.2", + "webpack-dev-server": "^3.11.2" } } diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..c51dbbe --- /dev/null +++ b/styles.css @@ -0,0 +1,20 @@ +html { height: 100%; } + +body { + background-color: #6E5967; + padding: 0; + margin: 0; + height: 100%; +} + +div.container { + display: flex; + height: 100%; + align-items: center; + justify-content: center; +} + +canvas#game { + margin: 0 auto; + display: block; +} diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..5a2f84f --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,11 @@ +const path = require('path'); + +module.exports = { + entry: './js/index.js', + mode: 'development', + output: { + // libraryExport: 'default', + path: path.resolve(__dirname, 'dist'), + filename: 'game.js', + }, +};