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

This commit is contained in:
Maksymilian Wilczyński committed 2025-05-08 18:21:29 +02:00
1 parent f4a3463df1
commit 9c3a7669b2
2 files changed
+18 -13

No files matched your search

+14 -7
View File
@@ -48,7 +48,12 @@ std::vector<Card> createDeck() {
if (n != 0) deck.push_back({ static_cast<Color>(c), n }); if (n != 0) deck.push_back({ static_cast<Color>(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; return deck;
} }
@@ -139,7 +144,6 @@ int main() {
char input; char input;
std::cin >> input; std::cin >> input;
if (input == 'd' || input == 'D') { if (input == 'd' || input == 'D') {
playerHand.push_back(drawCard(deck));
Card drawn = drawCard(deck); Card drawn = drawCard(deck);
playerHand.push_back(drawn); playerHand.push_back(drawn);
fmt::print("You drew: "); fmt::print("You drew: ");
@@ -147,6 +151,7 @@ int main() {
fmt::print("\nPress Enter to continue..."); fmt::print("\nPress Enter to continue...");
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.get(); std::cin.get();
std::cin.putback('\n');
playerTurn = false; playerTurn = false;
continue; continue;
} }
@@ -158,11 +163,14 @@ int main() {
std::cin >> input; std::cin >> input;
if (input == "d" || input == "D") { if (input == "d" || input == "D") {
playerHand.push_back(drawCard(deck)); Card drawn = drawCard(deck);
fmt::print("You drew a card. "); playerHand.push_back(drawn);
fmt::print("Press Enter to continue..."); fmt::print("You drew: ");
drawn.print();
fmt::print("\nPress Enter to continue...");
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.get(); std::cin.get();
std::cin.putback('\n');
playerTurn = false; playerTurn = false;
break; break;
} }
@@ -211,8 +219,7 @@ int main() {
} }
fmt::print("Press Enter to continue..."); fmt::print("Press Enter to continue...");
if (played) std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.get(); std::cin.get();
playerTurn = true; playerTurn = true;
+4 -6
View File
@@ -37,7 +37,7 @@
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset> <PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>NotSet</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
@@ -50,7 +50,7 @@
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset> <PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>NotSet</CharacterSet>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
@@ -98,7 +98,7 @@
<ConformanceMode>true</ConformanceMode> <ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp23</LanguageStandard> <LanguageStandard>stdcpp23</LanguageStandard>
<AdditionalOptions>/source-charset:utf-8 /execution-charset:utf-8 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile> </ClCompile>
<Link> <Link>
@@ -107,7 +107,6 @@
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>fmt.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>fmt.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -138,7 +137,7 @@
<ConformanceMode>true</ConformanceMode> <ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp23</LanguageStandard> <LanguageStandard>stdcpp23</LanguageStandard>
<AdditionalOptions>/source-charset:utf-8 /execution-charset:utf-8 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile> </ClCompile>
<Link> <Link>
@@ -147,7 +146,6 @@
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>fmt.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalDependencies>fmt.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>