This is it. What you've all been waiting for.
Everyone will get a chance to be creative, and work through some really tough programming challenges. It's up to you to use what you've learned to come up with a final project.
You will be working individually for this project, but we'll be guiding you along the process and helping as you go.
As part of this project, you'll be required to present your project to your instructors and classmates. Your goal for this presentation is to extract the most important aspects of what went into building your project into easy-to-use language and practice speaking and presenting about your code.
Show us what you've got!
Your proposal for this project, as outlined in the proposal section below, must be completed and ready to present for approval by:
Tuesday, December 18th at 10:00 AM
This assignment, as outlined below, must be complete in totality by:
Friday, December 21th at 10:00 AM.
- Be a working, interactive, web application.
- Be deployed via GitHub Pages (we will go over this on Wednesday, August 19th, 2020)
- Include at least one CSS animation/transition fired by a DOM event.
- Be styled with CSS.
- Be properly indented
- Be written with semantic, camelCase JavaScript variable names
- Be written with kebab-case CSS class names (e.g. this-is-the-class-name)
- Name of your project
- A link to your deployed game
- The guidelines outlined in this project worksheet.
- A collection of wireframes - hand-drawn or digitally created - outlining the important pages of your site, as well as the critical states of your game (start state, play state(s) win state). As some games have many or infinite numbers of play states and win state, you can just provide a few simplified diagrams to convey the general idea.
- A proposal including:
- A description of the game you'll be building with the objective described in non-technical language.
- A list of the main technologies you plan to use.
- An explanation of the major problems you plan to face while implementing this game.
- An explanation of how you foresee yourself solving the aforementioned problems.
- A git repository hosted on GitHub, with a link to your hosted game, and frequent commits dating back to the very beginning of the project (YOUR APP SHOULD BE LOCATED IN A SEPARATE STANDING REPO. DO NOT build your app in this repository. YOU MUST initiate a new repo on your GitHub account.)
- A README file with:
- A link to your live game deployed on GitHub Pages
- An explanations of the technologies used
- Select wireframes
- Additional information including but not limited to - the approach taken, installation instructions, unsolved problems, etc.
- Break the project down into different components (data, presentation, views, style, DOM manipulation) and brainstorm each component individually. Use whiteboards!
- Use your Development Tools (console.log, inspector, alert statements, etc) to debug and solve problems
- Work through the lessons in class & ask questions when you need to! Think about adding relevant code to your game each night, instead of, you know... procrastinating.
- Commit early, commit often. Don’t be afraid to break something because you can always go back in time to a previous version so long as it's been saved as a commit.
- Consult documentation resources (MDN, CSS Tricks etc.) at home to better understand what you’ll be getting into.
- Don’t be afraid to write code that you know you will have to remove later. Create temporary elements (buttons, links, etc) that trigger events if real data is not available. For example, if you’re trying to figure out how to change some text when the game is over but you haven’t solved the win/lose game logic, you can create a button to simulate that until then.
Make a one player game where people down on their luck can lose all their money by guessing which card the computer will deal next!
Implement your own famous kids game!
Fight, sink all the enemy ships!
- MDN Javascript Docs (a great reference for all things Vanilla Javascript)
- GitHub Pages (for hosting your web application)
Your project will be evaluated using this rubric, assessing the following:
- Professionalism
- Functionality and Requirements
- Quality and Consistency
- Workflow and Deployment
- Creativity