Add project files.

This commit is contained in:
Aelita4 2020-10-09 20:27:32 +02:00
parent fd876a8003
commit e95f59bdce
4 changed files with 434 additions and 0 deletions

234
Hanoi.cpp Normal file
View File

@ -0,0 +1,234 @@
#include <iostream>
#include <windows.h>
#include <conio.h>
//COLORS
#define BLACK 0
#define BLUE 1
#define GREEN 2
#define AQUA 3
#define RED 4
#define PURPLE 5
#define YELLOW 6
#define WHITE 7
#define GRAY 8
#define LIGHT_BLUE 9
#define LIGHT_GREEN 10
#define LIGHT_AQUA 11
#define LIGHT_RED 12
#define LIGHT_PURPLE 13
#define LIGHT_YELLOW 14
#define BRIGHT_WHITE 15
unsigned int counter = 0;
unsigned int maxx = 0;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
void gotoxy(int x, int y)
{
COORD c;
c.X = x;
c.Y = y;
SetConsoleCursorPosition(hConsole, c);
}
char getCursorChar()
{
char c = '\0';
CONSOLE_SCREEN_BUFFER_INFO con;
if (hConsole != INVALID_HANDLE_VALUE &&
GetConsoleScreenBufferInfo(hConsole, &con))
{
DWORD read = 0;
if (!ReadConsoleOutputCharacterA(hConsole, &c, 1,
con.dwCursorPosition, &read) || read != 1
)
c = '\0';
}
return c;
}
char readChar(int x, int y)
{
gotoxy(x, y);
char c = getCursorChar();
return c;
}
void vanishCursor()
{
CONSOLE_CURSOR_INFO info;
info.dwSize = 100;
info.bVisible = FALSE;
SetConsoleCursorInfo(hConsole, &info);
}
void color(int foreground, int background)
{
int color = (background * 16) + foreground;
SetConsoleTextAttribute(hConsole, color);
}
int getColor(int n)
{
switch (n)
{
case 1:
return LIGHT_GREEN;
case 2:
return YELLOW;
case 3:
return BLUE;
case 4:
return LIGHT_RED;
case 5:
return RED;
default:
return 0;
}
}
void generatePoles()
{
color(WHITE, BLACK);
gotoxy(15, 20);
std::cout << "-----+-----";
gotoxy(30, 20);
std::cout << "-----+-----";
gotoxy(45, 20);
std::cout << "-----+-----";
for (int i = 1; i <= 5; i++)
{
gotoxy(20, 20 - i);
std::cout << "|";
gotoxy(35, 20 - i);
std::cout << "|";
gotoxy(50, 20 - i);
std::cout << "|";
}
}
void generateRing(int n)
{
for (int j = n; j > 0; j--)
{
color(getColor(j), BLACK);
for (int i = 0; i < j; i++)
{
gotoxy(21 + i, (19 - n) + j);
std::cout << "_";
gotoxy(19 - i, (19 - n) + j);
std::cout << "_";
}
}
}
void editRing(char action, int n, char pole, int total)
{
int x = 0;
switch (pole)
{
case 'A':
x = 20;
break;
case 'B':
x = 35;
break;
case 'C':
x = 50;
break;
}
switch (action)
{
case 'P':
case 'p':
for (int i = 0; i < total; i++)
{
if (readChar(x + 1, 19 - i) == ' ')
{
for (int j = 0; j < n; j++)
{
color(getColor(n), BLACK);
gotoxy(x + 1 + j, 19 - i);
std::cout << "_";
gotoxy(x - 1 - j, 19 - i);
std::cout << "_";
}
break;
}
}
break;
case 'r':
case 'R':
for (int i = 0; i < total + 1; i++)
{
if (readChar(x + 1, 19 - i) == ' ')
{
for (int j = 0; j < total; j++)
{
gotoxy(x + 1 + j, 19 - i + 1);
std::cout << " ";
gotoxy(x - 1 - j, 19 - i + 1);
std::cout << " ";
}
}
}
break;
}
}
void hanoi(int n, char x, char y, char z)
{
if (n > maxx) maxx = n;
if (n == 1)
{
editRing('R', n, x, maxx);
editRing('P', n, y, maxx);
Sleep(1000);
}
else
{
hanoi(n - 1, x, z, y);
editRing('R', n, x, maxx);
editRing('P', n, y, maxx);
Sleep(1000);
hanoi(n - 1, z, y, x);
}
}
void hanoiMain(int n)
{
generatePoles();
generateRing(n);
Sleep(1000);
hanoi(n, 'A', 'B', 'C');
}
int main()
{
vanishCursor();
int n;
while (1)
{
std::cout << "How many rings? ";
std::cin >> n;
if (n > 5 || n < 3)
{
std::cout << "Select a number between 3 and 5" << std::endl;
n = 0;
}
else
{
system("cls");
hanoiMain(n);
break;
}
}
color(WHITE, BLACK);
gotoxy(0, 0);
return 0;
}

31
Hanoi.sln Normal file
View File

@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30523.141
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Hanoi", "Hanoi.vcxproj", "{AF18BCDC-F52C-41BA-9F04-EF47025D1B00}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{AF18BCDC-F52C-41BA-9F04-EF47025D1B00}.Debug|x64.ActiveCfg = Debug|x64
{AF18BCDC-F52C-41BA-9F04-EF47025D1B00}.Debug|x64.Build.0 = Debug|x64
{AF18BCDC-F52C-41BA-9F04-EF47025D1B00}.Debug|x86.ActiveCfg = Debug|Win32
{AF18BCDC-F52C-41BA-9F04-EF47025D1B00}.Debug|x86.Build.0 = Debug|Win32
{AF18BCDC-F52C-41BA-9F04-EF47025D1B00}.Release|x64.ActiveCfg = Release|x64
{AF18BCDC-F52C-41BA-9F04-EF47025D1B00}.Release|x64.Build.0 = Release|x64
{AF18BCDC-F52C-41BA-9F04-EF47025D1B00}.Release|x86.ActiveCfg = Release|Win32
{AF18BCDC-F52C-41BA-9F04-EF47025D1B00}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {1FE5F2FE-8E15-4671-B9AC-63E0AF9AD87B}
EndGlobalSection
EndGlobal

147
Hanoi.vcxproj Normal file
View File

@ -0,0 +1,147 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{af18bcdc-f52c-41ba-9f04-ef47025d1b00}</ProjectGuid>
<RootNamespace>Hanoi</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="Hanoi.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

22
Hanoi.vcxproj.filters Normal file
View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Hanoi.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>