From 40851aa50a8d8a698f28fe4a66d61681de23e8d2 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 18 Sep 2024 17:09:14 +0200 Subject: [PATCH] make build --- index.6910ad39.css | 2 ++ index.6910ad39.css.map | 1 + index.96ec0e35.js | 2 ++ index.96ec0e35.js.map | 1 + index.html | 1 + 5 files changed, 7 insertions(+) create mode 100644 index.6910ad39.css create mode 100644 index.6910ad39.css.map create mode 100644 index.96ec0e35.js create mode 100644 index.96ec0e35.js.map create mode 100644 index.html diff --git a/index.6910ad39.css b/index.6910ad39.css new file mode 100644 index 0000000..3cd0f3b --- /dev/null +++ b/index.6910ad39.css @@ -0,0 +1,2 @@ +body{background:#fbf8ef;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;min-height:100vh;margin:0;font-family:sans-serif;font-size:24px;font-weight:900;display:-ms-flexbox;display:flex}.field-cell{color:#776e65;box-sizing:border-box;text-align:center;vertical-align:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;background:#d6cdc4;border-radius:5px;width:75px;height:75px}.field-cell--2{background:#eee4da}.field-cell--4{background:#ede0c8}.field-cell--8{color:#f9f6f2;background:#f2b179}.field-cell--16{color:#f9f6f2;background:#f59563}.field-cell--32{color:#f9f6f2;background:#f67c5f}.field-cell--64{color:#f9f6f2;background:#f65e3b}.field-cell--128{color:#f9f6f2;background:#edcf72}.field-cell--256{color:#f9f6f2;background:#edcc61}.field-cell--512{color:#f9f6f2;background:#edc850}.field-cell--1024{color:#f9f6f2;background:#edc53f}.field-cell--2048{color:#f9f6f2;background:#edc22e}.game-field{border-spacing:10px;background:#bbada0;border-radius:5px}.game-header{box-sizing:border-box;-ms-flex-pack:justify;justify-content:space-between;width:100%;margin-bottom:24px;padding:10px;display:-ms-flexbox;display:flex}h1{color:#f9f6f2;box-sizing:border-box;background:#edc22e;border-radius:5px;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;width:75px;height:75px;margin:0;font-size:24px;display:-ms-flexbox;display:flex}.info{color:#776e65;box-sizing:border-box;background:#d6cdc4;border-radius:5px;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;width:75px;height:75px;margin:0 8px 0 0;font-size:16px;display:-ms-flexbox;display:flex}.controls{display:-ms-flexbox;display:flex}.button{cursor:pointer;color:#f9f6f2;border:none;border-radius:5px;width:75px;height:75px;font-family:sans-serif;font-size:16px;font-weight:700;transition:background .25s}.start{background:#1dae28;font-size:20px}.start:hover{background:#179921}.restart{background:#f1b2b2}.restart:hover{background:#f87474}.message{box-sizing:border-box;color:#776e65;text-align:center;background:#d6cdc4;border-radius:5px;width:100%;padding:10px;font-size:20px}.hidden{display:none}.container{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;width:350px;display:-ms-flexbox;display:flex}.message-win{color:#f9f6f2;background:#edc22e}.message-container{width:100%;height:150px} +/*# sourceMappingURL=index.6910ad39.css.map */ diff --git a/index.6910ad39.css.map b/index.6910ad39.css.map new file mode 100644 index 0000000..6e29f7d --- /dev/null +++ b/index.6910ad39.css.map @@ -0,0 +1 @@ +{"mappings":"ACAA,8NAYA,mNAWE,kCAIA,kCAIA,gDAKA,iDAKA,iDAKA,iDAKA,kDAKA,kDAKA,kDAKA,mDAKA,mDAMF,qEAMA,mKASA,iPAcA,4SAeA,2CAIA,2KAcA,yCAIE,gCAKF,4BAGE,kCAKF,2IAWA,qBAIA,iJAOA,8CAKA","sources":["index.6910ad39.css","src/styles/main.scss"],"sourcesContent":["body {\n background: #fbf8ef;\n justify-content: center;\n align-items: center;\n min-height: 100vh;\n margin: 0;\n font-family: sans-serif;\n font-size: 24px;\n font-weight: 900;\n display: -ms-flexbox;\n display: flex;\n}\n\n.field-cell {\n color: #776e65;\n box-sizing: border-box;\n text-align: center;\n vertical-align: center;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background: #d6cdc4;\n border-radius: 5px;\n width: 75px;\n height: 75px;\n}\n\n.field-cell--2 {\n background: #eee4da;\n}\n\n.field-cell--4 {\n background: #ede0c8;\n}\n\n.field-cell--8 {\n color: #f9f6f2;\n background: #f2b179;\n}\n\n.field-cell--16 {\n color: #f9f6f2;\n background: #f59563;\n}\n\n.field-cell--32 {\n color: #f9f6f2;\n background: #f67c5f;\n}\n\n.field-cell--64 {\n color: #f9f6f2;\n background: #f65e3b;\n}\n\n.field-cell--128 {\n color: #f9f6f2;\n background: #edcf72;\n}\n\n.field-cell--256 {\n color: #f9f6f2;\n background: #edcc61;\n}\n\n.field-cell--512 {\n color: #f9f6f2;\n background: #edc850;\n}\n\n.field-cell--1024 {\n color: #f9f6f2;\n background: #edc53f;\n}\n\n.field-cell--2048 {\n color: #f9f6f2;\n background: #edc22e;\n}\n\n.game-field {\n border-spacing: 10px;\n background: #bbada0;\n border-radius: 5px;\n}\n\n.game-header {\n box-sizing: border-box;\n justify-content: space-between;\n width: 100%;\n margin-bottom: 24px;\n padding: 10px;\n display: -ms-flexbox;\n display: flex;\n}\n\nh1 {\n color: #f9f6f2;\n box-sizing: border-box;\n background: #edc22e;\n border-radius: 5px;\n justify-content: center;\n align-items: center;\n width: 75px;\n height: 75px;\n margin: 0;\n font-size: 24px;\n display: -ms-flexbox;\n display: flex;\n}\n\n.info {\n color: #776e65;\n box-sizing: border-box;\n background: #d6cdc4;\n border-radius: 5px;\n -ms-flex-direction: column;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 75px;\n height: 75px;\n margin: 0 8px 0 0;\n font-size: 16px;\n display: -ms-flexbox;\n display: flex;\n}\n\n.controls {\n display: -ms-flexbox;\n display: flex;\n}\n\n.button {\n cursor: pointer;\n color: #f9f6f2;\n border: none;\n border-radius: 5px;\n width: 75px;\n height: 75px;\n font-family: sans-serif;\n font-size: 16px;\n font-weight: 700;\n transition: background .25s;\n}\n\n.start {\n background: #1dae28;\n font-size: 20px;\n}\n\n.start:hover {\n background: #179921;\n}\n\n.restart {\n background: #f1b2b2;\n}\n\n.restart:hover {\n background: #f87474;\n}\n\n.message {\n box-sizing: border-box;\n color: #776e65;\n text-align: center;\n background: #d6cdc4;\n border-radius: 5px;\n width: 100%;\n padding: 10px;\n font-size: 20px;\n}\n\n.hidden {\n display: none;\n}\n\n.container {\n -ms-flex-direction: column;\n flex-direction: column;\n align-items: center;\n width: 350px;\n display: -ms-flexbox;\n display: flex;\n}\n\n.message-win {\n color: #f9f6f2;\n background: #edc22e;\n}\n\n.message-container {\n width: 100%;\n height: 150px;\n}\n/*# sourceMappingURL=index.6910ad39.css.map */\n","body {\n margin: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #fbf8ef;\n font-family: sans-serif;\n min-height: 100vh;\n font-size: 24px;\n font-weight: 900;\n}\n\n.field-cell {\n background: #d6cdc4;\n width: 75px;\n height: 75px;\n border-radius: 5px;\n color: #776e65;\n box-sizing: border-box;\n text-align: center;\n vertical-align: center;\n user-select: none;\n\n &--2 {\n background: #eee4da;\n }\n\n &--4 {\n background: #ede0c8;\n }\n\n &--8 {\n background: #f2b179;\n color: #f9f6f2;\n }\n\n &--16 {\n background: #f59563;\n color: #f9f6f2;\n }\n\n &--32 {\n background: #f67c5f;\n color: #f9f6f2;\n }\n\n &--64 {\n background: #f65e3b;\n color: #f9f6f2;\n }\n\n &--128 {\n background: #edcf72;\n color: #f9f6f2;\n }\n\n &--256 {\n background: #edcc61;\n color: #f9f6f2;\n }\n\n &--512 {\n background: #edc850;\n color: #f9f6f2;\n }\n\n &--1024 {\n background: #edc53f;\n color: #f9f6f2;\n }\n\n &--2048 {\n background: #edc22e;\n color: #f9f6f2;\n }\n}\n\n.game-field {\n background: #bbada0;\n border-spacing: 10px;\n border-radius: 5px;\n}\n\n.game-header {\n display: flex;\n width: 100%;\n justify-content: space-between;\n margin-bottom: 24px;\n padding: 10px;\n box-sizing: border-box;\n}\n\nh1 {\n background: #edc22e;\n color: #f9f6f2;\n width: 75px;\n height: 75px;\n font-size: 24px;\n border-radius: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n margin: 0;\n}\n\n.info {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: #d6cdc4;\n width: 75px;\n height: 75px;\n border-radius: 5px;\n color: #776e65;\n box-sizing: border-box;\n font-size: 16px;\n margin: 0 8px 0 0;\n}\n\n.controls {\n display: flex;\n}\n\n.button {\n border: none;\n border-radius: 5px;\n cursor: pointer;\n color: #f9f6f2;\n font-family: sans-serif;\n font-weight: 700;\n font-size: 16px;\n width: 75px;\n height: 75px;\n\n transition: 0.25s ease background;\n}\n\n.start {\n background: #1dae28;\n font-size: 20px;\n\n &:hover {\n background: #179921;\n }\n}\n\n.restart {\n background: #f1b2b2;\n\n &:hover {\n background: #f87474;\n }\n}\n\n.message {\n box-sizing: border-box;\n width: 100%;\n background: #d6cdc4;\n color: #776e65;\n padding: 10px;\n text-align: center;\n border-radius: 5px;\n font-size: 20px;\n}\n\n.hidden {\n display: none;\n}\n\n.container {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 350px;\n}\n\n.message-win {\n background: #edc22e;\n color: #f9f6f2;\n}\n\n.message-container {\n width: 100%;\n height: 150px;\n}\n"],"names":[],"version":3,"file":"index.6910ad39.css.map"} \ No newline at end of file diff --git a/index.96ec0e35.js b/index.96ec0e35.js new file mode 100644 index 0000000..bc71778 --- /dev/null +++ b/index.96ec0e35.js @@ -0,0 +1,2 @@ +var r,e=document.querySelector("tbody"),t=document.querySelector(".button"),n=document.querySelector(".game-score"),a=document.querySelector(".message-start"),o=document.querySelector(".message-win"),s=document.querySelector(".message-lose"),i=0;function c(){for(var e=0;e<4;e++)if(r[e].includes(0))return!0;return!1}function f(){for(;c();){var e=Math.floor(4*Math.random()),t=Math.floor(4*Math.random());if(0===r[e][t]){var n=.9>Math.random()?2:4;r[e][t]=n;break}}u()}function u(){for(var n=0;n<4;n++)for(var a=0;a<4;a++){var i=e.rows[n].cells[a],f=r[n][a];i.innerText="",i.classList.value="",i.classList.add("field-cell"),f>0&&(i.innerText=f,i.classList.add("field-cell--".concat(f))),2048===f&&(o.classList.remove("hidden"),t.classList.replace("restart","start"))}(function(){if(c())return!1;for(var e=0;e<4;e++)for(var t=0;t<4;t++)if(r[e][t]===r[e][t+1])return!1;for(var n=0;n<3;n++)for(var a=0;a<4;a++)if(r[n][a]===r[n+1][a])return!1;return!0})()&&s.classList.remove("hidden")}function d(r){return r.filter(function(r){return 0!==r})}function l(r){for(var e=d(r),t=0;t","src/scripts/main.js"],"sourcesContent":["\"use strict\";\n// write your code here\nvar fieldOfGame = document.querySelector(\"tbody\");\nvar button = document.querySelector(\".button\");\nvar gameScore = document.querySelector(\".game-score\");\nvar messageStart = document.querySelector(\".message-start\");\nvar messageWin = document.querySelector(\".message-win\");\nvar messageLose = document.querySelector(\".message-lose\");\nvar rowsOfCells = 4;\nvar board;\nvar points = 0;\nbutton.addEventListener(\"click\", function() {\n button.classList.replace(\"start\", \"restart\");\n button.innerText = \"Restart\";\n messageStart.classList.add(\"hidden\");\n messageWin.classList.add(\"hidden\");\n messageLose.classList.add(\"hidden\");\n startGame();\n});\nfunction startGame() {\n board = [\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ],\n [\n 0,\n 0,\n 0,\n 0\n ]\n ];\n points = 0;\n gameScore.innerText = points;\n placeBlocks();\n placeBlocks();\n}\nfunction emptyBlock() {\n for(var i = 0; i < rowsOfCells; i++){\n if (board[i].includes(0)) return true;\n }\n return false;\n}\nfunction placeBlocks() {\n while(emptyBlock()){\n var randomRow = Math.floor(Math.random() * rowsOfCells);\n var randomCol = Math.floor(Math.random() * rowsOfCells);\n if (board[randomRow][randomCol] === 0) {\n var number = Math.random() < 0.9 ? 2 : 4;\n board[randomRow][randomCol] = number;\n break;\n }\n }\n setCells();\n}\nfunction loseGame() {\n if (emptyBlock()) return false;\n for(var r = 0; r < rowsOfCells; r++)for(var c = 0; c < rowsOfCells; c++){\n if (board[r][c] === board[r][c + 1]) return false;\n }\n for(var r1 = 0; r1 < rowsOfCells - 1; r1++)for(var c1 = 0; c1 < rowsOfCells; c1++){\n if (board[r1][c1] === board[r1 + 1][c1]) return false;\n }\n return true;\n}\nfunction setCells() {\n for(var r = 0; r < rowsOfCells; r++)for(var c = 0; c < rowsOfCells; c++){\n var currentCell = fieldOfGame.rows[r].cells[c];\n var num = board[r][c];\n currentCell.innerText = \"\";\n currentCell.classList.value = \"\";\n currentCell.classList.add(\"field-cell\");\n if (num > 0) {\n currentCell.innerText = num;\n currentCell.classList.add(\"field-cell--\".concat(num));\n }\n if (num === 2048) {\n messageWin.classList.remove(\"hidden\");\n button.classList.replace(\"restart\", \"start\");\n }\n }\n if (loseGame()) messageLose.classList.remove(\"hidden\");\n}\nfunction removeEmptyBlocks(row) {\n return row.filter(function(num) {\n return num !== 0;\n });\n}\nfunction move(row) {\n var newRow = removeEmptyBlocks(row);\n for(var i = 0; i < newRow.length - 1; i++)if (newRow[i] === newRow[i + 1]) {\n newRow[i] *= 2;\n newRow[i + 1] = 0;\n points += newRow[i];\n gameScore.innerText = points;\n }\n newRow = removeEmptyBlocks(newRow);\n while(newRow.length < rowsOfCells)newRow.push(0);\n return newRow;\n}\nfunction moveLeft() {\n for(var r = 0; r < rowsOfCells; r++){\n var row = board[r];\n row = move(row);\n board[r] = row;\n }\n}\nfunction moveRight() {\n for(var r = 0; r < rowsOfCells; r++){\n var row = board[r].reverse();\n row = move(row).reverse();\n board[r] = row;\n }\n}\nfunction moveUp() {\n for(var c = 0; c < rowsOfCells; c++){\n var column = [\n board[0][c],\n board[1][c],\n board[2][c],\n board[3][c]\n ];\n column = move(column);\n for(var r = 0; r < rowsOfCells; r++)board[r][c] = column[r];\n }\n}\nfunction moveDown() {\n for(var c = 0; c < rowsOfCells; c++){\n var column = [\n board[0][c],\n board[1][c],\n board[2][c],\n board[3][c]\n ].reverse();\n column = move(column).reverse();\n for(var r = 0; r < rowsOfCells; r++)board[r][c] = column[r];\n }\n}\nfunction saveBoardState() {\n return JSON.parse(JSON.stringify(board));\n}\nfunction isBoardStateChanged(originalBoard, newBoard) {\n return JSON.stringify(originalBoard) !== JSON.stringify(newBoard);\n}\ndocument.addEventListener(\"keyup\", function(e) {\n e.preventDefault();\n var originalBoard = saveBoardState();\n switch(e.code){\n case \"ArrowLeft\":\n moveLeft();\n break;\n case \"ArrowRight\":\n moveRight();\n break;\n case \"ArrowUp\":\n moveUp();\n break;\n case \"ArrowDown\":\n moveDown();\n break;\n }\n if (isBoardStateChanged(originalBoard, board)) {\n placeBlocks();\n setCells();\n }\n});\n\n//# sourceMappingURL=index.96ec0e35.js.map\n","'use strict';\n\n// write your code here\nconst fieldOfGame = document.querySelector('tbody');\nconst button = document.querySelector('.button');\nconst gameScore = document.querySelector('.game-score');\nconst messageStart = document.querySelector('.message-start');\nconst messageWin = document.querySelector('.message-win');\nconst messageLose = document.querySelector('.message-lose');\n\nconst rowsOfCells = 4;\nlet board;\nlet points = 0;\n\nbutton.addEventListener('click', () => {\n button.classList.replace('start', 'restart');\n button.innerText = 'Restart';\n messageStart.classList.add('hidden');\n messageWin.classList.add('hidden');\n messageLose.classList.add('hidden');\n\n startGame();\n});\n\nfunction startGame() {\n board = [\n [0, 0, 0, 0],\n [0, 0, 0, 0],\n [0, 0, 0, 0],\n [0, 0, 0, 0],\n ];\n\n points = 0;\n gameScore.innerText = points;\n\n placeBlocks();\n placeBlocks();\n}\n\nfunction emptyBlock() {\n for (let i = 0; i < rowsOfCells; i++) {\n if (board[i].includes(0)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction placeBlocks() {\n while (emptyBlock()) {\n const randomRow = Math.floor((Math.random() * rowsOfCells));\n const randomCol = Math.floor((Math.random() * rowsOfCells));\n\n if (board[randomRow][randomCol] === 0) {\n const number = Math.random() < 0.9 ? 2 : 4;\n\n board[randomRow][randomCol] = number;\n break;\n }\n }\n\n setCells();\n}\n\nfunction loseGame() {\n if (emptyBlock()) {\n return false;\n }\n\n for (let r = 0; r < rowsOfCells; r++) {\n for (let c = 0; c < rowsOfCells; c++) {\n if (board[r][c] === board[r][c + 1]) {\n return false;\n }\n }\n }\n\n for (let r = 0; r < rowsOfCells - 1; r++) {\n for (let c = 0; c < rowsOfCells; c++) {\n if (board[r][c] === board[r + 1][c]) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction setCells() {\n for (let r = 0; r < rowsOfCells; r++) {\n for (let c = 0; c < rowsOfCells; c++) {\n const currentCell = fieldOfGame.rows[r].cells[c];\n const num = board[r][c];\n\n currentCell.innerText = '';\n currentCell.classList.value = '';\n currentCell.classList.add('field-cell');\n\n if (num > 0) {\n currentCell.innerText = num;\n currentCell.classList.add(`field-cell--${num}`);\n }\n\n if (num === 2048) {\n messageWin.classList.remove('hidden');\n button.classList.replace('restart', 'start');\n }\n }\n }\n\n if (loseGame()) {\n messageLose.classList.remove('hidden');\n }\n}\n\nfunction removeEmptyBlocks(row) {\n return row.filter(num => num !== 0);\n}\n\nfunction move(row) {\n let newRow = removeEmptyBlocks(row);\n\n for (let i = 0; i < newRow.length - 1; i++) {\n if (newRow[i] === newRow[i + 1]) {\n newRow[i] *= 2;\n newRow[i + 1] = 0;\n points += newRow[i];\n\n gameScore.innerText = points;\n }\n }\n\n newRow = removeEmptyBlocks(newRow);\n\n while (newRow.length < rowsOfCells) {\n newRow.push(0);\n }\n\n return newRow;\n}\n\nfunction moveLeft() {\n for (let r = 0; r < rowsOfCells; r++) {\n let row = board[r];\n\n row = move(row);\n board[r] = row;\n }\n}\n\nfunction moveRight() {\n for (let r = 0; r < rowsOfCells; r++) {\n let row = board[r].reverse();\n\n row = move(row).reverse();\n board[r] = row;\n }\n}\n\nfunction moveUp() {\n for (let c = 0; c < rowsOfCells; c++) {\n let column = [board[0][c], board[1][c], board[2][c], board[3][c]];\n\n column = move(column);\n\n for (let r = 0; r < rowsOfCells; r++) {\n board[r][c] = column[r];\n }\n }\n}\n\nfunction moveDown() {\n for (let c = 0; c < rowsOfCells; c++) {\n let column = [board[0][c], board[1][c], board[2][c], board[3][c]].reverse();\n\n column = move(column).reverse();\n\n for (let r = 0; r < rowsOfCells; r++) {\n board[r][c] = column[r];\n }\n }\n}\n\nfunction saveBoardState() {\n return JSON.parse(JSON.stringify(board));\n}\n\nfunction isBoardStateChanged(originalBoard, newBoard) {\n return JSON.stringify(originalBoard) !== JSON.stringify(newBoard);\n}\n\ndocument.addEventListener('keyup', (e) => {\n e.preventDefault();\n\n const originalBoard = saveBoardState();\n\n switch (e.code) {\n case 'ArrowLeft':\n moveLeft();\n break;\n\n case 'ArrowRight':\n moveRight();\n break;\n\n case 'ArrowUp':\n moveUp();\n break;\n\n case 'ArrowDown':\n moveDown();\n break;\n }\n\n if (isBoardStateChanged(originalBoard, board)) {\n placeBlocks();\n setCells();\n }\n});\n"],"names":["board","fieldOfGame","document","querySelector","button","gameScore","messageStart","messageWin","messageLose","points","emptyBlock","i","includes","placeBlocks","randomRow","Math","floor","random","randomCol","number","setCells","r","c","currentCell","rows","cells","num","innerText","classList","value","add","concat","remove","replace","loseGame","r1","rowsOfCells","c1","removeEmptyBlocks","row","filter","move","newRow","length","push","addEventListener","e","preventDefault","newBoard","originalBoard","JSON","parse","stringify","code","moveLeft","moveRight","reverse","moveUp","column","moveDown"],"version":3,"file":"index.96ec0e35.js.map"} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..fd47235 --- /dev/null +++ b/index.html @@ -0,0 +1 @@ +2048

2048

Score: 0

Press "Start" to begin game. Good luck!

\ No newline at end of file