aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAiden Woodruff <aiden@aidenw.net>2024-12-14 01:08:52 -0500
committerAiden Woodruff <aiden@aidenw.net>2024-12-14 01:08:52 -0500
commit53afb8b12ad5ef4eadefe8825d94a8dfdebad0e8 (patch)
tree20d44962bc6b0c29a4b0835448b98a5538505ede
parent7e72444c61797691fc33acc5fd2ff5f99bdbad1b (diff)
downloadwcards-53afb8b12ad5ef4eadefe8825d94a8dfdebad0e8.tar.gz
wcards-53afb8b12ad5ef4eadefe8825d94a8dfdebad0e8.tar.bz2
wcards-53afb8b12ad5ef4eadefe8825d94a8dfdebad0e8.zip
shuffle deck by default
Signed-off-by: Aiden Woodruff <aiden@aidenw.net>
-rw-r--r--deck.cc10
-rw-r--r--deck.h1
2 files changed, 10 insertions, 1 deletions
diff --git a/deck.cc b/deck.cc
index 7801e29..9e1204a 100644
--- a/deck.cc
+++ b/deck.cc
@@ -1,3 +1,6 @@
1#include <algorithm>
2#include <random>
3
1#include "deck.h" 4#include "deck.h"
2 5
3namespace wcards { 6namespace wcards {
@@ -5,9 +8,14 @@ namespace wcards {
5 for (unsigned i = 0; i < 52; ++i) { 8 for (unsigned i = 0; i < 52; ++i) {
6 cards[i] = i + 1; 9 cards[i] = i + 1;
7 } 10 }
11 shuffle();
8 } 12 }
9 Card Deck::draw(void) { 13 Card Deck::draw(void) {
10 if (pos == 52) return Card(); 14 if (pos == 52) return Card();
11 else return Card(pos++); 15 else return Card(cards[pos++]);
16 }
17 void Deck::shuffle(void) {
18 std::default_random_engine engine(std::random_device{}());
19 std::shuffle(cards, cards + 52, engine);
12 } 20 }
13} // namespace wcards 21} // namespace wcards
diff --git a/deck.h b/deck.h
index 929e509..b8edf48 100644
--- a/deck.h
+++ b/deck.h
@@ -9,6 +9,7 @@ namespace wcards {
9 Deck(); 9 Deck();
10 Card draw(void); 10 Card draw(void);
11 private: 11 private:
12 void shuffle(void);
12 unsigned cards[52], pos; 13 unsigned cards[52], pos;
13 }; 14 };
14} // namespace wcards 15} // namespace wcards