diff --git a/Oving 3/ObligatoriskeOppgaver/ObligatoriskeOppgaver/cannonball.cpp b/Oving 3/ObligatoriskeOppgaver/ObligatoriskeOppgaver/cannonball.cpp index 8aa2d28..164e823 100644 --- a/Oving 3/ObligatoriskeOppgaver/ObligatoriskeOppgaver/cannonball.cpp +++ b/Oving 3/ObligatoriskeOppgaver/ObligatoriskeOppgaver/cannonball.cpp @@ -52,7 +52,7 @@ void getUserInput(double& theta, double& absVelocity) double degToRad(double deg) { - return deg * M_PI / 180; + return deg * M_PI / 180; } double getVelocityX(double theta, double absVelocity) diff --git a/Oving 3/ObligatoriskeOppgaver/ObligatoriskeOppgaver/main.cpp b/Oving 3/ObligatoriskeOppgaver/ObligatoriskeOppgaver/main.cpp index bec507a..72c1d92 100644 --- a/Oving 3/ObligatoriskeOppgaver/ObligatoriskeOppgaver/main.cpp +++ b/Oving 3/ObligatoriskeOppgaver/ObligatoriskeOppgaver/main.cpp @@ -30,7 +30,11 @@ int main(){ #pragma region Game - Task 5d - playTargetPractice(10); + int rounds = 10; + + playTargetPractice(rounds); + + #pragma endregion diff --git a/Oving 5/Oving 5/Card.cpp b/Oving 5/Oving 5/Card.cpp index 45d21dd..1d8ce5c 100644 --- a/Oving 5/Oving 5/Card.cpp +++ b/Oving 5/Oving 5/Card.cpp @@ -5,14 +5,11 @@ map suitNames = { {Suit::clubs, "Clubs" }, {Suit::hearts, "Hearts"}, {Suit::spades, "Spades"} }; - - string suitToString(Suit s) { return suitNames[s]; } - map rankNames = { {Rank::two, "Two" }, {Rank::three, "Three"}, {Rank::four, "Four"}, @@ -32,7 +29,6 @@ string rankToString(Rank r) return rankNames[r]; } - string toString(CardStruct card) { return rankToString(card.rank) + " of " + suitToString(card.suit); @@ -46,6 +42,8 @@ string toStringShort(CardStruct card) } +#pragma region Card - Class + Card::Card() { valid = false; @@ -77,3 +75,5 @@ string Card::toStringShort() else return "Invalid card"; } + +#pragma endregion diff --git a/Oving 5/Oving 5/CardDeck.cpp b/Oving 5/Oving 5/CardDeck.cpp new file mode 100644 index 0000000..2ea0c4c --- /dev/null +++ b/Oving 5/Oving 5/CardDeck.cpp @@ -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(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]; +} diff --git a/Oving 5/Oving 5/CardDeck.h b/Oving 5/Oving 5/CardDeck.h new file mode 100644 index 0000000..69bc999 --- /dev/null +++ b/Oving 5/Oving 5/CardDeck.h @@ -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 cards; + int currentCardIndex; + void swap(int fromIndex, int toIndex); + +}; + diff --git a/Oving 5/Oving 5/Oving 5.vcxproj b/Oving 5/Oving 5/Oving 5.vcxproj index 1b09cd0..7e7c1c7 100644 --- a/Oving 5/Oving 5/Oving 5.vcxproj +++ b/Oving 5/Oving 5/Oving 5.vcxproj @@ -135,10 +135,14 @@ + + + + diff --git a/Oving 5/Oving 5/Oving 5.vcxproj.filters b/Oving 5/Oving 5/Oving 5.vcxproj.filters index e542a30..dbbc966 100644 --- a/Oving 5/Oving 5/Oving 5.vcxproj.filters +++ b/Oving 5/Oving 5/Oving 5.vcxproj.filters @@ -21,10 +21,22 @@ Source Files + + Source Files + + + Source Files + Source Files + + Source Files + + + Source Files + \ No newline at end of file diff --git a/Oving 5/Oving 5/main.cpp b/Oving 5/Oving 5/main.cpp index 8f1ded8..4a8faf7 100644 --- a/Oving 5/Oving 5/main.cpp +++ b/Oving 5/Oving 5/main.cpp @@ -1,5 +1,5 @@ #include "std_lib_facilities.h" -#include "Card.h" +#include "CardDeck.h" int main(){ @@ -26,10 +26,25 @@ int main(){ #pragma endregion - + /* Card c = Card(Suit::clubs, Rank::two); 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; } \ No newline at end of file diff --git a/Oving 5/Oving 5/utilities.cpp b/Oving 5/Oving 5/utilities.cpp new file mode 100644 index 0000000..04c548f --- /dev/null +++ b/Oving 5/Oving 5/utilities.cpp @@ -0,0 +1,8 @@ +#include "utilities.h" +#include "std_lib_facilities.h" + +int randomWithLimits(int min, int max) +{ + return rand() % (max - min + 1) + min;; +} + diff --git a/Oving 5/Oving 5/utilities.h b/Oving 5/Oving 5/utilities.h new file mode 100644 index 0000000..42d114f --- /dev/null +++ b/Oving 5/Oving 5/utilities.h @@ -0,0 +1,6 @@ +#pragma once + +int randomWithLimits(int min, int max); + + + diff --git a/Oving 5/Øving_5(5.feb)_3.pdf b/Oving 5/Øving_5(5.feb)_3.pdf new file mode 100644 index 0000000..331928d Binary files /dev/null and b/Oving 5/Øving_5(5.feb)_3.pdf differ