Part 4: Game Controller
Putting it all togetherโ
The Resources folder structure should look something like this:
resources
โโโ images
โ โโโ .gitkeep
โโโ scripts
โ โโโ rock_paper_scissors.js
++โ โโโ index.js
โโโ styles
โโโ styles.css
The marked file is the file you'll be using in the part of the assignment.
In this final piece of the assignment, we will need to:
- get a handle of all elements of interest.
- then We will add event listeners to the buttons
- We will call on our RockPaperScissors class methods as needed.
- create constants
constof element handlers to the following elements
welcomeScreen for
#welcome-screengameScreen for
#game-screenstartGameButton for
#start-game-buttonuserName for
#usernameuserSelection for
#user-selectiongoButton for
#go-buttonscoreParagraph for
#scoregameHistoryParagraph for
#game-historyExample
const welcomeScreen = document.getElementById(`welcome-screen`);OR, using the
querySelectorconst gameScreen = document.querySelector(`#game-screen`);
programmatically, hide the
gameScreenusing Bootstrap's classd-nonegameScreen.classList.add("d-none")add an Event Listener to the
start-game-buttonon the click event. The event handler should: a. get username from the text input and store it a variable to be used in the next step. b. instantiate the game object from theRockPaperScissorsclass.game = new RockPaperScissors(username);* **Note**: The top of the file already has a declared(but not initialized) variable `game`. I'm assigning the value of the new class object to this variable, instead of declaring it in the eventHandler. *Remember* variables are scoped in JS, if the variable is declared inside the event handler scope, it will only be accessible from there.c. hide the welcomeScreen and display the gameScreen Instead.
* tip: you'll be adding and removing the `d-none` class.Create a function named
function updateScoreTallyUI(){...}- Modify the
#scoreparagraph. It should look something like this<USERNAME>: <USER_SCORE> v CPU: <CPU_SCORE>you can get the* i.e. if `username` is *Wes* and the `userScore` is 3 and the `cpuScore` is 5, it would change the scoreParagraph to `Wes: 3 v CPU: 5`username, andscoreobject from the game object.game.username,game.score
- Modify the
Create a function named
function updateGameHistoryUI(){...}- it makes use of the class property
gameHistoryLog. - it clears the current game history paragraph
- and replaces it with the content of the array.
- it makes use of the class property
add an Event Listener to the
go-buttonon the click event.- get the userSelection from the select
- call the
play(userSelection)of thegameobject. - update the text of
scoreParagraphusing theupdateScoreTallyUI()function - update the
gameHistoryParagraphusing theupdateGameHistoryUI()function