diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9d91594..abd2cda 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
+## Legend
+- 🐛 - Bug
+- ✔️ - Fixed
+- ❌ - Removed
+- ➕ - Added
+- ℹ️ - Information
+- ♻️ - Edited
+
## 2.0.3 # Build 3 [Development]
--
+- ➕ - Show hidden word by Lose
## 2.0.2 # Build 2 [2021-02-25]
- ➕ - Added game statistics
@@ -13,11 +21,3 @@
## 2.0.0 [2021-02-25]
Init version
-
-## Legend
-- 🐛 - Bug
-- ✔️ - Fixed
-- ❌ - Removed
-- ➕ - Added
-- ℹ️ - Information
-- ♻️ - Edited
diff --git a/TODO.md b/TODO.md
index f3569c3..508cc0a 100644
--- a/TODO.md
+++ b/TODO.md
@@ -1,8 +1,8 @@
[ ] Loading page
[ ] Localization
[ ] Fix GAME tab for not refresh page
-[ ] Show word if lose
[ ] Android manifest
+[+] Show word if lose
[+] Keyboard fit
[+] Game Statistics
[+] Restart scene
diff --git a/docs/game.js b/docs/game.js
index cee50d2..0dc52c9 100644
--- a/docs/game.js
+++ b/docs/game.js
@@ -1 +1 @@
-"use strict";const pageCredits='\t
Font F5.6 by\t\tDOT COLON \t
\t\tUI by\t\tchota.css \t
';"use strict";const pageStatistics='\t\t\tUser statistics \t\t\t\t\t\t\t\t\tName \t\t\t\tValue \t\t\t \t\t \t\t\t\t\t\t\t\t\tTotal games \t\t\t\t... \t\t\t \t\t\t\t\t\t\tGuess words \t\t\t\t... \t\t\t \t\t\t\t\t\t\t% Win \t\t\t\t... \t\t\t \t\t\t\t\t\t\tTotal letters clicked \t\t\t\t... \t\t\t \t\t\t\t\t\t\tCorrectly guessed letters \t\t\t\t... \t\t\t \t\t\t\t\t\t\t% correctly letters \t\t\t\t... \t\t\t \t\t \t
\t\t\tClear statistics \t
';function updateStatsPage(){let stTotalGames=localStorage.getItem("stTotalGames");let stWinWords=localStorage.getItem("stWinWords");let stWinPercentage=localStorage.getItem("stWinPercentage");let stLetterClick=localStorage.getItem("stLetterClick");let stCorrLetter=localStorage.getItem("stCorrLetter");let stWinLetterPercent=localStorage.getItem("stWinLetterPercent");document.querySelector("#stTotalGames").innerHTML=stTotalGames;document.querySelector("#stWinWords").innerHTML=stWinWords;document.querySelector("#stWinPercentage").innerHTML=Math.round(stWinWords/stTotalGames*100);document.querySelector("#stLetterClick").innerHTML=stLetterClick;document.querySelector("#stCorrLetter").innerHTML=stCorrLetter;document.querySelector("#stWinLetterPercent").innerHTML=Math.round(stCorrLetter/stLetterClick*100)}"use strict";function updateStats(statParameter){let stTotalGames=JSON.parse(localStorage.getItem("stTotalGames"));let stWinWords=JSON.parse(localStorage.getItem("stWinWords"));let stLetterClick=JSON.parse(localStorage.getItem("stLetterClick"));let stCorrLetter=JSON.parse(localStorage.getItem("stCorrLetter"));switch(statParameter){case"stTotalGames":localStorage.setItem("stTotalGames",stTotalGames+1);break;case"stWinWords":localStorage.setItem("stTotalGames",stTotalGames+1);localStorage.setItem("stWinWords",stWinWords+1);break;case"stLetterClick":localStorage.setItem("stLetterClick",stLetterClick+1);break;case"stCorrLetter":localStorage.setItem("stLetterClick",stLetterClick+1);localStorage.setItem("stCorrLetter",stCorrLetter+1);break;case"stCheck":if(stTotalGames==null){localStorage.setItem("stTotalGames",0)}if(stWinWords==null){localStorage.setItem("stWinWords",0)}if(stLetterClick==null){localStorage.setItem("stLetterClick",0)}if(stCorrLetter==null){localStorage.setItem("stCorrLetter",0)}break}}"use strict";const keyboardLayouts={usQwertyKeyboard:"abcdefghijklmnopqrstuvwxyz".toUpperCase(),ruQwertyKeyboard:"йцукеёнгшщзхъфывапролджэячсмитьбю".toUpperCase()};const words=["google","speed","design","forest","forever","love","horizon","defect"];let gameWord=words[Math.floor(Math.random()*words.length)].toUpperCase();let gameAnswered=new Array(gameWord.length+1).join("-");let lives=6;function generateKeyboard(layout){let keyboardHtmlStr="";layout.split("").forEach(function(letter){keyboardHtmlStr=keyboardHtmlStr+' "+letter+" "});let keyboard=document.querySelector("#keyboard");keyboard.classList.remove("is-hidden");document.querySelector("#keyboard").innerHTML=keyboardHtmlStr}function letterClick(letter){let charButton=document.getElementById(letter);charButton.disabled=true;let indices=[];let idx=gameWord.split("").indexOf(letter);if(idx==-1){wrongLetter();updateStats("stLetterClick");return}while(idx!=-1){indices.push(idx);idx=gameWord.split("").indexOf(letter,idx+1)}indices.forEach(function(item,indices){let wordArray=gameAnswered.split("");wordArray[item]=letter;gameAnswered=wordArray.join("");document.querySelector("#word").innerHTML=gameAnswered;updateStats("stCorrLetter")});if(gameAnswered.split("").indexOf("-")==-1){updateStats("stWinWords");document.querySelector("#keyboard").innerHTML='\t\t \t\tYour winner!! \t\tRestart game '}}function wrongLetter(){if(lives<=0){updateStats("stTotalGames");document.querySelector("#keyboard").innerHTML='\t\t \t\tYour lose!! \t\tRestart game '}lives-=1;document.querySelector("#lives").innerHTML="Lives "+lives}function showPage(element,pageName){["gameButton","statsButton","creditsButton"].forEach(function(item){document.querySelector("#"+item).classList.remove("active")});document.querySelector("#"+element.id).classList.add("active");document.querySelector("#content").innerHTML=pageName;if(pageName==pageStatistics){updateStatsPage()}}window.onload=function(){updateStats("stCheck");generateKeyboard(keyboardLayouts["usQwertyKeyboard"]);document.querySelector("#lives").innerHTML="Lives "+lives;console.log("Word:",gameWord.toLowerCase());document.querySelector("#word").innerHTML=gameAnswered;if(window.screen.availWidth<=599){document.querySelector("#lives").classList.remove("error");document.querySelector("#lives").classList.add("dark")}};
\ No newline at end of file
+"use strict";const pageCredits='\tFont F5.6 by\t\tDOT COLON \t
\t\tUI by\t\tchota.css \t
';"use strict";const pageStatistics='\t\t\tUser statistics \t\t\t\t\t\t\t\t\tName \t\t\t\tValue \t\t\t \t\t \t\t\t\t\t\t\t\t\tTotal games \t\t\t\t... \t\t\t \t\t\t\t\t\t\tGuess words \t\t\t\t... \t\t\t \t\t\t\t\t\t\t% Win \t\t\t\t... \t\t\t \t\t\t\t\t\t\tTotal letters clicked \t\t\t\t... \t\t\t \t\t\t\t\t\t\tCorrectly guessed letters \t\t\t\t... \t\t\t \t\t\t\t\t\t\t% correctly letters \t\t\t\t... \t\t\t \t\t \t
\t\t\tClear statistics \t
';function updateStatsPage(){let stTotalGames=localStorage.getItem("stTotalGames");let stWinWords=localStorage.getItem("stWinWords");let stWinPercentage=localStorage.getItem("stWinPercentage");let stLetterClick=localStorage.getItem("stLetterClick");let stCorrLetter=localStorage.getItem("stCorrLetter");let stWinLetterPercent=localStorage.getItem("stWinLetterPercent");document.querySelector("#stTotalGames").innerHTML=stTotalGames;document.querySelector("#stWinWords").innerHTML=stWinWords;document.querySelector("#stWinPercentage").innerHTML=Math.round(stWinWords/stTotalGames*100);document.querySelector("#stLetterClick").innerHTML=stLetterClick;document.querySelector("#stCorrLetter").innerHTML=stCorrLetter;document.querySelector("#stWinLetterPercent").innerHTML=Math.round(stCorrLetter/stLetterClick*100)}"use strict";function updateStats(statParameter){let stTotalGames=JSON.parse(localStorage.getItem("stTotalGames"));let stWinWords=JSON.parse(localStorage.getItem("stWinWords"));let stLetterClick=JSON.parse(localStorage.getItem("stLetterClick"));let stCorrLetter=JSON.parse(localStorage.getItem("stCorrLetter"));switch(statParameter){case"stTotalGames":localStorage.setItem("stTotalGames",stTotalGames+1);break;case"stWinWords":localStorage.setItem("stTotalGames",stTotalGames+1);localStorage.setItem("stWinWords",stWinWords+1);break;case"stLetterClick":localStorage.setItem("stLetterClick",stLetterClick+1);break;case"stCorrLetter":localStorage.setItem("stLetterClick",stLetterClick+1);localStorage.setItem("stCorrLetter",stCorrLetter+1);break;case"stCheck":if(stTotalGames==null){localStorage.setItem("stTotalGames",0)}if(stWinWords==null){localStorage.setItem("stWinWords",0)}if(stLetterClick==null){localStorage.setItem("stLetterClick",0)}if(stCorrLetter==null){localStorage.setItem("stCorrLetter",0)}break}}"use strict";const keyboardLayouts={usQwertyKeyboard:"abcdefghijklmnopqrstuvwxyz".toUpperCase(),ruQwertyKeyboard:"йцукеёнгшщзхъфывапролджэячсмитьбю".toUpperCase()};const words=["google","speed","design","forest","forever","love","horizon","defect"];let gameWord=words[Math.floor(Math.random()*words.length)].toUpperCase();let gameAnswered=new Array(gameWord.length+1).join("-");let lives=6;function generateKeyboard(layout){let keyboardHtmlStr="";layout.split("").forEach(function(letter){keyboardHtmlStr=keyboardHtmlStr+' "+letter+" "});let keyboard=document.querySelector("#keyboard");keyboard.classList.remove("is-hidden");document.querySelector("#keyboard").innerHTML=keyboardHtmlStr}function letterClick(letter){let charButton=document.getElementById(letter);charButton.disabled=true;let indices=[];let idx=gameWord.split("").indexOf(letter);if(idx==-1){wrongLetter();updateStats("stLetterClick");return}while(idx!=-1){indices.push(idx);idx=gameWord.split("").indexOf(letter,idx+1)}indices.forEach(function(item,indices){let wordArray=gameAnswered.split("");wordArray[item]=letter;gameAnswered=wordArray.join("");document.querySelector("#word").innerHTML=gameAnswered;updateStats("stCorrLetter")});if(gameAnswered.split("").indexOf("-")==-1){updateStats("stWinWords");document.querySelector("#keyboard").innerHTML='\t\t \t\tYour winner!! \t\tRestart game '}}function wrongLetter(){if(lives<=0){updateStats("stTotalGames");document.querySelector("#word").innerHTML=gameWord;document.querySelector("#word").classList.add("text-success");document.querySelector("#keyboard").innerHTML='\t\t \t\tYour lose!! \t\tRestart game '}lives-=1;document.querySelector("#lives").innerHTML="Lives "+lives}function showPage(element,pageName){["gameButton","statsButton","creditsButton"].forEach(function(item){document.querySelector("#"+item).classList.remove("active")});document.querySelector("#"+element.id).classList.add("active");document.querySelector("#content").innerHTML=pageName;if(pageName==pageStatistics){updateStatsPage()}}window.onload=function(){updateStats("stCheck");generateKeyboard(keyboardLayouts["usQwertyKeyboard"]);document.querySelector("#lives").innerHTML="Lives "+lives;console.log("Word:",gameWord.toLowerCase());document.querySelector("#word").innerHTML=gameAnswered;if(window.screen.availWidth<=599){document.querySelector("#lives").classList.remove("error");document.querySelector("#lives").classList.add("dark")}};
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
index 35b564d..63fc7b3 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -80,7 +80,7 @@
ver: 2.0.2
-
+
UV
PV
diff --git a/js/_statFunction.js b/js/_statFunction.js
index 80d6753..98e401d 100644
--- a/js/_statFunction.js
+++ b/js/_statFunction.js
@@ -1,38 +1,42 @@
-'use strict';
+"use strict";
-function updateStats(statParameter)
-{
- let stTotalGames = JSON.parse(localStorage.getItem('stTotalGames'));
- let stWinWords = JSON.parse(localStorage.getItem('stWinWords'));
- let stLetterClick = JSON.parse(localStorage.getItem('stLetterClick'));
- let stCorrLetter = JSON.parse(localStorage.getItem('stCorrLetter'));
+function updateStats(statParameter) {
+ let stTotalGames = JSON.parse(localStorage.getItem("stTotalGames"));
+ let stWinWords = JSON.parse(localStorage.getItem("stWinWords"));
+ let stLetterClick = JSON.parse(localStorage.getItem("stLetterClick"));
+ let stCorrLetter = JSON.parse(localStorage.getItem("stCorrLetter"));
+ switch (statParameter) {
+ case "stTotalGames":
+ localStorage.setItem("stTotalGames", stTotalGames + 1);
+ break;
- switch(statParameter)
- {
- case 'stTotalGames':
- localStorage.setItem('stTotalGames', stTotalGames + 1);
-
- break;
- case 'stWinWords':
- localStorage.setItem('stTotalGames', stTotalGames + 1);
- localStorage.setItem('stWinWords', stWinWords + 1);
-
- break;
- case 'stLetterClick':
- localStorage.setItem('stLetterClick', stLetterClick + 1);
-
- break;
- case 'stCorrLetter':
- localStorage.setItem('stLetterClick', stLetterClick + 1);
- localStorage.setItem('stCorrLetter', stCorrLetter + 1);
-
- break;
- case 'stCheck':
- if (stTotalGames == null) { localStorage.setItem('stTotalGames', 0); }
- if (stWinWords == null) { localStorage.setItem('stWinWords', 0); }
- if (stLetterClick == null) { localStorage.setItem('stLetterClick', 0); }
- if (stCorrLetter == null) { localStorage.setItem('stCorrLetter', 0); }
+ case "stWinWords":
+ localStorage.setItem("stTotalGames", stTotalGames + 1);
+ localStorage.setItem("stWinWords", stWinWords + 1);
+ break;
- break;
- }
-}
+ case "stLetterClick":
+ localStorage.setItem("stLetterClick", stLetterClick + 1);
+ break;
+
+ case "stCorrLetter":
+ localStorage.setItem("stLetterClick", stLetterClick + 1);
+ localStorage.setItem("stCorrLetter", stCorrLetter + 1);
+ break;
+
+ case "stCheck":
+ if (stTotalGames == null) {
+ localStorage.setItem("stTotalGames", 0);
+ }
+ if (stWinWords == null) {
+ localStorage.setItem("stWinWords", 0);
+ }
+ if (stLetterClick == null) {
+ localStorage.setItem("stLetterClick", 0);
+ }
+ if (stCorrLetter == null) {
+ localStorage.setItem("stCorrLetter", 0);
+ }
+ break;
+ }
+}
\ No newline at end of file
diff --git a/js/index.js b/js/index.js
index d69d71f..e695c54 100644
--- a/js/index.js
+++ b/js/index.js
@@ -1,129 +1,96 @@
-'use strict';
+"use strict";
// keyboard layouts
const keyboardLayouts = {
- 'usQwertyKeyboard' : 'abcdefghijklmnopqrstuvwxyz'.toUpperCase(),
- 'ruQwertyKeyboard' : 'йцукеёнгшщзхъфывапролджэячсмитьбю'.toUpperCase()
-}
+ usQwertyKeyboard: "abcdefghijklmnopqrstuvwxyz".toUpperCase(),
+ ruQwertyKeyboard: "йцукеёнгшщзхъфывапролджэячсмитьбю".toUpperCase()
+};
-const words = [
- 'google', 'speed', 'design', 'forest', 'forever', 'love',
- 'horizon', 'defect'
-];
+const words = [ "google", "speed", "design", "forest", "forever", "love", "horizon", "defect" ];
// game variables
let gameWord = words[Math.floor(Math.random() * words.length)].toUpperCase();
-let gameAnswered = new Array(gameWord.length + 1).join('-');
+
+let gameAnswered = new Array(gameWord.length + 1).join("-");
+
let lives = 6;
// init keyboard
-function generateKeyboard(layout)
-{
- let keyboardHtmlStr = '';
-
- layout.split('').forEach(function(letter)
- {
- keyboardHtmlStr = keyboardHtmlStr + ' ' + letter + ' ';
- })
-
- let keyboard = document.querySelector("#keyboard");
- keyboard.classList.remove('is-hidden');
- document.querySelector("#keyboard").innerHTML = keyboardHtmlStr;
+function generateKeyboard(layout) {
+ let keyboardHtmlStr = "";
+ layout.split("").forEach(function(letter) {
+ keyboardHtmlStr = keyboardHtmlStr + ' " + letter + " ";
+ });
+ let keyboard = document.querySelector("#keyboard");
+ keyboard.classList.remove("is-hidden");
+ document.querySelector("#keyboard").innerHTML = keyboardHtmlStr;
}
// letter click action
-function letterClick(letter)
-{
- let charButton = document.getElementById(letter);
- charButton.disabled = true;
-
- let indices = [];
- let idx = gameWord.split('').indexOf(letter)
-
- if (idx == -1)
- {
- wrongLetter();
-
- updateStats('stLetterClick');
- return;
- }
-
- while (idx != -1)
- {
- indices.push(idx);
- idx = gameWord.split('').indexOf(letter, idx + 1);
- }
-
- indices.forEach(function(item, indices)
- {
- let wordArray = gameAnswered.split('')
- wordArray[item] = letter;
- gameAnswered = wordArray.join('');
- document.querySelector("#word").innerHTML = gameAnswered;
-
- updateStats('stCorrLetter');
- })
-
- if (gameAnswered.split('').indexOf('-') == -1)
- {
- updateStats('stWinWords');
-
- document.querySelector('#keyboard').innerHTML = '\
- \
- Your winner!! \
- Restart game ';
- }
+function letterClick(letter) {
+ let charButton = document.getElementById(letter);
+ charButton.disabled = true;
+ let indices = [];
+ let idx = gameWord.split("").indexOf(letter);
+ if (idx == -1) {
+ wrongLetter();
+ updateStats("stLetterClick");
+ return;
+ }
+ while (idx != -1) {
+ indices.push(idx);
+ idx = gameWord.split("").indexOf(letter, idx + 1);
+ }
+ indices.forEach(function(item, indices) {
+ let wordArray = gameAnswered.split("");
+ wordArray[item] = letter;
+ gameAnswered = wordArray.join("");
+ document.querySelector("#word").innerHTML = gameAnswered;
+ updateStats("stCorrLetter");
+ });
+ if (gameAnswered.split("").indexOf("-") == -1) {
+ updateStats("stWinWords");
+ // display win scene
+ document.querySelector("#keyboard").innerHTML = '\t\t \t\tYour winner!! \t\tRestart game ';
+ }
}
// action by wrong letter
-function wrongLetter()
-{
- if (lives <= 0)
- {
- updateStats('stTotalGames');
-
- document.querySelector('#keyboard').innerHTML = '\
- \
- Your lose!! \
- Restart game ';
- }
-
- lives -= 1;
- document.querySelector("#lives").innerHTML = 'Lives ' + lives;
+function wrongLetter() {
+ if (lives <= 0) {
+ updateStats("stTotalGames");
+ // display hidden word
+ document.querySelector("#word").innerHTML = gameWord;
+ document.querySelector("#word").classList.add("text-success");
+ // display lose scene
+ document.querySelector("#keyboard").innerHTML = '\t\t \t\tYour lose!! \t\tRestart game ';
+ }
+ lives -= 1;
+ document.querySelector("#lives").innerHTML = "Lives " + lives;
}
// display tab content
-function showPage(element, pageName)
-{
- // alert(event.srcElement.id);
-
- ['gameButton', 'statsButton', 'creditsButton'].forEach(function(item)
- {
- document.querySelector("#" + item).classList.remove('active');
- });
- document.querySelector("#" + element.id).classList.add('active');
-
- document.querySelector("#content").innerHTML = pageName;
-
- if (pageName == pageStatistics) { updateStatsPage(); }
+function showPage(element, pageName) {
+ // alert(event.srcElement.id);
+ [ "gameButton", "statsButton", "creditsButton" ].forEach(function(item) {
+ document.querySelector("#" + item).classList.remove("active");
+ });
+ document.querySelector("#" + element.id).classList.add("active");
+ document.querySelector("#content").innerHTML = pageName;
+ if (pageName == pageStatistics) {
+ updateStatsPage();
+ }
}
// game init
-window.onload = function()
-{
- updateStats('stCheck');
-
- generateKeyboard(keyboardLayouts['usQwertyKeyboard']);
- document.querySelector('#lives').innerHTML = 'Lives ' + lives;
- console.log('Word:', gameWord.toLowerCase());
- document.querySelector('#word').innerHTML = gameAnswered;
-
- if (window.screen.availWidth <= 599)
- {
- document.querySelector('#lives').classList.remove('error');
- document.querySelector('#lives').classList.add('dark');
- }
-}
+window.onload = function() {
+ updateStats("stCheck");
+ generateKeyboard(keyboardLayouts["usQwertyKeyboard"]);
+ document.querySelector("#lives").innerHTML = "Lives " + lives;
+ console.log("Word:", gameWord.toLowerCase());
+ document.querySelector("#word").innerHTML = gameAnswered;
+ if (window.screen.availWidth <= 599) {
+ document.querySelector("#lives").classList.remove("error");
+ document.querySelector("#lives").classList.add("dark");
+ }
+};
\ No newline at end of file
diff --git a/package.json b/package.json
index 648d5e3..870cc1e 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,8 @@
},
"scripts": {
"build": "uglifyjs js/_* js/index.js -o docs/game.js",
- "server": "python3.7 -m http.server --directory ./docs/"
+ "server": "python3.7 -m http.server --directory ./docs/",
+ "beautify": "uglifyjs -b beautify,comments ${} -o ${}"
},
"devDependencies": {
"uglify-js": "^3.12.8"