diff --git a/script.js b/script.js
index 3df1217..7dcd791 100644
--- a/script.js
+++ b/script.js
@@ -1,6 +1,120 @@
-console.log("hello script js");
-var inputHappened = function(currentInput){
- console.log( currentInput );
- return "WOW SOMETHING HAPPEND";
+let secretWordsStr = "cat,doggy,alphabet";
+let secretWordsArr = secretWordsStr.split(',');
+let SECRET_WORDS = secretWordsArr.map(word => word.split(''));
+
+let tableFlipCharacters = "(╯ರ ~ ರ)╯︵ ┻━┻".split(' ');
+let numGuessChancesLeft = tableFlipCharacters.length;
+let correctGuesses = [];
+let flippedCharacters = [];
+let gameBoard = [];
+let gameBoardStr = "";
+
+String.prototype.replaceAt=function(index, replacement) {
+ return this.substr(-1, index) + replacement+ this.substr(index + replacement.length);
+};
+const sanitizeInput = input => input.trim();
+const isGameOver = lifePoints => lifePoints === 0;
+const isUserWon = (guessedWords, secretWords) => correctGuesses.length === secretWords.flat()
+ .reduce((totalLength, word) => totalLength = totalLength + word.length, 0);
+const getCurrentGuessChar = userGuess => userGuess.charAt(userGuess.length - 1);
+const madeCorrectGuess = (userGuess, secretWords) => secretWords.some(word => word.includes(userGuess));
+/* === long version ===
+* function makeCorrectGuess (userGuess, secretWords) {
+* for (let i = 0; i < secretWords.length; i++ ) {
+* let word = secretWords[i]
+* for (let j = 0; j < word.length; j++) {
+* let letter = word[j];
+* if (userGuess === letter) return true
+* }
+* }
+* */
+const isWrongGuess = (userGuess, secretWords) => !madeCorrectGuess(userGuess, secretWords);
+// displays letter place holders at start of game
+const formatGameBoard = gameBoard => gameBoard.join("
");
+const replaceBrByNewLine = gameBoardStr => gameBoardStr.replace(/
/g,"\n");
+const initGameBoard = secretWordsArr => {
+ gameBoard = secretWordsArr.map(word => "_".repeat(word.length) );
+ gameBoardStr = formatGameBoard(gameBoard);
+ document.querySelector('#output').innerHTML= gameBoardStr;
+};
+const isAdminMode = input => input === "admin";
+const isEndAdminMode = input=> input === "endadmin";
+
+const updateOutput = (outputStr => document.getElementById('output').textContent = outputStr);
+const resetInputBox = () => document.getElementById('input').value="";
+
+/* update gamebaord to replace correct guesses with the right letter */
+const updateGameBoard = userGuess => {
+ let wordIndex = null;
+ let letterIndex = null;
+
+ for (let i = 0; i < secretWordsArr.length; i++) {
+ let word = secretWordsArr[i];
+ if (word.indexOf(userGuess)!==-1) {
+ wordIndex = i;
+ letterIndex = word.indexOf(userGuess) ;
+ }
+ }
+ if (wordIndex!==null && letterIndex !== null) {
+ gameBoard[wordIndex][letterIndex] = userGuess;
+ }
+
+ let pieceToReplace = gameBoard[wordIndex];
+ gameBoard[wordIndex] = pieceToReplace.replaceAt(letterIndex, userGuess);
+ gameBoardStr = formatGameBoard(gameBoard);
+ gameBoardStr = replaceBrByNewLine(gameBoardStr);
+};
+
+
+initGameBoard(secretWordsArr);
+
+const updateSecretWords= userInput => {
+ secretWordsArr.concat(',', userInput);
+ secretWordsArr = secretWordsStr.split(',');
+ SECRET_WORDS = secretWordsArr.map(word => word.split(''));
};
+
+const inputHappened = function (currentInput) {
+ // assumptions:
+ // - user types one letter at a time | guess character is always last letter of input
+ // - user does not press backspace key to delete a typed character
+ // - letters in secret word do not repeat
+ let userInput = sanitizeInput(currentInput);
+
+ if (isAdminMode(userInput)) {
+ while(!isEndAdminMode(userInput)) {
+ updateSecretWords(userInput);
+ userInput = "";
+ updateOutput(`Admin Mode:\\n
+ Your current secret words: ${secretWordsArr}\\n
+ You have added new word: ${userInput}\\n\``);
+ resetInputBox();
+ }
+ }else {
+ return `Admin Mode:\n
+ Your current secret words: ${secretWordsArr}\n
+ You have added new word: ${userInput}\n`;
+ }
+
+ let userGuess = getCurrentGuessChar(userInput);
+ if (isGameOver(numGuessChancesLeft)) return "Game Over!\n" + gameBoardStr;
+ if (isUserWon(correctGuesses, SECRET_WORDS)) return "You Won!\n" + gameBoardStr;
+
+ if (madeCorrectGuess(userGuess, SECRET_WORDS)) {
+ correctGuesses.push(userGuess);
+ updateGameBoard(userGuess);
+ return `You made a correct guess\n ${flippedCharacters.join('')} \n ${gameBoardStr}`;
+ }
+
+ if (isWrongGuess(userGuess, SECRET_WORDS)) {
+ flippedCharacters.push(tableFlipCharacters.pop());
+ numGuessChancesLeft--;
+ updateGameBoard(userGuess);
+ return `You made a wrong guess. \n ${flippedCharacters.join('')} \n ${gameBoardStr}`;
+ }
+};
+
+
+
+