Let's start out with something fun - a game!
Everyone will get a chance to be creative, and work through some really tough programming challenges -- since you've already gotten your feet wet with Tic Tac Toe, it's up to you to come up with a fun and interesting game to build.
You will be working individually for this project, but we'll be guiding you along the process and helping as you go. Show us what you've got!
Your app must:
- Display a game in the browser
- Switch turns between two players, or have the user play the computer (AI or obstacles)
- Design logic for winning & visually display which player won
- Include separate HTML / CSS / JavaScript files
- Stick with KISS (Keep It Simple Silly) and DRY (Don't Repeat Yourself) principles
- Use Javascript for DOM manipulation
- Deploy your game online, where the rest of the world can access it**
- Inlcude in game instructions on how to play
- Not use any alerts
- Use semantic markup for HTML and CSS (adhere to best practices)
- Have a way to reset the game on game over that does not rely on a page refresh
**We will be covering deployment before the end of the project.
- A working game, built by you, hosted somewhere on the internet
- 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
- A
readme.md
file with explanations of the following:- a description of the app
- a link to the deployed live site
- the approach taken
- explanations of the technologies used
- wireframes
- a post-project reflection with any unsolved problems or growth areas you may have had
- any sources used
- 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.
- Consult documentation resources (MDN, etc.) 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.
- Create a new git repository on Github (title can be the name of your project)
- Clone your project onto your computer.
- Start making changes!
- Project Workflow: Did you complete the user stories, wireframes, task tracking, and/or ERDs, as specified above? Did you use source control as expected for the phase of the program you’re in (detailed above)?
- Technical Requirements: Did you deliver a project that met all the technical requirements? Given what the class has covered so far, did you build something that was reasonably complex?
- Creativity: Did you added a personal spin or creative element into your project submission? Did you deliver something of value to the end user (not just a login button and an index page)?
- Code Quality: Did you follow code style guidance and best practices covered in class, such as spacing, modularity, and semantic naming? Did you comment your code as your instructors as we have in class?
- Problem Solving: Are you able to defend why you implemented your solution in a certain way? Can you demonstrated that you thought through alternative implementations? (Note that this part of your feedback evaluation will take place during your one-on-one code review with your instructors, after you've completed the project.)
- Total: Your instructors will give you a total score on your project between:
This project will be graded on a Pass/Fail basis
This will serve as a helpful overall gauge of whether you met the project goals, but the more important scores are the individual ones above, which can help you identify where to focus your efforts for the next project!