Skip to content

Latest commit

 

History

History
165 lines (112 loc) · 7.76 KB

weekend_project_refactor_spec.md

File metadata and controls

165 lines (112 loc) · 7.76 KB

GA logo WDI Weekend Project

OOP Racing Game

Read this entire document before writing a line of code.

###Contents

  • Overview: What is this project?
  • Topics Covered: What skills are we using?
  • Timeline: When is it due?
  • Technical Requirements: What technologies will I be using?
  • Specs: What are the core features?
  • Necessary Deliverables: What is necessary to call this complete?
  • Tips: Do you have any helpful advice?
  • Getting started: How should I begin approaching this?
  • Bonus: What if I want to do more?
  • Useful resources: Where can I look for help online?
  • Project Feedback: How will I get input from instructors?

Overview

######What is this project?

Let's build our final game, synthesizing all the knowledge you've packed into your brain over the past two weeks!

We'll be making one last version of our Racing Game with a few more twists. We'll be asking you to design the game with Object Oriented Programming patterns in mind, as well as leveraging the power of jQuery to write more imperative code.

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!


Topics Covered

######What skills are we using?

By the time you submit this project, you will have leveled-up in many big themes in the course:

  • Terminal: Practice interacting with the computer and navigating the filesystem from the command line.
  • Git: Manage and interact with a git repository to store changes to code.
  • JavaScript: Work with objects, constructors, and events, while learning how to strategically solve problems and resolve errors.
  • Front-End: Structure, style, and animate documents within a browser. Also, learn how to respond to actions your users take and the data they input into the browser.
  • Documentation: Document your code and your code repository so others understand what you've built.

Timeline

######When is it due?

####Assigned Friday, Aug 21th

####Due Monday, Aug 24th, 9:17am


Technical Requirements

######What technologies will I be using?

Your app must:

  • Integrate Object Oriented Programming design patterns
  • Minimize the use of globals
  • Use jQuery
  • Abide by the separation of concerns principle with different HTML, CSS, & JavaScript files
  • Make it beautiful!
  • Stick with the KISS(Keep It Simple Stupid)and DRY(Don’t Repeat Yourself) principles
  • Include a public Github repository with frequent commits and helpful commit messages!
  • Have useful documentation that you or other developers can reference later.

Specs

######What are the core features?

The user should be able to...

  • see a game board on page load
  • customize their player
  • move their player by pressing a specific key
  • see who won the round, or if it was a draw

Necessary Deliverables

######What is necessary to call this complete?

  • A working game, built by you
  • A git repository hosted on Github with frequent commits dating back to the very beginning of the project
  • A readme.md file with explanations of the technologies used, existing features, planned features, and anything else you'd like to add

Tips

######Do you have any helpful advice?

  • 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
  • Use your classmates as resources, once you have asked 3 people & Googled it, feel free to ask an instructor.
  • Commit early, commit often. Write commit messages that help you remember what you've changed in each commit.
  • Don’t be afraid to break something because you can always go back in time to a previous version (given you have followed the previous tip).
  • Use the docs and be a Google wizard This is what developers spend most of their time doing!
  • 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.

Getting Started

######How should I begin approaching this?

  • Head to the starter project repo & FORK IT
  • Clone you forked version of the repo locally to your computer
  • Use the code inside app.js, index.html, and main.css to get started on your project
  • Read this entire document before writing a line of code.

Bonus

######What if I want to do more?

These are for "extra credit!" Don't focus on these until you've hit the core requirements.

  • Keep track of multiple game rounds with a win counter
  • Allow customized players (name, symbol, color, avatar, etc)
  • Use localStorage to keep track of game state, even if the user refreshes.
  • Get creative with inventive styling, e.g. use hover effects or animations to spiff things up. Get creative with backgrounds. Dump the HTML track and use pure css.
  • Display a countdown timer ("3, 2, 1, Go!") / winning time / best time.
  • Race against a bot.
  • Instant Replay: record yourself and then race against yourself, in real-time.
  • Integrate with a 3rd party API: flickr, youtube, spotify, omdb, giphy, etc.

Useful Resources

######Where can I look for help online?


Project Feedback + Evaluation

######How will I get input from instructors?

  • Project Workflow: Did you complete the user stories, wireframes, task tracking, and/or entity relationship diagrams (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 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:

    Score Expectations
    0 Does not meet expectations.
    1 Meets expectations, good job!
    2 Exceeds expectations, you wonderful creature, you!

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!