Giter Club home page Giter Club logo

project-00's Introduction

Project 0 - Racing Game

Read this entire document before writing a line of code.

Contents


Overview

What is this project?

You'll be building one more browser game, synthesizing all the knowledge you've packed into your brain over the past two weeks! You'll be leveraging the power of jQuery to create a Racing Game, where two or more players can move their "cars" across the browser to compete for the win.

You will be working individually for this project, but we encourage you to get help from your peers and even pair-program on each other's projects when bugs arise.

You must push your project to Github, and we encourage you to also host it either using Github Pages or BitBalloon.

You will receive written instructor feedback on this project. See the feedback doc for details.


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 file-system from the Command Line.
  • Git: Manage and interact with a git repository to store changes to code.
  • JavaScript: Work with objects and events, while learning how to strategically solve problems and resolve errors.
  • Front-End: Work on HTML structure, CSS styles, and animating 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 GitHub repository so others understand what you've built.

Timeline

When is it due?
  • Assigned: Friday, March 25th
  • Due: Monday, March 28th @ 9:17am

Technical Requirements

What technologies will I be using?

Your app must:

  • Use jQuery to capture events and manipulate the DOM.
  • Minimize the use of global variables.
  • Integrate Object Oriented Programming design patterns, using at least one constructor.
  • Abide by the separation of concerns principle with separate HTML, CSS, and JavaScript files.
  • Leverage CSS styling for a pleasing user experience.
  • Include a public Github repository with frequent commits and descriptive commit messages!
  • Have useful documentation that you or other developers can reference later.

Specs

What are the core features?

A user should be able to...

  • See a beautiful game board on the page
  • See at least two players on the board
  • Press a key on their keyboard to move their player one square
  • See who won the round
  • Reset the game / start a new round

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 with explanations of the technologies used, existing features, planned features, and anything else you'd like to add. See the example-readme as a guide, and use this markdown cheatsheet to help with formatting.

Best Practices

What are some tips from real-world development?
  • Take very small steps, and use your development tools (console.log, Chrome JavaScript console, Chrome debugger) to debug and solve problems as you go.
  • Wireframe your page layout, and whiteboard the different components of your app (data, view/presentation logic, game logic, styles).
  • Write clean, well-indented code! Follow this javascript style guide. Make sure you remove unused/commented code!
  • Use class-based css rules, and avoid id-based rules for CSS styling. (Ids are okay for elements you need to access with JavaScript.)
  • Stick with the KISS (Keep It Simple Stupid) and DRY (Don’t Repeat Yourself) principles.
  • Commit early, and commit often. Write commit messages that describe what you changed in each commit.
  • Don't be afraid to break your code. Play in your console. Experiment. You can go back to a previous commit if you need to.
  • Don’t be afraid to write code that you know you will have to remove later. Create temporary elements (buttons, links, etc.) to trigger events for testing. 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 win button to start out.
  • Write a helpful README.md that you or other developers can reference later. See example-readme as a guide, and use this markdown cheatsheet to help with formatting.
  • Use the docs and be a Google wizard. This is what developers spend most of their time doing!

Getting Started

How should I begin approaching this?
  • Create a NEW GitHub repository from your GitHub account. Make sure you're in your class work folder, and create the project locally. Follow the steps to git init the new repo.
  • You'll need an index.html, style.css, and app.js. Make sure your stylesheet and JavaScript files are linked in index.html, and also include the CDNs you'll be using (Bootstrap, jQuery).

Submission

How do I turn in the project?
  • As you make code changes, frequently commit and push to GitHub.
  • Once you've finished the project and pushed your work to GitHub, please add the link to your project's GitHub repo to this google spreadsheet.

Bonus Ideas

What if I want to do more?

These feature ideas are here to help you challenge yourself more! Don't focus on them until you've completed the core requirements. Feel free to come up with your own bonus ideas & use your creativity.

  • Allow customized players (name, symbol, color, avatar, etc.). Let the users change their player's properties with a form!
  • Keep track of multiple game rounds with a win counter or win history.
  • Integrate with a 3rd party API: flickr, youtube, spotify, giphy, etc.
  • Use Handlebars templating to display information like the past rounds' win history, or data from your API.
  • Get creative with inventive styling beyond what we've practiced, e.g. use hover effects or CSS animations to spiff things up. Get creative with backgrounds.
  • Timing: display a countdown timer ("3, 2, 1, Go!"), the winning time, or the best time.
  • Race against a bot that the computer controls.
  • Instant replay: record yourself and then race against yourself, in real-time.
  • Use localStorage to keep track of game state, even if the user refreshes the page.

Resources

Where can I look for help online?

Project Feedback

How will I get feedback from instructors?

See the feedback doc for details.

project-00's People

Contributors

cameronjacoby avatar bgveenstra avatar kjfrancis avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.