So I have recently received a new assignment in class to create a blackjack program. I have been out for quite a few classes and it's affected my ability to do this program. I struggle greatly in C++ and i'm trying my best, (i have a B right now) and i don't want to fail this because this program is worth a lot of points. I know most of you guys will be like "we don't do homework for free" and all that stuff, but i honestly need help. And unlike other people who post their programming assignments waiting for someone to write their program for them, i actually spent a lot of time on this but i simply cant get it. Now i'm not asking for someone to write the program for me. But merely for someone to point me in the right direction and give me a few tips.
The assignment is as follows:
Two cards are dealt to each player. The dealer shows one card face up, and the other is face down. The player gets to see both of his or her cards and the total of them is added. Face cards (Kings, Queens, Jacks) are worth 10 points, Aces are worth 1 or 11 points, and all other cards are worth their face value. The goal of the game is to get as close to 21 (“blackjack”) without going over, which is called “busting.”
The human player goes first, making his or her decisions based on the single dealer card showing. The player has two choices: Hit or Stand. Hit means to take another card. Stand means that the player wishes no more cards, and ends the turn, allowing for the dealer to play.
The dealer must hit if their card total is less than 17 (or a soft 17), and must stand if it is 17 or higher.
Whichever player gets closest to 21 without exceeding it, wins.
Requirements
For this assignment you need to do the following:
• Write a program that plays Blackjack
• Have the program use at least 3 functions:
1. For the Dealer
2. For the Player
3. To deal a card
• Have the program intelligently determine if an Ace should be interpreted as a 1 or an 11. This is somewhat difficult. You need to be able to also handle multiple aces. If there are any aces in the hand, and the total exceeds 21, change the 11 to a 1 (i.e. subtract 10) until there are no more aces in the hand or the total is below 21. (Hint: keep a counter that says how many aces have been dealt so far.)
• You don’t need to be able to deal from a real deck. Just generate a random number, where 1 is an ace and 10, 11, 12, and 13 represent 10 as well. (To get the right distribution of cards.) You can ignore suit.
Grading
This is a difficult project that you should concentrate on correctness and readability. This code will be very difficult to follow without proper commenting. Please take time to make the user’s interface as readable and easy to understand as possible. I will grade for correctness, readability, comments, and a separate grade for appearance of output screen.
YOU MUST USE PASS BY REFERENCE PARAMETERS OR YOU WILL NOT RECEIVE FULL CREDIT
You may use the following code to generate a random integer:
// postcondition: returns a random integer from 1 to 13
int getRand()
{
if(i == 100) i = 0;
int rands[100];
srand((unsigned)time(0));
for(int index=0; index<100; index++)
{
rands[index] = (rand()%13)+1;
}
i++;
int n = rands[i];
return n;
}
To use this function, insert the following lines after your include directives:
static int i = -1;
int getRand();
and include the ctime library
Programming concepts needed to complete this project:
1) User input
2) Using functions
3) Control Structures
4) Conditional statements
5) Advanced tracking variable values
6) Boolean statements
Now so far, this is what i have set up. I know it's probably nothing but i wanna show i actually tried.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
#include<iostream>
#include<ctime>
#include<string>
using namespace std;
void setup();
void output();
int dealACard();
int getRand();
static int i = -1;
int main()
{
output();
setup();
}
void output()
{
string name;
cout << "Welcome to blackjack \nPlease enter your name: ";
cin >> name;
cout << "\n";
}
void setup()
{
int total, d1, p1, p2;
char choice;
d1 = getRand();
cout << "The dealer: " << endl;
cout << "?" << " + " << d1 << "\n" << endl;
p1 = getRand();
p2 = getRand();
total = p1 + p2;
cout << "You: " << endl;
cout << p1 << " + " << p2 << " = " << total << endl;
cout << "\n";
cout << "Do you want to hit (h) or stand (s)?: ";
cin >> choice;
}
int getRand()
{
if(i == 100) i = 0;
int rands[100];
srand((unsigned)time(0));
for(int index=0; index<100; index++)
{
rands[index] = (rand()%13)+1;
}
i++;
int n = rands[i];
return n;
}
|