Pre-work - Memory Game

Memory Game is a Light & Sound Memory game to apply for CodePath's SITE Program.

Submitted by: Faris Ashai

Time spent: 4 hours spent in total

Link to project: https://codepath-memory-game.glitch.me/

Required Functionality

The following required functionality is complete:

  • Game interface has a heading (h1 tag), a line of body text (p tag), and four buttons that match the demo app
  • "Start" button toggles between "Start" and "Stop" when clicked.
  • Game buttons each light up and play a sound when clicked.
  • Computer plays back sequence of clues including sound and visual cue for each button
  • Play progresses to the next turn (the user gets the next step in the pattern) after a correct guess.
  • User wins the game after guessing a complete pattern
  • User loses the game after an incorrect guess

The following optional features are implemented:

  • Any HTML page elements (including game buttons) has been styled differently than in the tutorial
  • Buttons use a pitch (frequency) other than the ones in the tutorial
  • More than 4 functional game buttons
  • Playback speeds up on each turn
  • Computer picks a different pattern each time the game is played
  • Player only loses after 3 mistakes (instead of on the first mistake)
  • Game button appearance change goes beyond color (e.g. add an image)
  • Game button sound is more complex than a single tone (e.g. an audio file, a chord, a sequence of multiple tones)
  • User has a limited amount of time to enter their guess on each turn

The following additional features are implemented:

  • Keeps track of the current turn for the user.
  • Scale and glow effect on active button to increase visibility

Video Walkthrough

Here's a walkthrough of implemented user stories: ![X] http://g.recordit.co/X6blFrqiQ8.gif

Reflection Questions

  1. If you used any outside resources to help complete your submission (websites, books, people, etc) list them here. Referred to https://www.w3schools.com/js/default.asp to brush up on my JavaScript, imported a Google font, and searched up a color palette for my buttons.

  2. What was a challenge you encountered in creating this submission (be specific)? How did you overcome it? (recommended 200 - 400 words) Many of my past web development projects have been more static HTML/CSS or storing states in React. Writing my code in pure Javascript and figuring out how to structure all of my functions and logic took some time to wrap my head around and get everything running smoothly. I actually just read the requirements for the projects and looked at the video so I didn't realize that many of the hints were already given to us until I completed my project so I might have struggled a bit more than necessary.

  3. What questions about web development do you have after completing your submission? (recommended 100 - 300 words) After finishing this project, I'm wondering what kind of process real developers go through to implement a fully functional program in a structured manner and how they can quickly debug their issues. During the project, that would probably be one of my biggest interests, because if I could have made a proper framework before, I might have run into less issues.

  4. If you had a few more hours to work on this project, what would you spend them doing (for example: refactoring certain functions, adding additional features, etc). Be specific. (recommended 100 - 300 words) If I had more time on this project, I would love to set the number of buttons in the game as a dynamic parameter, add hints, and implement an optional time limit. This concept is so simple but it still offers tremendous flexibility for the user interaction and it uses minimal components.

License

Copyright Faris Ashai

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.