# ![](https://ga-dash.s3.amazonaws.com/production/assets/logo-9f88ae6c9c3871690e33280fcf557f33.png) Project #1: The Game

## Overview of `blackjack.js`

![](http://upload.wikimedia.org/wikipedia/commons/4/4b/Blackjack_board.JPG)

### 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 3 continuous days of class time and 2 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
