Nearly done
parent
e5301efdfd
commit
b1fef061e4
|
@ -5,14 +5,11 @@ map<Suit, string> suitNames = { {Suit::clubs, "Clubs" },
|
||||||
{Suit::hearts, "Hearts"},
|
{Suit::hearts, "Hearts"},
|
||||||
{Suit::spades, "Spades"} };
|
{Suit::spades, "Spades"} };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
string suitToString(Suit s)
|
string suitToString(Suit s)
|
||||||
{
|
{
|
||||||
return suitNames[s];
|
return suitNames[s];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
map<Rank, string> rankNames = { {Rank::two, "Two" },
|
map<Rank, string> rankNames = { {Rank::two, "Two" },
|
||||||
{Rank::three, "Three"},
|
{Rank::three, "Three"},
|
||||||
{Rank::four, "Four"},
|
{Rank::four, "Four"},
|
||||||
|
@ -32,7 +29,6 @@ string rankToString(Rank r)
|
||||||
return rankNames[r];
|
return rankNames[r];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
string toString(CardStruct card)
|
string toString(CardStruct card)
|
||||||
{
|
{
|
||||||
return rankToString(card.rank) + " of " + suitToString(card.suit);
|
return rankToString(card.rank) + " of " + suitToString(card.suit);
|
||||||
|
@ -46,6 +42,8 @@ string toStringShort(CardStruct card)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma region Card - Class
|
||||||
|
|
||||||
Card::Card()
|
Card::Card()
|
||||||
{
|
{
|
||||||
valid = false;
|
valid = false;
|
||||||
|
@ -77,3 +75,5 @@ string Card::toStringShort()
|
||||||
else
|
else
|
||||||
return "Invalid card";
|
return "Invalid card";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma endregion
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
#include "CardDeck.h"
|
||||||
|
#include "utilities.h"
|
||||||
|
|
||||||
|
CardDeck::CardDeck()
|
||||||
|
{
|
||||||
|
currentCardIndex = 0;
|
||||||
|
for (int s = 0; s < 4; s++)
|
||||||
|
{
|
||||||
|
for (int r = 2; r < 2 + 13; r++)
|
||||||
|
{
|
||||||
|
cards.push_back(Card((Suit)s, (Rank)r));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardDeck::swap(int fromIndex, int toIndex)
|
||||||
|
{
|
||||||
|
Card c = cards[fromIndex];
|
||||||
|
cards[fromIndex] = cards[toIndex];
|
||||||
|
cards[toIndex] = c;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardDeck::print()
|
||||||
|
{
|
||||||
|
for (Card c : cards)
|
||||||
|
{
|
||||||
|
cout << c.toString() << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardDeck::printShort()
|
||||||
|
{
|
||||||
|
for (Card c : cards)
|
||||||
|
{
|
||||||
|
cout << c.toStringShort() << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardDeck::shuffle(int depth)
|
||||||
|
{
|
||||||
|
srand(static_cast<unsigned int>(time(nullptr)));
|
||||||
|
for (int i = 0; i < depth; i++)
|
||||||
|
{
|
||||||
|
swap(randomWithLimits(0, cards.size() - 1), randomWithLimits(0, cards.size() - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const Card& CardDeck::drawCard()
|
||||||
|
{
|
||||||
|
++currentCardIndex;
|
||||||
|
return cards[currentCardIndex - 1];
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
#pragma once
|
||||||
|
#include "Card.h"
|
||||||
|
|
||||||
|
class CardDeck
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CardDeck();
|
||||||
|
void print();
|
||||||
|
void printShort();
|
||||||
|
void shuffle(int depth = 10000);
|
||||||
|
const Card& drawCard();
|
||||||
|
private:
|
||||||
|
vector<Card> cards;
|
||||||
|
int currentCardIndex;
|
||||||
|
void swap(int fromIndex, int toIndex);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
|
@ -135,10 +135,14 @@
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="Card.cpp" />
|
<ClCompile Include="Card.cpp" />
|
||||||
|
<ClCompile Include="CardDeck.cpp" />
|
||||||
<ClCompile Include="main.cpp" />
|
<ClCompile Include="main.cpp" />
|
||||||
|
<ClCompile Include="utilities.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="Card.h" />
|
<ClInclude Include="Card.h" />
|
||||||
|
<ClInclude Include="CardDeck.h" />
|
||||||
|
<ClInclude Include="utilities.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
|
|
@ -21,10 +21,22 @@
|
||||||
<ClCompile Include="Card.cpp">
|
<ClCompile Include="Card.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="CardDeck.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="utilities.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="Card.h">
|
<ClInclude Include="Card.h">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="CardDeck.h">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="utilities.h">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -1,5 +1,5 @@
|
||||||
#include "std_lib_facilities.h"
|
#include "std_lib_facilities.h"
|
||||||
#include "Card.h"
|
#include "CardDeck.h"
|
||||||
|
|
||||||
int main(){
|
int main(){
|
||||||
|
|
||||||
|
@ -26,10 +26,25 @@ int main(){
|
||||||
|
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
/*
|
||||||
Card c = Card(Suit::clubs, Rank::two);
|
Card c = Card(Suit::clubs, Rank::two);
|
||||||
|
|
||||||
cout << c.toString() << endl;
|
cout << c.toString() << endl;
|
||||||
|
*/
|
||||||
|
|
||||||
|
CardDeck cD = CardDeck();
|
||||||
|
|
||||||
|
cD.print();
|
||||||
|
|
||||||
|
cD.shuffle();
|
||||||
|
cD.printShort();
|
||||||
|
|
||||||
|
for (int i = 0; i < 52; i++)
|
||||||
|
{
|
||||||
|
Card c = cD.drawCard();
|
||||||
|
cout << c.toString() << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
keep_window_open();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
#include "utilities.h"
|
||||||
|
#include "std_lib_facilities.h"
|
||||||
|
|
||||||
|
int randomWithLimits(int min, int max)
|
||||||
|
{
|
||||||
|
return rand() % (max - min + 1) + min;;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
int randomWithLimits(int min, int max);
|
||||||
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue