Skip to content

Commit

Permalink
Merge pull request #1 from wzwietering/refactor
Browse files Browse the repository at this point in the history
Refactor
  • Loading branch information
wzwietering committed Jul 9, 2017
2 parents d5cf3bf + feed664 commit bee76a3
Show file tree
Hide file tree
Showing 9 changed files with 188 additions and 348 deletions.
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -286,4 +286,8 @@ __pycache__/
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
*.xsd.cs

# Visual Studio files
*.vcxproj
*.vcxproj.filters
16 changes: 8 additions & 8 deletions Blackjack/Blackjack.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include "blackjack.h"
#include <iostream>
#include <string>
#include <vector>

// Get player input
char getPlayerChoice()
Expand All @@ -19,9 +20,9 @@ char getPlayerChoice()
}

// Deal a card, update scores, inform the player about it
void dealCard(int &score, const Card *&cardPtr, int &aces, bool player) {
score += getCardValue(*cardPtr++);
if ((*(cardPtr - 1)).rank == Rank::ACE) {
void dealCard(int &score, Card *&cardPtr, int &aces, bool player) {
score += (*(cardPtr++)).getCardValue();
if ((*(cardPtr - 1)).getRank() == Card::Rank::ACE) {
++aces;
}

Expand All @@ -35,14 +36,14 @@ void dealCard(int &score, const Card *&cardPtr, int &aces, bool player) {
verb = "has";
}
std::cout << name << " got ";
printCard(*(cardPtr - 1));
(*(cardPtr - 1)).printCard();
std::cout << "and " << verb << " a score of " << score << ".\n";
}

// Game logic
bool playBlackjack(const Card deck[]) {
bool playBlackjack(Deck deck) {
// Setup
const Card *cardPtr = &deck[0];
Card *cardPtr = &deck.cards[0];
int dealerScore = 0;
int playerScore = 0;
int dealerAces = 0;
Expand Down Expand Up @@ -97,7 +98,6 @@ bool playBlackjack(const Card deck[]) {
}
}

delete[] deck;
return (playerScore > dealerScore);
}

Expand All @@ -122,7 +122,7 @@ int main()
if (deckCount > 6) deckCount = 6;
if (deckCount < 1) deckCount = 1;
do {
bool playerWin = playBlackjack(getDeck(deckCount));
bool playerWin = playBlackjack(Deck(deckCount));

if (playerWin) {
std::cout << "Congratulations! You win!!!" << '\n';
Expand Down
158 changes: 0 additions & 158 deletions Blackjack/Blackjack.vcxproj

This file was deleted.

42 changes: 0 additions & 42 deletions Blackjack/Blackjack.vcxproj.filters

This file was deleted.

73 changes: 73 additions & 0 deletions Blackjack/Card.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#include "stdafx.h"
#include <iostream>
#include "blackjack.h"

Card::Card(Rank r, Suit s) : rank(r), suit(s) {}

// Prints the value of a card.
// The bool determines whether the programs prints a newline or a space between cards.
void Card::printCard(bool newline) {
switch (rank)
{
case Rank::TWO: std::cout << "two"; break;
case Rank::THREE: std::cout << "three"; break;
case Rank::FOUR: std::cout << "four"; break;
case Rank::FIVE: std::cout << "five"; break;
case Rank::SIX: std::cout << "six"; break;
case Rank::SEVEN: std::cout << "seven"; break;
case Rank::EIGHT: std::cout << "eight"; break;
case Rank::NINE: std::cout << "nine"; break;
case Rank::TEN: std::cout << "ten"; break;
case Rank::JACK: std::cout << "jack"; break;
case Rank::QUEEN: std::cout << "queen"; break;
case Rank::KING: std::cout << "king"; break;
case Rank::ACE: std::cout << "ace"; break;
default: break;
}
switch (suit)
{
case Suit::CLUB: std::cout << " of clubs"; break;
case Suit::DIAMOND: std::cout << " of diamonds"; break;
case Suit::HEART: std::cout << " of hearts"; break;
case Suit::SPADE: std::cout << " of spades"; break;
default: break;
}
if (newline) {
std::cout << '\n';
}
else {
std::cout << ' ';
}
}

// Get the value of a card. The value of the ace can be controlled using a boolean
int Card::getCardValue(const bool &aceEleven) {
switch (rank)
{
case Card::Rank::TWO:
case Card::Rank::THREE:
case Card::Rank::FOUR:
case Card::Rank::FIVE:
case Card::Rank::SIX:
case Card::Rank::SEVEN:
case Card::Rank::EIGHT:
case Card::Rank::NINE:
case Card::Rank::TEN: return static_cast<int>(rank) + 2; break;
case Card::Rank::JACK:
case Card::Rank::QUEEN:
case Card::Rank::KING: return 10; break;
case Card::Rank::ACE: return aceEleven ? 11 : 1; break;
}
}

// Return the rank of the card
Card::Rank Card::getRank() const
{
return rank;
}

// Return the suit of the card
Card::Suit Card::getSuit() const
{
return suit;
}
Loading

0 comments on commit bee76a3

Please sign in to comment.