# ![](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 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