From 9c3a7669b2e1d5f12a2a95632a109e0365358a27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maksymilian=20Wilczy=C5=84ski?= Date: Thu, 8 May 2025 18:21:29 +0200 Subject: [PATCH] better card shuffling, fixed needing double enter press after player card draw and ai play, after manually drawing a card the player can see what card they drew --- uno.cpp | 21 ++++++++++++++------- uno.vcxproj | 10 ++++------ 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/uno.cpp b/uno.cpp index e190468..b7d96a0 100644 --- a/uno.cpp +++ b/uno.cpp @@ -48,7 +48,12 @@ std::vector createDeck() { if (n != 0) deck.push_back({ static_cast(c), n }); } } - std::shuffle(deck.begin(), deck.end(), std::mt19937{ std::random_device{}() }); + std::random_device rd; + std::mt19937 g(rd()); // Mersenne Twister random number generator + + for (int i = 0; i < 10; ++i) { + std::shuffle(deck.begin(), deck.end(), g); + } return deck; } @@ -139,7 +144,6 @@ int main() { char input; std::cin >> input; if (input == 'd' || input == 'D') { - playerHand.push_back(drawCard(deck)); Card drawn = drawCard(deck); playerHand.push_back(drawn); fmt::print("You drew: "); @@ -147,6 +151,7 @@ int main() { fmt::print("\nPress Enter to continue..."); std::cin.ignore(std::numeric_limits::max(), '\n'); std::cin.get(); + std::cin.putback('\n'); playerTurn = false; continue; } @@ -158,11 +163,14 @@ int main() { std::cin >> input; if (input == "d" || input == "D") { - playerHand.push_back(drawCard(deck)); - fmt::print("You drew a card. "); - fmt::print("Press Enter to continue..."); + Card drawn = drawCard(deck); + playerHand.push_back(drawn); + fmt::print("You drew: "); + drawn.print(); + fmt::print("\nPress Enter to continue..."); std::cin.ignore(std::numeric_limits::max(), '\n'); std::cin.get(); + std::cin.putback('\n'); playerTurn = false; break; } @@ -211,8 +219,7 @@ int main() { } fmt::print("Press Enter to continue..."); - if (played) - std::cin.ignore(std::numeric_limits::max(), '\n'); + std::cin.ignore(std::numeric_limits::max(), '\n'); std::cin.get(); playerTurn = true; diff --git a/uno.vcxproj b/uno.vcxproj index 1ad6195..63f471d 100644 --- a/uno.vcxproj +++ b/uno.vcxproj @@ -37,7 +37,7 @@ false v143 true - Unicode + NotSet Application @@ -50,7 +50,7 @@ false v143 true - Unicode + NotSet @@ -98,7 +98,7 @@ true include;%(AdditionalIncludeDirectories) stdcpp23 - /source-charset:utf-8 /execution-charset:utf-8 %(AdditionalOptions) + /utf-8 %(AdditionalOptions) MultiThreaded @@ -107,7 +107,6 @@ true true fmt.lib;%(AdditionalDependencies) - /utf-8 %(AdditionalOptions) @@ -138,7 +137,7 @@ true include;%(AdditionalIncludeDirectories) stdcpp23 - /source-charset:utf-8 /execution-charset:utf-8 %(AdditionalOptions) + /utf-8 %(AdditionalOptions) MultiThreaded @@ -147,7 +146,6 @@ true true fmt.lib;%(AdditionalDependencies) - /utf-8 %(AdditionalOptions)