Before You Begin
Push the above changes to GitHub. Choose whichever game you'd like to build. Making the Psychic game will prove less challenging than coding Hangman. However, as the challenge of the Hangman exercise provides a more comprehensive review of this week's material, we suggest attempting that assignment first. Note: There's no shame if you'd prefer submitting Psychic—it's still a proper challenge. Push your selected game to Github Pages.
Option One: Psychic Game (Basic)
Watch the demo. You're going to make a game just like the one in the video. Essentially, the app randomly picks a letter, and the user has to guess which letter the app chose. Put the following text on your page: Guess what letter I'm thinking of Wins: (# of times the user has guessed the letter correctly) Losses: (# of times the user has failed to guess the letter correctly after exhausting all guesses) Guesses Left: (# of guesses left. This will update) Your Guesses So Far: (the specific letters that the user typed. Display these until the user either wins or loses.) When the player wins, increase the Wins counter and start the game over again (without refreshing the page). When the player loses, increase the Losses counter and restart the game without a page refresh (just like when the user wins).
Option Two: Hangman Game (Challenge - Recommended)
Watch the demo. Choose a theme for your game! In the demo, we picked an 80s theme: 80s questions, 80s sound and an 80s aesthetic. You can choose any subject for your theme, though, so be creative! Use key events to listen for the letters that your players will type. Display the following on the page: Press any key to get started! Wins: (# of times user guessed the word correctly).
If the word is madonna, display it like this when the game starts: _ _ _ _ _ _ _. As the user guesses the correct letters, reveal them: m a d o _ _ a.
Number of Guesses Remaining: (# of guesses remaining for the user). Letters Already Guessed: (Letters the user has guessed, displayed like L Z Y H). After the user wins/loses the game should automatically choose another word and make the user play it.
Hangman Game Bonuses
Play a sound or song when the user guesses their word correctly, like in our demo. Write some stylish CSS rules to make a design that fits your game's theme.
Remember: global variables, then objects, then calls.
Definitely talk with a TA or your instructor if you get tripped up during this challenge.
A Few Tips
IMPORTANT: Whichever assignment you choose, code your game one piece at a time! Code all of your apps one piece at a time. Always code one piece at a time!
Pseudocode your program and break the app down into tiny, manageable fragments. This will make the coding process much less frustrating and a veritable Mach number faster. Otherwise, you'll be chipping away at a giant chunk of abstraction for way too many hours.
The ability to solve a large problem by treating it as a set of smaller ones is the hallmark of a strong programmer. Best start adapting this into your development routine now, to better prepare for your more complex future projects. Remember:
Split the whole program into many distinct, pseudocoded problems. Focus on one of the smaller problems and solve it. Only when you solve one problem should you then move onto your next problem.
When you encounter bugs (and we all do), console.log will become your best friend. Regularly check your console to make sure your app is spitting out the right values.
As a more advanced—but more powerful—alternative, feel free to experiment with the Chrome DevTools Debugger.
Try your best to deliver a 'working/playable game' by the end of the deadline. If you're not making progress with Hangman, switch gears to the Psychic game. Contact your TA/Instructor if you're not making progress after 2 hours. We're here to help! Substance over style! Submitting a working game matters more that making a broken app that at least looks pretty. We're focusing on game mechanics, not just on the look and feel of your app. That said, coding a functional app that also looks pretty would be impressive. Always commit your work and back it up with GitHub pushes. You don't want to lose hours of your work because you didn't push it to GitHub every half hour or so.
Turn in anything you have! Even if you don't finish, we still want to see what you were able to accomplish in the time we gave you. This will help us know what concepts we could help you with, as well as what topics we should focus on in the coming lectures.
Attempt to complete homework assignment as described in instructions. If unable to complete certain portions, please pseudocode these portions to describe what remains to be completed.
One More Thing
If you have any questions about this project or the material we have covered, please post them in the community channels in slack so that your fellow developers can help you! If you're still having trouble, you can come to office hours for assistance from your instructor and TAs.