diff --git a/script.js b/script.js index bbe8a293..9caa3836 100644 --- a/script.js +++ b/script.js @@ -1,4 +1,162 @@ +// Global Variables +var GAME_STATE_DICE_ROLL = "GAME_STATE_DICE_ROLL"; +var GAME_STATE_CHOOSE_DICE_ORDER = "GAME_STATE_CHOOSE_DICE_ORDER"; +var GAME_STATE_COMPARE_SCORES = "GAME_STATE_COMPARE_SCORES"; +var gameState = GAME_STATE_DICE_ROLL; + +var currentPlayerRolls = []; + +var currentPlayer = 1; +var allPlayersScore = []; + +// Helper Function +var rollDice = function () { + console.log("Control flow: start of rollDice()"); + // Random decimal between 0 and 6 + var randomDecimal = Math.random() * 6; + // Random integer from 1 to 6 + var randomInteger = Math.floor(randomDecimal) + 1; + + console.log("rollDice output, randomInteger: ", randomInteger); + return randomInteger; +}; + +var rollDiceForPlayer = function () { + console.log("Control flow: start of rollDiceForPlayer()"); + var counter = 0; + while (counter < 2) { + currentPlayerRolls.push(rollDice()); + counter = counter + 1; + } + + console.log( + "rollDiceForPlayer changes, currentPlayerRolls: ", + currentPlayerRolls + ); + return ( + "Welcome, Player " + + currentPlayer + + "

You rolled:
Dice 1: " + + currentPlayerRolls[0] + + " | Dice 2: " + + currentPlayerRolls[1] + + ".

Now, please input either '1' or '2' to choose the corresponding dice to be used as the first digit of your final value." + ); +}; + +var getPlayerScore = function (playerInput) { + var playerScore; + // input validation + if (playerInput != 1 && playerInput != 2) { + console.log( + "Control flow: input validation, invalid inout... NOT 1 AND NOT 2" + ); + return ( + "Error! Please only input '1' or '' to choose which dice to use as the first digit.

Your dice rolls are:
Dice 1: " + + currentPlayerRolls[0] + + " | Dice 2: " + + currentPlayerRolls[1] + + "." + ); + } + // input == 1 + if (playerInput == 1) { + console.log("Control flow: input == 1"); + playerScore = Number( + String(currentPlayerRolls[0]) + String(currentPlayerRolls[1]) + ); + } + // input == 2 + else if (playerInput == 2) { + console.log("Control flow: input == 2"); + playerScore = Number( + String(currentPlayerRolls[1]) + String(currentPlayerRolls[0]) + ); + } + // Store playerScore in array + allPlayersScore.push(playerScore); + + // clear current player rolls array + currentPlayerRolls = []; + return "Player" + currentPlayer + ", your chosen value is: " + playerScore; +}; + +var comparePlayerScore = function () { + var compareMessage = + "Player 1 score: " + + allPlayersScore[0] + + "
Player 2 score: " + + allPlayersScore[1]; + + // player 1 wins + if (allPlayersScore[0] > allPlayersScore[1]) { + compareMessage = compareMessage + "

Player 1 wins!"; + } + // player 2 wins + if (allPlayersScore[0] < allPlayersScore[1]) { + compareMessage = compareMessage + "

Player 2 wins!"; + } + // tie + if (allPlayersScore[0] == allPlayersScore[1]) { + compareMessage = compareMessage + "

It's a tie!"; + } + + return compareMessage; +}; + +var resetGame = function () { + currentPlayer = 1; + gameState = GAME_STATE_DICE_ROLL; + allPlayersScore = []; +}; + var main = function (input) { - var myOutputValue = 'hello world'; - return myOutputValue; + console.log("Checking game state on submit click: ", gameState); + console.log("Checking currentPlayer on submit click: ", currentPlayer); + var outputMessage = ""; + + if (gameState == GAME_STATE_DICE_ROLL) { + console.log("Control flow: gameState == GAME_STATE_DICE_ROLL"); + + // Display dice rolled as output message + outputMessage = rollDiceForPlayer(); + + // Change the game state + gameState = GAME_STATE_CHOOSE_DICE_ORDER; + return outputMessage; + } + if (gameState == GAME_STATE_CHOOSE_DICE_ORDER) { + console.log("Control flow: gameState == GAME_STATE_CHOOSE_DICE_ORDER"); + + // Call playerScore function + outputMessage = getPlayerScore(input); + + if (currentPlayer == 1) { + console.log("Control flow: end of player 1's turn, now player 2's turn"); + currentPlayer = 2; + gameState = GAME_STATE_DICE_ROLL; + return outputMessage + "

It is now player 2's turn!"; + } + if (currentPlayer == 2) { + console.log( + "Control flow: end of player 2's turn, Next submit click will calculate score" + ); + gameState = GAME_STATE_COMPARE_SCORES; + + return outputMessage + "

Press submit to calculate scores!"; + } + } + + if (gameState == GAME_STATE_COMPARE_SCORES) { + console.log("Control flow: gameState == GAME_STATE_COMPARE_SCORES"); + + outputMessage = comparePlayerScore(); + + resetGame(); + console.log("Current player after reset:", currentPlayer); + console.log("Game state after reset:", gameState); + console.log("allPlayersScore array:", allPlayersScore); + + return outputMessage; + } };