# Difference between revisions of "Matlab Blackjack Report"

## Abstract

Blackjack is one of the most popular card games in the world with relatively simple rules. The player must try to beat the dealer by having a higher score without going over 21 points. In this project, are goal was to recreate a blackjack simulator. First we read about the casino rules for blackjack where the player is against the dealer. Next, we planned out our project by thinking of what programs we would need to make and implement. After we had written all the programs, we did many test and added more lines of code to make sure that everything was working properly.

## Introduction

Our main goal for this final project was to create an accurate Blackjack simulator. Understanding how to efficiently and effectively use Matlab was often frustrating through the year, so we wanted to use this final project as a way to get extra practice with the program. We wanted to better understand coding techniques and thought making a game like blackjack would be a fun way to do so. Since blackjack is a betting game, we thought it would be interesting to create a simulator where we can bet chips instead.

## Background/Theory

### Extended Rules of Blackjack

As briefly mentioned, in order to win blackjack against a dealer, the player must have more points than the dealer without going over 21 points. The player and dealer are both felt two cards but only one of the dealer's is faced up initially. Cards are worth their number value with jacks through kings also being ten points and aces can be eleven or one points depending on which works better. First, it it the player's turn and the user can decide to hit (get another card) or stand (end their turn). If the player goes over 21 points, he/she busts and automatically loses. Otherwise, it will then be the dealer's turn who will flip over his second card and must continue to hit until he either busts or has 17 points or greater. If neither the player or dealer bust, then the winner is the person with more points and that person will win the bet. It the player gets a blackjack, which is a ten-value card along with an ace, the player automatically wins 1.5 times his bet. If the player and dealer tie a round, then the bet is split and nobody loses or gains money.

### Programming Ideas

After fully understanding the rules of blackjack, it immediately became clear than many if statements and while loops were going to be needed. If and else if statement will only execute if specific conditions are met, otherwise the program will skip that portion of the code. This is important because, for example, we would want the round to end right away if the player goes over 21 points because there would be no use in having the dealer go though his turn if that condition is met. While loops are indefinite loops that will continue to execute until certain conditions are changed. These were also important to the coding progress because, for example, when we ask the user to input a bet, a while loop will continue to ask the user for a valid bet until the bet is greater than the minimum bet but less than the total number of chips the player has.

## Completed Project Design

From the outermost level, the blackjack simulator we created is one giant while loop. The conditions for the while loop to end are if the user does not have enough chips to make the minimum bet, has over 1,000,000 chips, or if the user types in 0 for the bet. Each run through the while loop will execute one individual round of black jack. before this main while loop, the program will call an intro function which will inform the player about the rules for playing and will identify how many chips the player starts with. The first function inside the loop is a 'getbet' function. This function contains a while loop to ensure that the player inputs an appropriate bet. Next, the main code will call a 'getcard' function which will randomly choose a number between 1 and 52 and assign a card suit and number to that number. Next is the 'getvlaue' function which will convert a card into a point value so it can be tallied up. Once the player has two cards and the dealer has his one face-up card, the code runs through another while loop that will give the player another card until they stop inputting 'h' for hit. Each run through this loop will deal one more card and add up the player's total point value to make sure the player doesn't bust. If the player goes over 21, if statements are used to check if any of the cards were an ace, so that its value could be reassigned from an 11 to a 1. Using another if statement, if the user ends his or her turn without busting, then the dealer will receive his second card and goes through a similar while loop himself. The dealer must continue to hit and add to his total point value until he bust or has more than 17. Once again, if statements are used to check if an ace can be reassigned to a 1 if the dealer busts. If neither the player or dealer bust, then some final if and elseif statements are used to check if the dealer or player had more points and reassigns the chip total appropriately. Before the end of each run through the main while loop, a 'getwinloss' function is called which determines if the player has enough chips to continue playing or not. If the player has enough, the program will start another round of blackjack by returning to the beginning of this outermost loop. If not, the game will print a game over message and the program terminates. See links at bottom of page to see the actual code with clear comments.