|
|
#  Project #1: The Game
|
|
|
|
|
|
## Overview of `blackjack.js`
|
|
|
|
|
|

|
|
|
|
|
|
### The game
|
|
|
|
|
|
[Blackjack](http://en.wikipedia.org/wiki/Blackjack) is a one player game where people down on their luck generally transform their lives. It's probably a thing in your universe, but feel free to read up on it if you have to.
|
|
|
|
|
|
## Project Details
|
|
|
|
|
|
### Basic features
|
|
|
|
|
|
A basic implementation of this project should probably include:
|
|
|
|
|
|
1. A way to keep track of the current player bankroll ( a player should be able to play multiple hands and the bankroll should reflect wins and losses)
|
|
|
2. A way for players to make a bet
|
|
|
3. A way for players to get more cards, or declare themselves happy with their current hand
|
|
|
4. A way for players to bust
|
|
|
5. A way for players to win or tie
|
|
|
6. Game logic for the dealer to hit until a certain point
|
|
|
|
|
|
|
|
|
|
|
|
### Advanced features
|
|
|
|
|
|
Going above and beyond the basic implementation is desirable, should you have the time. Feel free to enhance your project with any of the following features:
|
|
|
|
|
|
1. A button on `game over` to reset the game back to initial state
|
|
|
2. A way for players to 'split' a hand
|
|
|
3. A way for players to 'double down' on a hand
|
|
|
4. Appropriate handling of 'insurance' and dealer blackjack
|
|
|
|
|
|
|
|
|
## Implementation
|
|
|
|
|
|
### Technologies
|
|
|
|
|
|
You will be expected to use the following technologies to implement this project:
|
|
|
|
|
|
- **HTML**
|
|
|
Your HTML should be semantic.
|
|
|
|
|
|
- **CSS**
|
|
|
Your game should be stylish.
|
|
|
|
|
|
- **JavaScript & jQuery**
|
|
|
Your game should be playable *and* responsive.
|
|
|
|
|
|
|
|
|
### Timeframe
|
|
|
|
|
|
The timeframe for this project is approximately 2 continuous days of class time and two weekend days.
|
|
|
|
|
|
## Expectations
|
|
|
|
|
|
### You
|
|
|
|
|
|
As a student you should be doing the following things:
|
|
|
|
|
|
- **Planning **
|
|
|
Plan out your project before you begin. What data structures will you need (objects, arrays)? What layout will your project have on the page (you could make a wireframe)? How will you organize your code? Pseudo-code out any thorny issues you might already anticipate.
|
|
|
|
|
|
- **Version Control**
|
|
|
Use **git** and **github** for version control, and make frequent incremental commits to prevent large scale implosions. Make a fresh repo outside the wdi-lettuce repo for your project so that
|
|
|
it will be public.
|
|
|
|
|
|
- **Hosting**
|
|
|
Host your application on **githubpages**, or something similar so the class and instructors can use it.
|
|
|
|
|
|
### Us
|
|
|
|
|
|
Since your instructors will be assessing your work, they will look for the following things:
|
|
|
|
|
|
- **Project Workflow**
|
|
|
Did you you plan your project before you started? 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 add a personal spin or creative element into your project submission? Did you deliver something of value to the end user?
|
|
|
|
|
|
- **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 have in class?
|
|
|
|
|
|
- **Problem Solving**
|
|
|
Are you able to defend why you implemented your solution in a certain way? Can you demonstrate 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.)
|
|
|
|
|
|
## Deliverables
|
|
|
|
|
|
By the time the project is over, we will expect the following from you:
|
|
|
|
|
|
* A **working game, built by you**, hosted somewhere on the internet
|
|
|
* A **link to your hosted working app** in the URL section of your Github repo
|
|
|
* A **git repository hosted on Github**, with a link to your hosted project, and frequent commits dating back to the very beginning of the project
|
|
|
* **A ``readme.md`` file** with explanations of the technologies used, the approach taken, installation instructions, unsolved problems, etc.
|
|
|
|
|
|
Most importantly a **technical demonstration** of your app which:
|
|
|
|
|
|
* Is 5 minutes in length
|
|
|
* Shows off all features of the app
|
|
|
* Explains the technical details
|
|
|
* Explains the technical challenges
|
|
|
* Explains which improvements you might make
|