diff --git a/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/FileContentIndex/1fd2b5a2-6be2-4148-8a6e-b5d81798df4f.vsidx b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/FileContentIndex/1fd2b5a2-6be2-4148-8a6e-b5d81798df4f.vsidx new file mode 100644 index 00000000..70aef67a Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/FileContentIndex/1fd2b5a2-6be2-4148-8a6e-b5d81798df4f.vsidx differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/FileContentIndex/22caacf2-9ca2-4216-945e-492855dbfb41.vsidx b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/FileContentIndex/22caacf2-9ca2-4216-945e-492855dbfb41.vsidx new file mode 100644 index 00000000..12ff186b Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/FileContentIndex/22caacf2-9ca2-4216-945e-492855dbfb41.vsidx differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/FileContentIndex/5fb507cc-cad0-49db-b607-81bf4574384d.vsidx b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/FileContentIndex/5fb507cc-cad0-49db-b607-81bf4574384d.vsidx new file mode 100644 index 00000000..cb1a6752 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/FileContentIndex/5fb507cc-cad0-49db-b607-81bf4574384d.vsidx differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/FileContentIndex/94a26b35-46b5-4d70-92e7-ce6c9bccf519.vsidx b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/FileContentIndex/94a26b35-46b5-4d70-92e7-ce6c9bccf519.vsidx new file mode 100644 index 00000000..f3bef64e Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/FileContentIndex/94a26b35-46b5-4d70-92e7-ce6c9bccf519.vsidx differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/FileContentIndex/afadde9e-4b58-4170-8346-0e9eaa4bbe2b.vsidx b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/FileContentIndex/afadde9e-4b58-4170-8346-0e9eaa4bbe2b.vsidx new file mode 100644 index 00000000..b359d795 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/FileContentIndex/afadde9e-4b58-4170-8346-0e9eaa4bbe2b.vsidx differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/v17/.suo b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/v17/.suo new file mode 100644 index 00000000..05674f28 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/v17/.suo differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/v17/Browse.VC.db b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/v17/Browse.VC.db new file mode 100644 index 00000000..75d3499c Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/v17/Browse.VC.db differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/v17/DocumentLayout.json b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/v17/DocumentLayout.json new file mode 100644 index 00000000..5f23ce76 --- /dev/null +++ b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/v17/DocumentLayout.json @@ -0,0 +1,12 @@ +{ + "Version": 1, + "WorkspaceRootPath": "D:\\C\u002B\u002B\\Tamagochi\\", + "Documents": [], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [] + } + ] +} \ No newline at end of file diff --git a/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/v17/Solution.VC.db b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/v17/Solution.VC.db new file mode 100644 index 00000000..226f3ef1 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/v17/Solution.VC.db differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/v17/ipch/AutoPCH/39adb33ab77db0cf/MAIN.ipch b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/v17/ipch/AutoPCH/39adb33ab77db0cf/MAIN.ipch new file mode 100644 index 00000000..98adf21b Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/.vs/Tamagochi/v17/ipch/AutoPCH/39adb33ab77db0cf/MAIN.ipch differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi.sln b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi.sln new file mode 100644 index 00000000..f16d9736 --- /dev/null +++ b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34728.123 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tamagochi", "Tamagochi.vcxproj", "{A9DE5E46-FBB1-4C5D-92E6-5F2263EF856F}" +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 + {A9DE5E46-FBB1-4C5D-92E6-5F2263EF856F}.Debug|x64.ActiveCfg = Debug|x64 + {A9DE5E46-FBB1-4C5D-92E6-5F2263EF856F}.Debug|x64.Build.0 = Debug|x64 + {A9DE5E46-FBB1-4C5D-92E6-5F2263EF856F}.Debug|x86.ActiveCfg = Debug|Win32 + {A9DE5E46-FBB1-4C5D-92E6-5F2263EF856F}.Debug|x86.Build.0 = Debug|Win32 + {A9DE5E46-FBB1-4C5D-92E6-5F2263EF856F}.Release|x64.ActiveCfg = Release|x64 + {A9DE5E46-FBB1-4C5D-92E6-5F2263EF856F}.Release|x64.Build.0 = Release|x64 + {A9DE5E46-FBB1-4C5D-92E6-5F2263EF856F}.Release|x86.ActiveCfg = Release|Win32 + {A9DE5E46-FBB1-4C5D-92E6-5F2263EF856F}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {58DC47F7-BAAB-4357-B5D4-3704B659CA4A} + EndGlobalSection +EndGlobal diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi.vcxproj b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi.vcxproj new file mode 100644 index 00000000..b67b0713 --- /dev/null +++ b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi.vcxproj @@ -0,0 +1,145 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {a9de5e46-fbb1-4c5d-92e6-5f2263ef856f} + Tamagochi + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + D:\SFML-2.6.1\include + + + Console + true + D:\SFML-2.6.1\lib + sfml-graphics-d.lib;sfml-window-d.lib;sfml-system-d.lib + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + D:\SFML-2.6.1\include + + + Console + true + true + true + D:\SFML-2.6.1\lib + sfml-graphics.lib;sfml-window.lib;sfml-system.lib + + + + + + + + + + + + + \ No newline at end of file diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi.vcxproj.filters b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi.vcxproj.filters new file mode 100644 index 00000000..abf6aee2 --- /dev/null +++ b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Исходные файлы + + + + + Файлы заголовков + + + Файлы заголовков + + + \ No newline at end of file diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi.vcxproj.user b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi.vcxproj.user new file mode 100644 index 00000000..88a55094 --- /dev/null +++ b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.exe.recipe b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.exe.recipe new file mode 100644 index 00000000..131a79b8 --- /dev/null +++ b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.exe.recipe @@ -0,0 +1,11 @@ + + + + + D:\C++\Tamagochi\x64\Debug\Tamagochi.exe + + + + + + \ No newline at end of file diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.ilk b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.ilk new file mode 100644 index 00000000..4ce265c8 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.ilk differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.log b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.log new file mode 100644 index 00000000..45432d0e --- /dev/null +++ b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.log @@ -0,0 +1,108 @@ + main.cpp +D:\C++\Tamagochi\main.cpp(46,98): warning C4244: аргумент: преобразование "T" в "float", возможна потеря данных +D:\C++\Tamagochi\main.cpp(46,98): warning C4244: with +D:\C++\Tamagochi\main.cpp(46,98): warning C4244: [ +D:\C++\Tamagochi\main.cpp(46,98): warning C4244: T=unsigned int +D:\C++\Tamagochi\main.cpp(46,98): warning C4244: ] +D:\C++\Tamagochi\main.cpp(46,59): warning C4244: аргумент: преобразование "T" в "float", возможна потеря данных +D:\C++\Tamagochi\main.cpp(46,59): warning C4244: with +D:\C++\Tamagochi\main.cpp(46,59): warning C4244: [ +D:\C++\Tamagochi\main.cpp(46,59): warning C4244: T=unsigned int +D:\C++\Tamagochi\main.cpp(46,59): warning C4244: ] +D:\C++\Tamagochi\main.cpp(70,95): warning C4244: аргумент: преобразование "T" в "float", возможна потеря данных +D:\C++\Tamagochi\main.cpp(70,95): warning C4244: with +D:\C++\Tamagochi\main.cpp(70,95): warning C4244: [ +D:\C++\Tamagochi\main.cpp(70,95): warning C4244: T=unsigned int +D:\C++\Tamagochi\main.cpp(70,95): warning C4244: ] +D:\C++\Tamagochi\main.cpp(70,61): warning C4244: аргумент: преобразование "T" в "float", возможна потеря данных +D:\C++\Tamagochi\main.cpp(70,61): warning C4244: with +D:\C++\Tamagochi\main.cpp(70,61): warning C4244: [ +D:\C++\Tamagochi\main.cpp(70,61): warning C4244: T=unsigned int +D:\C++\Tamagochi\main.cpp(70,61): warning C4244: ] +D:\C++\Tamagochi\main.cpp(127,96): warning C4244: аргумент: преобразование "T" в "float", возможна потеря данных +D:\C++\Tamagochi\main.cpp(127,96): warning C4244: with +D:\C++\Tamagochi\main.cpp(127,96): warning C4244: [ +D:\C++\Tamagochi\main.cpp(127,96): warning C4244: T=unsigned int +D:\C++\Tamagochi\main.cpp(127,96): warning C4244: ] +D:\C++\Tamagochi\main.cpp(127,57): warning C4244: аргумент: преобразование "T" в "float", возможна потеря данных +D:\C++\Tamagochi\main.cpp(127,57): warning C4244: with +D:\C++\Tamagochi\main.cpp(127,57): warning C4244: [ +D:\C++\Tamagochi\main.cpp(127,57): warning C4244: T=unsigned int +D:\C++\Tamagochi\main.cpp(127,57): warning C4244: ] +D:\C++\Tamagochi\main.cpp(135,68): warning C4244: аргумент: преобразование "T" в "float", возможна потеря данных +D:\C++\Tamagochi\main.cpp(135,68): warning C4244: with +D:\C++\Tamagochi\main.cpp(135,68): warning C4244: [ +D:\C++\Tamagochi\main.cpp(135,68): warning C4244: T=unsigned int +D:\C++\Tamagochi\main.cpp(135,68): warning C4244: ] +D:\C++\Tamagochi\main.cpp(135,44): warning C4244: аргумент: преобразование "T" в "float", возможна потеря данных +D:\C++\Tamagochi\main.cpp(135,44): warning C4244: with +D:\C++\Tamagochi\main.cpp(135,44): warning C4244: [ +D:\C++\Tamagochi\main.cpp(135,44): warning C4244: T=unsigned int +D:\C++\Tamagochi\main.cpp(135,44): warning C4244: ] +D:\C++\Tamagochi\main.cpp(142,74): warning C4244: аргумент: преобразование "T" в "float", возможна потеря данных +D:\C++\Tamagochi\main.cpp(142,74): warning C4244: with +D:\C++\Tamagochi\main.cpp(142,74): warning C4244: [ +D:\C++\Tamagochi\main.cpp(142,74): warning C4244: T=unsigned int +D:\C++\Tamagochi\main.cpp(142,74): warning C4244: ] +D:\C++\Tamagochi\main.cpp(142,45): warning C4244: аргумент: преобразование "T" в "float", возможна потеря данных +D:\C++\Tamagochi\main.cpp(142,45): warning C4244: with +D:\C++\Tamagochi\main.cpp(142,45): warning C4244: [ +D:\C++\Tamagochi\main.cpp(142,45): warning C4244: T=unsigned int +D:\C++\Tamagochi\main.cpp(142,45): warning C4244: ] +D:\C++\Tamagochi\main.cpp(149,77): warning C4244: аргумент: преобразование "T" в "float", возможна потеря данных +D:\C++\Tamagochi\main.cpp(149,77): warning C4244: with +D:\C++\Tamagochi\main.cpp(149,77): warning C4244: [ +D:\C++\Tamagochi\main.cpp(149,77): warning C4244: T=unsigned int +D:\C++\Tamagochi\main.cpp(149,77): warning C4244: ] +D:\C++\Tamagochi\main.cpp(149,48): warning C4244: аргумент: преобразование "T" в "float", возможна потеря данных +D:\C++\Tamagochi\main.cpp(149,48): warning C4244: with +D:\C++\Tamagochi\main.cpp(149,48): warning C4244: [ +D:\C++\Tamagochi\main.cpp(149,48): warning C4244: T=unsigned int +D:\C++\Tamagochi\main.cpp(149,48): warning C4244: ] +D:\C++\Tamagochi\main.cpp(156,77): warning C4244: аргумент: преобразование "T" в "float", возможна потеря данных +D:\C++\Tamagochi\main.cpp(156,77): warning C4244: with +D:\C++\Tamagochi\main.cpp(156,77): warning C4244: [ +D:\C++\Tamagochi\main.cpp(156,77): warning C4244: T=unsigned int +D:\C++\Tamagochi\main.cpp(156,77): warning C4244: ] +D:\C++\Tamagochi\main.cpp(156,47): warning C4244: аргумент: преобразование "T" в "float", возможна потеря данных +D:\C++\Tamagochi\main.cpp(156,47): warning C4244: with +D:\C++\Tamagochi\main.cpp(156,47): warning C4244: [ +D:\C++\Tamagochi\main.cpp(156,47): warning C4244: T=unsigned int +D:\C++\Tamagochi\main.cpp(156,47): warning C4244: ] +D:\C++\Tamagochi\main.cpp(207,124): warning C4244: аргумент: преобразование "T" в "T", возможна потеря данных +D:\C++\Tamagochi\main.cpp(207,124): warning C4244: with +D:\C++\Tamagochi\main.cpp(207,124): warning C4244: [ +D:\C++\Tamagochi\main.cpp(207,124): warning C4244: T=int +D:\C++\Tamagochi\main.cpp(207,124): warning C4244: ] +D:\C++\Tamagochi\main.cpp(207,124): warning C4244: and +D:\C++\Tamagochi\main.cpp(207,124): warning C4244: [ +D:\C++\Tamagochi\main.cpp(207,124): warning C4244: T=float +D:\C++\Tamagochi\main.cpp(207,124): warning C4244: ] +D:\C++\Tamagochi\main.cpp(207,90): warning C4244: аргумент: преобразование "T" в "T", возможна потеря данных +D:\C++\Tamagochi\main.cpp(207,90): warning C4244: with +D:\C++\Tamagochi\main.cpp(207,90): warning C4244: [ +D:\C++\Tamagochi\main.cpp(207,90): warning C4244: T=int +D:\C++\Tamagochi\main.cpp(207,90): warning C4244: ] +D:\C++\Tamagochi\main.cpp(207,90): warning C4244: and +D:\C++\Tamagochi\main.cpp(207,90): warning C4244: [ +D:\C++\Tamagochi\main.cpp(207,90): warning C4244: T=float +D:\C++\Tamagochi\main.cpp(207,90): warning C4244: ] +D:\C++\Tamagochi\main.cpp(226,101): warning C4244: аргумент: преобразование "T" в "T", возможна потеря данных +D:\C++\Tamagochi\main.cpp(226,101): warning C4244: with +D:\C++\Tamagochi\main.cpp(226,101): warning C4244: [ +D:\C++\Tamagochi\main.cpp(226,101): warning C4244: T=int +D:\C++\Tamagochi\main.cpp(226,101): warning C4244: ] +D:\C++\Tamagochi\main.cpp(226,101): warning C4244: and +D:\C++\Tamagochi\main.cpp(226,101): warning C4244: [ +D:\C++\Tamagochi\main.cpp(226,101): warning C4244: T=float +D:\C++\Tamagochi\main.cpp(226,101): warning C4244: ] +D:\C++\Tamagochi\main.cpp(226,67): warning C4244: аргумент: преобразование "T" в "T", возможна потеря данных +D:\C++\Tamagochi\main.cpp(226,67): warning C4244: with +D:\C++\Tamagochi\main.cpp(226,67): warning C4244: [ +D:\C++\Tamagochi\main.cpp(226,67): warning C4244: T=int +D:\C++\Tamagochi\main.cpp(226,67): warning C4244: ] +D:\C++\Tamagochi\main.cpp(226,67): warning C4244: and +D:\C++\Tamagochi\main.cpp(226,67): warning C4244: [ +D:\C++\Tamagochi\main.cpp(226,67): warning C4244: T=float +D:\C++\Tamagochi\main.cpp(226,67): warning C4244: ] + Tamagochi.vcxproj -> D:\C++\Tamagochi\x64\Debug\Tamagochi.exe diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/CL.command.1.tlog b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/CL.command.1.tlog new file mode 100644 index 00000000..c09d11a9 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/CL.command.1.tlog differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/CL.read.1.tlog b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/CL.read.1.tlog new file mode 100644 index 00000000..f9aff604 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/CL.read.1.tlog differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/CL.write.1.tlog b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/CL.write.1.tlog new file mode 100644 index 00000000..ca9e1ea4 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/CL.write.1.tlog differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/Cl.items.tlog b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/Cl.items.tlog new file mode 100644 index 00000000..724454eb --- /dev/null +++ b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/Cl.items.tlog @@ -0,0 +1 @@ +D:\C++\Tamagochi\main.cpp;D:\C++\Tamagochi\Tamagochi\x64\Debug\main.obj diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/Tamagochi.lastbuildstate b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/Tamagochi.lastbuildstate new file mode 100644 index 00000000..3d628262 --- /dev/null +++ b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/Tamagochi.lastbuildstate @@ -0,0 +1,2 @@ +PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.39.33519:TargetPlatformVersion=10.0.22621.0: +Debug|x64|D:\C++\Tamagochi\| diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/link.command.1.tlog b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/link.command.1.tlog new file mode 100644 index 00000000..bebca922 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/link.command.1.tlog differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/link.read.1.tlog b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/link.read.1.tlog new file mode 100644 index 00000000..65c803a7 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/link.read.1.tlog differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/link.secondary.1.tlog b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/link.secondary.1.tlog new file mode 100644 index 00000000..4389ce51 --- /dev/null +++ b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/link.secondary.1.tlog @@ -0,0 +1,2 @@ +^D:\C++\TAMAGOCHI\TAMAGOCHI\X64\DEBUG\MAIN.OBJ +D:\C++\Tamagochi\Tamagochi\x64\Debug\Tamagochi.ilk diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/link.write.1.tlog b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/link.write.1.tlog new file mode 100644 index 00000000..1e2bdbf5 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/Tamagochi.tlog/link.write.1.tlog differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/main.obj b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/main.obj new file mode 100644 index 00000000..d117eabb Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/main.obj differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/vc143.idb b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/vc143.idb new file mode 100644 index 00000000..37b9a659 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/vc143.idb differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/vc143.pdb b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/vc143.pdb new file mode 100644 index 00000000..c77e660d Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/Tamagochi/x64/Debug/vc143.pdb differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/animal.h b/sem2/KolesovAD/HW4/Tamagochi/animal.h new file mode 100644 index 00000000..6d1afc59 --- /dev/null +++ b/sem2/KolesovAD/HW4/Tamagochi/animal.h @@ -0,0 +1,82 @@ +#pragma once + + +class Animal { +private: + int size; + const int maxSize; + int speedGrowth; + int full; + const int maxFull; + int hydr; + const int maxHydr; + int clean; + const int maxClean; + +public: + Animal(const int _speedGrowth, + const int _full, + const int _hydr, + const int _clean + ) : size{ 5 }, + speedGrowth{ _speedGrowth }, + full{ _full }, + hydr{ _hydr }, + clean{ _clean }, + maxSize{ 100 }, + maxFull{ 50 }, + maxHydr{ 150 }, + maxClean{ 150 } + { + + } + + void live() { + catGrow(); + + decreaseFull(1); + decreaseHydr(1); + decreaseClean(1); + } + + bool isDead() { + return 0 == size or 0 == clean or 0 == hydr; + } + + bool isSuccess() { + return maxSize <= size; + } + + void catGrow() { + if (maxFull <= full) { + full = 25; + increaseSize(); + } + else if (0 >= full) { + full = 49; + decreaseSize(); + } + } + + void increaseSize() { if (size < maxSize) size += speedGrowth; } + void decreaseSize() { if (size > 0) size -= speedGrowth; } + + void increaseFull(const int value) { full = std::min(full + value, maxFull); } + void decreaseFull(const int value) { if (full > 0) full -= value; } + + void increaseHydr(const int value) { hydr = std::min(hydr + value, maxHydr); } + void decreaseHydr(const int value) { if (hydr > 0) hydr -= value; } + + void increaseClean(const int value) { clean = std::min(clean + value, maxClean); } + void decreaseClean(const int value) { if (clean > 0) clean -= value; } + + const int getSpeedGrowth() { return speedGrowth; } + const int getSize() { return size; } + const int getMaxSize() { return maxSize; } + const int getFull() { return full; } + const int getMaxFull() { return maxFull; } + const int getHydr() { return hydr; } + const int getMaxHydr() { return maxHydr; } + const int getClean() { return clean; } + const int getMaxClean() { return maxClean; } +}; \ No newline at end of file diff --git a/sem2/KolesovAD/HW4/Tamagochi/arial.ttf b/sem2/KolesovAD/HW4/Tamagochi/arial.ttf new file mode 100644 index 00000000..ff0815cd Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/arial.ttf differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/cat1.png b/sem2/KolesovAD/HW4/Tamagochi/cat1.png new file mode 100644 index 00000000..51b2f427 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/cat1.png differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/cat2.png b/sem2/KolesovAD/HW4/Tamagochi/cat2.png new file mode 100644 index 00000000..1298554c Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/cat2.png differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/catButton.png b/sem2/KolesovAD/HW4/Tamagochi/catButton.png new file mode 100644 index 00000000..5967ebc8 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/catButton.png differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/chinchilla1.png b/sem2/KolesovAD/HW4/Tamagochi/chinchilla1.png new file mode 100644 index 00000000..00a83992 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/chinchilla1.png differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/chinchilla2.png b/sem2/KolesovAD/HW4/Tamagochi/chinchilla2.png new file mode 100644 index 00000000..06f0ddaa Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/chinchilla2.png differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/chinchillaButton.png b/sem2/KolesovAD/HW4/Tamagochi/chinchillaButton.png new file mode 100644 index 00000000..8953ecb7 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/chinchillaButton.png differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/clean.png b/sem2/KolesovAD/HW4/Tamagochi/clean.png new file mode 100644 index 00000000..53190c57 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/clean.png differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/cleanButton.png b/sem2/KolesovAD/HW4/Tamagochi/cleanButton.png new file mode 100644 index 00000000..41d027a5 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/cleanButton.png differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/dog1.png b/sem2/KolesovAD/HW4/Tamagochi/dog1.png new file mode 100644 index 00000000..ebd95df3 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/dog1.png differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/dog2.png b/sem2/KolesovAD/HW4/Tamagochi/dog2.png new file mode 100644 index 00000000..7883909d Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/dog2.png differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/dogButton.png b/sem2/KolesovAD/HW4/Tamagochi/dogButton.png new file mode 100644 index 00000000..7c0472ef Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/dogButton.png differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/full.png b/sem2/KolesovAD/HW4/Tamagochi/full.png new file mode 100644 index 00000000..6b4d66c1 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/full.png differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/fullButton.png b/sem2/KolesovAD/HW4/Tamagochi/fullButton.png new file mode 100644 index 00000000..dab1a20a Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/fullButton.png differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/hydr.png b/sem2/KolesovAD/HW4/Tamagochi/hydr.png new file mode 100644 index 00000000..0aa1a507 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/hydr.png differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/hydrButton.png b/sem2/KolesovAD/HW4/Tamagochi/hydrButton.png new file mode 100644 index 00000000..63c48096 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/hydrButton.png differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/info.h b/sem2/KolesovAD/HW4/Tamagochi/info.h new file mode 100644 index 00000000..0b4e2350 --- /dev/null +++ b/sem2/KolesovAD/HW4/Tamagochi/info.h @@ -0,0 +1,33 @@ +#pragma once + +#include +#include +#include + +class Info { +private: + std::vector> values; + +public: + Info(int n, ...) { + int result = 0; + va_list f; + va_start(f, n); + for (int i = 0; i < n; i += 2) { + int arg1 = va_arg(f, int); + int arg2 = va_arg(f, int); + values.push_back( + std::make_pair(arg1, arg2)); + } + va_end(f); + } + + std::string getStr() { + std::string str = ""; + for (auto v : values) { + str += std::to_string(v.first) + " / " + + std::to_string(v.second) + '\t'; + } + return str; + } +}; \ No newline at end of file diff --git a/sem2/KolesovAD/HW4/Tamagochi/main.cpp b/sem2/KolesovAD/HW4/Tamagochi/main.cpp new file mode 100644 index 00000000..76f3c3fb --- /dev/null +++ b/sem2/KolesovAD/HW4/Tamagochi/main.cpp @@ -0,0 +1,271 @@ +#include +#include "animal.h" +#include "info.h" +#include "iostream" +#include "chrono" + +void updateAnimalPicture(const sf::Texture& texture, sf::Sprite& sprite, + std::chrono::time_point& startTime) { + sprite.setTexture(texture); + startTime = std::chrono::high_resolution_clock::now(); +} + + +int main() { + sf::RenderWindow window(sf::VideoMode::getDesktopMode(), "Tamagochi"); + window.setFramerateLimit(60); + + sf::Event event; + + sf::Font font; + if (!font.loadFromFile("arial.ttf")) { + std::cout << "Error"; + } + + sf::Texture fullButtonTexture; + sf::Texture hydrButtonTexture; + sf::Texture cleanButtonTexture; + if (!fullButtonTexture.loadFromFile("fullButton.png") or !hydrButtonTexture.loadFromFile("hydrButton.png") or !cleanButtonTexture.loadFromFile("cleanButton.png")) { + std::cout << "Error"; + } + sf::Texture charButtonTextures[3]; + charButtonTextures[0] = fullButtonTexture; + charButtonTextures[1] = hydrButtonTexture; + charButtonTextures[2] = cleanButtonTexture; + + sf::Sprite fullButtonSprite; + sf::Sprite hydrButtonSprite; + sf::Sprite cleanButtonSprite; + sf::Sprite charButtonSprites[3]; + charButtonSprites[0] = fullButtonSprite; + charButtonSprites[1] = hydrButtonSprite; + charButtonSprites[2] = cleanButtonSprite; + sf::FloatRect buttonsCoords[3]; + for (int i = 0; i < 3; i++) { + charButtonSprites[i].setTexture(charButtonTextures[i]); + charButtonSprites[i].setPosition(window.getSize().x / 2 + i * 250, 3 * window.getSize().y / 10 - 50); + buttonsCoords[i] = charButtonSprites[i].getGlobalBounds(); + } + + sf::Texture catButtonTexture; + sf::Texture dogButtonTexture; + sf::Texture chinchillaButtonTexture; + if (!catButtonTexture.loadFromFile("catButton.png") or !dogButtonTexture.loadFromFile("dogButton.png") or !chinchillaButtonTexture.loadFromFile("chinchillaButton.png")) { + std::cout << "Error"; + } + sf::Texture animalButtonTextures[3]; + animalButtonTextures[0] = catButtonTexture; + animalButtonTextures[1] = dogButtonTexture; + animalButtonTextures[2] = chinchillaButtonTexture; + + sf::Sprite catButtonSprite; + sf::Sprite dogButtonSprite; + sf::Sprite chinchillaButtonSprite; + sf::Sprite animalButtonSprites[3]; + animalButtonSprites[0] = catButtonSprite; + animalButtonSprites[1] = dogButtonSprite; + animalButtonSprites[2] = chinchillaButtonSprite; + for (int i = 0; i < 3; i++) { + animalButtonSprites[i].setTexture(animalButtonTextures[i]); + animalButtonSprites[i].setPosition(window.getSize().x / 3 + i * 250, window.getSize().y / 3 + 100); + } + + sf::Texture catTexture1; + sf::Texture catTexture2; + sf::Texture dogTexture1; + sf::Texture dogTexture2; + sf::Texture chinchillaTexture1; + sf::Texture chinchillaTexture2; + if (!catTexture1.loadFromFile("cat1.png") or !catTexture2.loadFromFile("cat2.png") or !dogTexture1.loadFromFile("dog1.png") or !dogTexture2.loadFromFile("dog2.png") or !chinchillaTexture1.loadFromFile("chinchilla1.png") or !chinchillaTexture2.loadFromFile("chinchilla2.png")) { + std::cout << "Error"; + } + + sf::Texture animalTextures1[3]; + animalTextures1[0] = catTexture1; + animalTextures1[1] = dogTexture1; + animalTextures1[2] = chinchillaTexture1; + sf::Texture animalTextures2[3]; + animalTextures2[0] = catTexture2; + animalTextures2[1] = dogTexture2; + animalTextures2[2] = chinchillaTexture2; + + sf::Texture animalTexture1; + sf::Texture animalTexture2; + sf::Sprite animalSprite; + + bool isAnimal = false; + Animal animal(1, 30, 150, 150); + Info info(8, animal.getSize(), animal.getMaxSize(), + animal.getFull(), animal.getMaxFull(), + animal.getHydr(), animal.getMaxHydr(), + animal.getClean(), animal.getMaxClean()); + + sf::Texture sizeTexture; + sf::Texture fullTexture; + sf::Texture hydrTexture; + sf::Texture cleanTexture; + if (!sizeTexture.loadFromFile("size.png") or !fullTexture.loadFromFile("full.png") or !hydrTexture.loadFromFile("hydr.png") or !cleanTexture.loadFromFile("clean.png")) { + std::cout << "Error"; + } + sf::Texture charTextures[4]; + charTextures[0] = sizeTexture; + charTextures[1] = fullTexture; + charTextures[2] = hydrTexture; + charTextures[3] = cleanTexture; + + sf::Sprite sizeSprite; + sf::Sprite fullSprite; + sf::Sprite hydrSprite; + sf::Sprite cleanSprite; + sf::Sprite charSprites[4]; + charSprites[0] = sizeSprite; + charSprites[1] = fullSprite; + charSprites[2] = hydrSprite; + charSprites[3] = cleanSprite; + for (int i = 0; i < 4; i++) { + charSprites[i].setTexture(charTextures[i]); + charSprites[i].setPosition(window.getSize().x / 2 + 5 + i * 160, 2 * window.getSize().y / 10 - 50); + } + + sf::Text animalText; + animalText.setFont(font); + animalText.setFillColor(sf::Color::Black); + animalText.setString(info.getStr()); + animalText.setCharacterSize(35); + animalText.setPosition(window.getSize().x / 2, window.getSize().y / 10); + + sf::Text winText; + winText.setFont(font); + winText.setFillColor(sf::Color::Black); + winText.setString("You won!"); + winText.setCharacterSize(40); + winText.setPosition(window.getSize().x / 2 - 50, window.getSize().y / 3 + 50); + + sf::Text defeatText; + defeatText.setFont(font); + defeatText.setFillColor(sf::Color::Black); + defeatText.setString("You lost"); + defeatText.setCharacterSize(40); + defeatText.setPosition(window.getSize().x / 2 - 50, window.getSize().y / 3 + 50); + + sf::Text startText; + startText.setFont(font); + startText.setFillColor(sf::Color::Black); + startText.setString("Choose your animal"); + startText.setCharacterSize(40); + startText.setPosition(window.getSize().x / 2 - 150, window.getSize().y / 3 + 50); + + std::chrono::time_point startTime + = std::chrono::high_resolution_clock::now(); + + bool isPaused = false; + + std::string chars[3]; + chars[0] = "full"; + chars[1] = "hydr"; + chars[2] = "clean"; + + int ticks = 0; + + while (window.isOpen()) { + if (animal.isDead()) { + window.clear(sf::Color::White); + window.draw(defeatText); + window.display(); + } + else if (animal.isSuccess()) { + window.clear(sf::Color::White); + window.draw(winText); + window.display(); + } + else if (isAnimal && !isPaused && ticks >= 7) { + animal.live(); + ticks = 0; + } + else if (!isAnimal) { + window.clear(sf::Color::White); + window.draw(startText); + for (int i = 0; i < 3; i++) { + window.draw(animalButtonSprites[i]); + } + window.display(); + } + animalSprite.setScale(sf::Vector2f(float(animal.getSize()) / animal.getMaxSize(), + float(animal.getSize()) / animal.getMaxSize())); + + while (window.pollEvent(event)) { + if (event.type == sf::Event::Closed) window.close(); + + std::chrono::duration duration = + std::chrono::high_resolution_clock::now() - startTime; + if (duration.count() > 1) { + animalSprite.setTexture(animalTexture1); + } + + if (!isAnimal && event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left) { + for (int i = 0; i < 3; i++) { + if (animalButtonSprites[i].getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) { + animalTexture1 = animalTextures1[i]; + animalTexture2 = animalTextures2[i]; + animalSprite.setTexture(animalTexture1); + animalSprite.scale(sf::Vector2f(.01f, .01f)); + isAnimal = true; + } + } + } + + if (!animal.isDead() && !animal.isSuccess()) { + if (isAnimal && event.type == sf::Event::KeyPressed) { + if (event.key.code == sf::Keyboard::Escape) { + isPaused = !isPaused; + updateAnimalPicture(animalTexture1, animalSprite, startTime); + } + } + if (isAnimal && event.type == sf::Event::MouseButtonPressed and event.mouseButton.button == sf::Mouse::Left and !isPaused) { + for (int i = 0; i < 3; i++) { + if (buttonsCoords[i].contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) { + if (i == 0) { + animal.increaseFull(15); + updateAnimalPicture(animalTexture2, animalSprite, startTime); + } + else if ("hydr" == chars[i]) { + animal.increaseHydr(30); + updateAnimalPicture(animalTexture1, animalSprite, startTime); + } + else { + animal.increaseClean(30); + updateAnimalPicture(animalTexture1, animalSprite, startTime); + } + } + } + } + } + } + + if (isAnimal && !animal.isDead() && !animal.isSuccess()) { + if (!isPaused) { + ticks++; + } + + Info info(8, animal.getSize(), animal.getMaxSize(), + animal.getFull(), animal.getMaxFull(), + animal.getHydr(), animal.getMaxHydr(), + animal.getClean(), animal.getMaxClean()); + animalText.setString(info.getStr()); + + window.clear(sf::Color::White); + window.draw(animalSprite); + for (int i = 0; i < 4; i++) { + window.draw(charSprites[i]); + } + for (int i = 0; i < 3; i++) { + window.draw(charButtonSprites[i]); + } + + window.draw(animalText); + window.display(); + } + } + + return 0; +} \ No newline at end of file diff --git a/sem2/KolesovAD/HW4/Tamagochi/sfml-graphics-2.dll b/sem2/KolesovAD/HW4/Tamagochi/sfml-graphics-2.dll new file mode 100644 index 00000000..af9c6db0 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/sfml-graphics-2.dll differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/sfml-graphics-d-2.dll b/sem2/KolesovAD/HW4/Tamagochi/sfml-graphics-d-2.dll new file mode 100644 index 00000000..20eef4da Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/sfml-graphics-d-2.dll differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/sfml-system-2.dll b/sem2/KolesovAD/HW4/Tamagochi/sfml-system-2.dll new file mode 100644 index 00000000..db1fc198 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/sfml-system-2.dll differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/sfml-system-d-2.dll b/sem2/KolesovAD/HW4/Tamagochi/sfml-system-d-2.dll new file mode 100644 index 00000000..1d403457 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/sfml-system-d-2.dll differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/sfml-window-2.dll b/sem2/KolesovAD/HW4/Tamagochi/sfml-window-2.dll new file mode 100644 index 00000000..025e5256 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/sfml-window-2.dll differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/sfml-window-d-2.dll b/sem2/KolesovAD/HW4/Tamagochi/sfml-window-d-2.dll new file mode 100644 index 00000000..450c67be Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/sfml-window-d-2.dll differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/size.png b/sem2/KolesovAD/HW4/Tamagochi/size.png new file mode 100644 index 00000000..1aec0627 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/size.png differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/x64/Debug/Tamagochi.exe b/sem2/KolesovAD/HW4/Tamagochi/x64/Debug/Tamagochi.exe new file mode 100644 index 00000000..ead4831f Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/x64/Debug/Tamagochi.exe differ diff --git a/sem2/KolesovAD/HW4/Tamagochi/x64/Debug/Tamagochi.pdb b/sem2/KolesovAD/HW4/Tamagochi/x64/Debug/Tamagochi.pdb new file mode 100644 index 00000000..ee257391 Binary files /dev/null and b/sem2/KolesovAD/HW4/Tamagochi/x64/Debug/Tamagochi.pdb differ diff --git a/sem2/KolesovAD/Practice/Dino.h b/sem2/KolesovAD/Practice/Dino.h new file mode 100644 index 00000000..9f084c05 --- /dev/null +++ b/sem2/KolesovAD/Practice/Dino.h @@ -0,0 +1,145 @@ +#pragma once +#include +#include +#include +#include +#include + + +enum Terrain { PLAIN, RIVER, MOUNTAIN }; + +class Dino { +protected: + int STR; + int DEX; + int INT; + int HP; + std::string NAME; + int COST; + sf::Sprite* dinoSprite; +public: + virtual double damage(Terrain terr) = 0; + + virtual ~Dino() = default; + + std::string dinoInfo() { + return NAME + "\t" + "STR: " + std::to_string(STR) + "\t" + "DEX: " + std::to_string(DEX) + "\t" + "INT: " + std::to_string(INT) + "\t" + "HP: " + std::to_string(HP); + } + + sf::Sprite& sprite() { + return *dinoSprite; + } + + std::string buyInfo() { + return NAME + "\t" + "cost: " + std::to_string(COST); + } + + std::string info() { + return NAME + " " + std::to_string(STR) + " " + std::to_string(DEX) + " " + std::to_string(INT) + " " + std::to_string(HP); + } + + void takeDamage(int damage) { + HP = std::max(HP - damage, 0); + } + + int getHP() { + return HP; + } + + std::string getName() { + return NAME; + } + + int getCost() { + return COST; + } + + void changeTexture(sf::Texture& texture, int x, int y) { + dinoSprite->setTexture(texture); + dinoSprite->setPosition(x, y); + } +}; + + +class DinoStr : public Dino { +public: + double damage(Terrain terr) override { + if (terr == PLAIN) { + return STR * 2; + } + else if (terr == RIVER) { + return DEX; + } + else { + return INT; + } + } + DinoStr(std::string name, sf::Texture &texture, int x, int y, int cost = 100, int strength = rand() % 21 + 10, int dexterity = rand() % 21 + 10, int intelligence = rand() % 21 + 10, int hp = 100) { + STR = strength; + DEX = dexterity; + INT = intelligence; + HP = hp; + NAME = name; + COST = cost; + dinoSprite = new sf::Sprite; + dinoSprite->setTexture(texture); + dinoSprite->setPosition(x, y); + } + ~DinoStr() {} +}; + + +class DinoDex : public Dino { +public: + double damage(Terrain terr) override { + if (terr == PLAIN) { + return STR; + } + else if (terr == RIVER) { + return DEX * 2; + } + else { + return INT; + } + } + DinoDex(std::string name, sf::Texture &texture, int x, int y, int cost = 100, int strength = rand() % 21 + 10, int dexterity = rand() % 21 + 10, int intelligence = rand() % 21 + 10, int hp = 100) { + STR = strength; + DEX = dexterity; + INT = intelligence; + HP = hp; + NAME = name; + COST = cost; + dinoSprite = new sf::Sprite; + dinoSprite->setTexture(texture); + dinoSprite->setPosition(x, y); + } + ~DinoDex() {} +}; + + +class DinoInt : public Dino { +public: + double damage(Terrain terr) override { + if (terr == PLAIN) { + return STR; + } + else if (terr == RIVER) { + return DEX; + } + else { + return INT * 2; + } + } + DinoInt(std::string name, sf::Texture &texture, int x, int y, int cost = 100, int strength = rand() % 21 + 10, int dexterity = rand() % 21 + 10, int intelligence = rand() % 21 + 10, int hp = 100) { + STR = strength; + DEX = dexterity; + INT = intelligence; + HP = hp; + NAME = name; + COST = cost; + dinoSprite = new sf::Sprite; + dinoSprite->setTexture(texture); + dinoSprite->setPosition(x, y); + } + ~DinoInt() {} +}; \ No newline at end of file diff --git a/sem2/KolesovAD/Practice/arial.ttf b/sem2/KolesovAD/Practice/arial.ttf new file mode 100644 index 00000000..ff0815cd Binary files /dev/null and b/sem2/KolesovAD/Practice/arial.ttf differ diff --git a/sem2/KolesovAD/Practice/img/backButton.png b/sem2/KolesovAD/Practice/img/backButton.png new file mode 100644 index 00000000..95477cb9 Binary files /dev/null and b/sem2/KolesovAD/Practice/img/backButton.png differ diff --git a/sem2/KolesovAD/Practice/img/brachio1.png b/sem2/KolesovAD/Practice/img/brachio1.png new file mode 100644 index 00000000..efee88e0 Binary files /dev/null and b/sem2/KolesovAD/Practice/img/brachio1.png differ diff --git a/sem2/KolesovAD/Practice/img/brachio2.png b/sem2/KolesovAD/Practice/img/brachio2.png new file mode 100644 index 00000000..2a3d35c2 Binary files /dev/null and b/sem2/KolesovAD/Practice/img/brachio2.png differ diff --git a/sem2/KolesovAD/Practice/img/buyButton.png b/sem2/KolesovAD/Practice/img/buyButton.png new file mode 100644 index 00000000..e2d953a6 Binary files /dev/null and b/sem2/KolesovAD/Practice/img/buyButton.png differ diff --git a/sem2/KolesovAD/Practice/img/dinosButton.png b/sem2/KolesovAD/Practice/img/dinosButton.png new file mode 100644 index 00000000..0243a02c Binary files /dev/null and b/sem2/KolesovAD/Practice/img/dinosButton.png differ diff --git a/sem2/KolesovAD/Practice/img/diplo1.png b/sem2/KolesovAD/Practice/img/diplo1.png new file mode 100644 index 00000000..ead9a40d Binary files /dev/null and b/sem2/KolesovAD/Practice/img/diplo1.png differ diff --git a/sem2/KolesovAD/Practice/img/diplo2.png b/sem2/KolesovAD/Practice/img/diplo2.png new file mode 100644 index 00000000..115cdb69 Binary files /dev/null and b/sem2/KolesovAD/Practice/img/diplo2.png differ diff --git a/sem2/KolesovAD/Practice/img/exitButton.png b/sem2/KolesovAD/Practice/img/exitButton.png new file mode 100644 index 00000000..85853b39 Binary files /dev/null and b/sem2/KolesovAD/Practice/img/exitButton.png differ diff --git a/sem2/KolesovAD/Practice/img/fightButton.png b/sem2/KolesovAD/Practice/img/fightButton.png new file mode 100644 index 00000000..00408fa4 Binary files /dev/null and b/sem2/KolesovAD/Practice/img/fightButton.png differ diff --git a/sem2/KolesovAD/Practice/img/stego1.png b/sem2/KolesovAD/Practice/img/stego1.png new file mode 100644 index 00000000..d5bf3963 Binary files /dev/null and b/sem2/KolesovAD/Practice/img/stego1.png differ diff --git a/sem2/KolesovAD/Practice/img/stego2.png b/sem2/KolesovAD/Practice/img/stego2.png new file mode 100644 index 00000000..c4de88f2 Binary files /dev/null and b/sem2/KolesovAD/Practice/img/stego2.png differ diff --git a/sem2/KolesovAD/Practice/img/tirex1.png b/sem2/KolesovAD/Practice/img/tirex1.png new file mode 100644 index 00000000..9bb38cb4 Binary files /dev/null and b/sem2/KolesovAD/Practice/img/tirex1.png differ diff --git a/sem2/KolesovAD/Practice/img/tirex2.png b/sem2/KolesovAD/Practice/img/tirex2.png new file mode 100644 index 00000000..ffefd64d Binary files /dev/null and b/sem2/KolesovAD/Practice/img/tirex2.png differ diff --git a/sem2/KolesovAD/Practice/img/tomb.png b/sem2/KolesovAD/Practice/img/tomb.png new file mode 100644 index 00000000..3339aa54 Binary files /dev/null and b/sem2/KolesovAD/Practice/img/tomb.png differ diff --git a/sem2/KolesovAD/Practice/img/tricera1.png b/sem2/KolesovAD/Practice/img/tricera1.png new file mode 100644 index 00000000..543dada0 Binary files /dev/null and b/sem2/KolesovAD/Practice/img/tricera1.png differ diff --git a/sem2/KolesovAD/Practice/img/tricera2.png b/sem2/KolesovAD/Practice/img/tricera2.png new file mode 100644 index 00000000..33076284 Binary files /dev/null and b/sem2/KolesovAD/Practice/img/tricera2.png differ diff --git a/sem2/KolesovAD/Practice/log.txt b/sem2/KolesovAD/Practice/log.txt new file mode 100644 index 00000000..b3d46510 --- /dev/null +++ b/sem2/KolesovAD/Practice/log.txt @@ -0,0 +1,10 @@ +ash: 0 +Dino STR DEX INT HP +Triceratops 13 15 13 100 +Triceratops 13 15 13 100 +Triceratops 13 15 13 100 +Triceratops 13 15 13 100 +Diplodocus 15 19 23 70 +Diplodocus 12 27 24 100 +Diplodocus 12 27 24 100 +end 0 0 0 0 \ No newline at end of file diff --git a/sem2/KolesovAD/Practice/main.cpp b/sem2/KolesovAD/Practice/main.cpp new file mode 100644 index 00000000..01aeeba1 --- /dev/null +++ b/sem2/KolesovAD/Practice/main.cpp @@ -0,0 +1,1085 @@ +#include "Dino.h" +#include + +enum Wind { START, DINOS, BUY, FIGHT, WIN, LOSE, TIE }; + + +void save(std::vector& dinosStr, std::vector& dinosDex, std::vector& dinosInt, int& cash) { + std::ofstream outStream; + outStream.open("log.txt"); + if (outStream.is_open()) { + outStream << "ash: " << cash << std::endl; + outStream << "Dino STR DEX INT HP" << std::endl; + for (DinoStr dinoStr : dinosStr) { + outStream << dinoStr.info() << std::endl; + } + for (DinoDex dinoDex : dinosDex) { + outStream << dinoDex.info() << std::endl; + } + for (DinoInt dinoInt : dinosInt) { + outStream << dinoInt.info() << std::endl; + } + outStream << "end 0 0 0 0"; + } + outStream.close(); +} + + +Dino& chooseDino(std::vector& dinosStr, std::vector& dinosDex, std::vector& dinosInt, int number) { + if (number <= dinosStr.size()) { + DinoStr& dino1 = dinosStr[number - 1]; + return dino1; + } + if (number <= dinosStr.size() + dinosDex.size()) { + DinoDex& dino2 = dinosDex[number - dinosStr.size() - 1]; + return dino2; + } + DinoInt& dino3 = dinosInt[number - dinosStr.size() - dinosDex.size() - 1]; + return dino3; +} + + +Dino& chooseEnemyDino(std::vector& dinosStr1, std::vector& dinosDex1, std::vector& dinosInt1, int number) { + if (number <= dinosStr1.size()) { + DinoStr& enemyDino1 = dinosStr1[number - 1]; + return enemyDino1; + } + if (number <= dinosStr1.size() + dinosDex1.size()) { + DinoDex& enemyDino2 = dinosDex1[number - dinosStr1.size() - 1]; + return enemyDino2; + } + DinoInt& enemyDino3 = dinosInt1[number - dinosStr1.size() - dinosDex1.size() - 1]; + return enemyDino3; +} + + +int main() { + srand(time(0)); + sf::RenderWindow window(sf::VideoMode::getDesktopMode(), "Dino Fight"); + window.setFramerateLimit(60); + + sf::Event event; + + sf::Font font; + if (!font.loadFromFile("arial.ttf")) { + std::cout << "Error"; + } + + Terrain terrain; + + sf::Texture brachioTexture1; + sf::Texture brachioTexture2; + sf::Texture tirexTexture1; + sf::Texture tirexTexture2; + sf::Texture stegoTexture1; + sf::Texture stegoTexture2; + sf::Texture triceraTexture1; + sf::Texture triceraTexture2; + sf::Texture diploTexture1; + sf::Texture diploTexture2; + sf::Texture tombTexture; + + if (!brachioTexture1.loadFromFile("img/brachio1.png") or !brachioTexture2.loadFromFile("img/brachio2.png") or + !tirexTexture1.loadFromFile("img/tirex1.png") or !tirexTexture2.loadFromFile("img/tirex2.png") or + !stegoTexture1.loadFromFile("img/stego1.png") or !stegoTexture2.loadFromFile("img/stego2.png") or + !triceraTexture1.loadFromFile("img/tricera1.png") or !triceraTexture2.loadFromFile("img/tricera2.png") or + !diploTexture1.loadFromFile("img/diplo1.png") or !diploTexture2.loadFromFile("img/diplo2.png") or + !tombTexture.loadFromFile("img/tomb.png")) { + std::cout << "Error"; + } + + sf::Texture textures1[5]; + textures1[0] = brachioTexture1; + textures1[1] = tirexTexture1; + textures1[2] = stegoTexture1; + textures1[3] = triceraTexture1; + textures1[4] = diploTexture1; + + sf::Texture textures2[5]; + textures2[0] = brachioTexture2; + textures2[1] = tirexTexture2; + textures2[2] = stegoTexture2; + textures2[3] = triceraTexture2; + textures2[4] = diploTexture2; + + sf::Texture buyButtonTexture; + sf::Texture fightButtonTexture; + sf::Texture dinosButtonTexture; + sf::Texture exitButtonTexture; + if (!buyButtonTexture.loadFromFile("img/buyButton.png") or !fightButtonTexture.loadFromFile("img/fightButton.png") or + !dinosButtonTexture.loadFromFile("img/dinosButton.png") or !exitButtonTexture.loadFromFile("img/exitButton.png")) { + std::cout << "Error"; + } + sf::Texture menuButtonTextures[4]; + menuButtonTextures[0] = buyButtonTexture; + menuButtonTextures[1] = fightButtonTexture; + menuButtonTextures[2] = dinosButtonTexture; + menuButtonTextures[3] = exitButtonTexture; + + sf::Sprite buyButtonSprite; + sf::Sprite fightButtonSprite; + sf::Sprite dinosButtonSprite; + sf::Sprite exitButtonSprite; + sf::Sprite menuButtonSprites[4]; + menuButtonSprites[0] = buyButtonSprite; + menuButtonSprites[1] = fightButtonSprite; + menuButtonSprites[2] = dinosButtonSprite; + menuButtonSprites[3] = exitButtonSprite; + sf::FloatRect menuButtonsCoords[4]; + for (int i = 0; i < 4; i++) { + menuButtonSprites[i].setTexture(menuButtonTextures[i]); + menuButtonSprites[i].setPosition(window.getSize().x / 2 - 100, (i + 1) * window.getSize().y / 6 - 50); + menuButtonsCoords[i] = menuButtonSprites[i].getGlobalBounds(); + } + + sf::Texture backButtonTexture; + if (!backButtonTexture.loadFromFile("img/backButton.png")) { + std::cout << "Error"; + } + sf::Sprite backButtonSprite; + backButtonSprite.setTexture(backButtonTexture); + backButtonSprite.setPosition(window.getSize().x / 2 - 100, 4 * window.getSize().y / 6 - 50); + + std::fstream inStream("log.txt", std::ios_base::in); + std::string cashText; + int cash; + inStream >> cashText >> cash; + std::vector dinosStr; + std::vector dinosDex; + std::vector dinosInt; + std::vector activeDinos; + + std::vector dinosStr1; + std::vector dinosDex1; + std::vector dinosInt1; + + std::string dinoNameText, strengthText, dexterityText, intelligenceText, hpText; + inStream >> dinoNameText >> strengthText >> dexterityText >> intelligenceText >> hpText; + std::string dinoName; + int strength, dexterity, intelligence, hp; + int i = 0; + while (!inStream.eof()) { + inStream >> dinoName >> strength >> dexterity >> intelligence >> hp; + if (dinoName != "end") { + if (dinoName == "Tyrannosaurus") { + DinoStr newDino(dinoName, tirexTexture1, 100, 100 + i * 130, 100, strength, dexterity, intelligence, hp); + dinosStr.push_back(newDino); + activeDinos.push_back(false); + } + else if (dinoName == "Brachiosaurus") { + DinoStr newDino(dinoName, brachioTexture1, 100, 100 + i * 130, 100, strength, dexterity, intelligence, hp); + dinosStr.push_back(newDino); + activeDinos.push_back(false); + } + else if (dinoName == "Stegosaurus") { + DinoDex newDino(dinoName, stegoTexture1, 100, 100 + i * 130, 100, strength, dexterity, intelligence, hp); + dinosDex.push_back(newDino); + activeDinos.push_back(false); + } + else if (dinoName == "Triceratops") { + DinoDex newDino(dinoName, triceraTexture1, 100, 100 + i * 130, 100, strength, dexterity, intelligence, hp); + dinosDex.push_back(newDino); + activeDinos.push_back(false); + } + else { + DinoInt newDino(dinoName, diploTexture1, 100, 100 + i * 130, 100, strength, dexterity, intelligence, hp); + dinosInt.push_back(newDino); + activeDinos.push_back(false); + } + i++; + } + } + + Wind wind = START; + int activeCount = 0; + int activeDinosIndexes[3]; + + sf::Text cashText_; + cashText_.setFont(font); + cashText_.setFillColor(sf::Color::Magenta); + cashText_.setString("Your cash: " + std::to_string(cash)); + cashText_.setCharacterSize(30); + cashText_.setPosition(3 * window.getSize().x / 4 + 150, window.getSize().y / 3); + + + std::vector names; + names.push_back("Brachiosaurus"); + names.push_back("Tyrannosaurus"); + names.push_back("Stegosaurus"); + names.push_back("Triceratops"); + names.push_back("Diplodocus"); + + std::vector baseDinosStr; + std::vector baseDinosDex; + std::vector baseDinosInt; + std::vector buyDinoTexts; + + sf::Text winText; + winText.setFont(font); + winText.setFillColor(sf::Color::Magenta); + winText.setString("You won!"); + winText.setCharacterSize(40); + winText.setPosition(window.getSize().x / 2 - 50, window.getSize().y / 3 + 50); + + sf::Text defeatText; + defeatText.setFont(font); + defeatText.setFillColor(sf::Color::Magenta); + defeatText.setString("You lost"); + defeatText.setCharacterSize(40); + defeatText.setPosition(window.getSize().x / 2 - 50, window.getSize().y / 3 + 50); + + sf::Text tieText; + tieText.setFont(font); + tieText.setFillColor(sf::Color::Magenta); + tieText.setString("It's a tie!"); + tieText.setCharacterSize(40); + tieText.setPosition(window.getSize().x / 2 - 50, window.getSize().y / 3 + 50); + + sf::Text dinoText; + dinoText.setFont(font); + dinoText.setFillColor(sf::Color::Magenta); + dinoText.setCharacterSize(30); + + sf::Text fightText; + fightText.setFont(font); + fightText.setFillColor(sf::Color::Magenta); + fightText.setCharacterSize(30); + + sf::Text terrainText; + terrainText.setFont(font); + terrainText.setFillColor(sf::Color::Magenta); + terrainText.setCharacterSize(40); + terrainText.setPosition(7 * window.getSize().x / 8, window.getSize().y / 3); + while (window.isOpen()) { + while (window.pollEvent(event)) { + if (event.type == sf::Event::Closed) window.close(); + + if (wind == START) { + if (event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left) { + for (int i = 0; i < 4; i++) { + if (menuButtonsCoords[i].contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) { + if (i == 0) { + for (int i = 0; i < 5; i++) { + buyDinoTexts.push_back(new sf::Text); + } + + for (sf::Text* buyDinoText : buyDinoTexts) { + buyDinoText->setFont(font); + buyDinoText->setFillColor(sf::Color::Magenta); + buyDinoText->setCharacterSize(30); + } + for (int i = 0; i < 2; i++) { + DinoStr newBaseDinoStr(names[i], textures1[i], 100, 100 + i * 130, 100 * (i + 1)); + baseDinosStr.push_back(newBaseDinoStr); + buyDinoTexts[i]->setString(baseDinosStr[i].buyInfo()); + buyDinoTexts[i]->setPosition(350, 100 + i * 130); + } + for (int i = 0; i < 2; i++) { + DinoDex newBaseDinoDex(names[i + 2], textures1[i + 2], 100, 360 + i * 130, 100 * (i + 1)); + baseDinosDex.push_back(newBaseDinoDex); + buyDinoTexts[i + 2]->setString(baseDinosDex[i].buyInfo()); + buyDinoTexts[i + 2]->setPosition(350, 360 + i * 130); + } + DinoInt newBaseDinoInt(names[4], textures1[4], 100, 620, 100); + baseDinosInt.push_back(newBaseDinoInt); + buyDinoTexts[4]->setString(baseDinosInt[0].buyInfo()); + buyDinoTexts[4]->setPosition(350, 620); + wind = BUY; + } + + else if (i == 1) { + dinosStr1.clear(); + DinoStr brachio("Brachiosaurus", brachioTexture2, 2 * window.getSize().x / 3, 5 * window.getSize().y / 6); + DinoStr tirex("Tyrannosaurus", tirexTexture2, 2 * window.getSize().x / 3, 5 * window.getSize().y / 6); + dinosStr1.push_back(brachio); + dinosStr1.push_back(tirex); + + dinosDex1.clear(); + DinoDex stego("Stegosaurus", stegoTexture2, 2 * window.getSize().x / 3, 5 * window.getSize().y / 6); + DinoDex tricera("Triceratops", triceraTexture2, 2 * window.getSize().x / 3, 5 * window.getSize().y / 6); + dinosDex1.push_back(stego); + dinosDex1.push_back(tricera); + + dinosInt1.clear(); + DinoInt diplo("Diplodocus", diploTexture2, 2 * window.getSize().x / 3, 5 * window.getSize().y / 6); + dinosInt1.push_back(diplo); + + for (int i = 0; i < dinosStr.size() + dinosDex.size() + dinosInt.size(); i++) { + activeDinos[i] = false; + } + activeCount = 0; + wind = FIGHT; + } + + else if (i == 2) { + wind = DINOS; + } + + else { + window.close(); + } + } + } + } + } + + else if (wind == FIGHT) { + if (event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left && + backButtonSprite.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) { + for (int i = 0; i < dinosStr.size() + dinosDex.size() + dinosInt.size(); i++) { + activeDinos[i] = false; + } + activeCount = 0; + wind = START; + } + else if (event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left) { + int i = 0; + for (DinoStr dinoStr : dinosStr) { + if (dinoStr.sprite().getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) { + activeDinos[i] = true; + activeCount++; + if (dinoStr.getName() == "Brachiosaurus") { + dinoStr.changeTexture(brachioTexture1, 100, 3 * window.getSize().y / 4); + } + else { + dinoStr.changeTexture(tirexTexture1, 100, 3 * window.getSize().y / 4); + } + } + i++; + } + for (DinoDex dinoDex : dinosDex) { + if (dinoDex.sprite().getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) { + activeDinos[i] = true; + activeCount++; + if (dinoDex.getName() == "Stegosaurus") { + dinoDex.changeTexture(stegoTexture1, 100, 3 * window.getSize().y / 4); + } + else { + dinoDex.changeTexture(triceraTexture1, 100, 3 * window.getSize().y / 4); + } + } + i++; + } + for (DinoInt dinoInt : dinosInt) { + if (dinoInt.sprite().getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) { + activeDinos[i] = true; + activeCount++; + dinoInt.changeTexture(diploTexture1, 100, 4 * window.getSize().y / 5); + } + i++; + } + } + } + + else if (wind == BUY) { + if (event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left && + backButtonSprite.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) { + wind = START; + } + else if (event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left) { + int i = 0; + for (DinoStr baseDinoStr : baseDinosStr) { + if (baseDinoStr.sprite().getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y) && + cash >= baseDinoStr.getCost()) { + cash -= baseDinoStr.getCost(); + cashText_.setString("Your cash: " + std::to_string(cash)); + dinosStr.push_back(baseDinoStr); + activeDinos.push_back(false); + } + i++; + } + for (DinoDex baseDinoDex : baseDinosDex) { + if (baseDinoDex.sprite().getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y) && + cash >= baseDinoDex.getCost()) { + cash -= baseDinoDex.getCost(); + cashText_.setString("Your cash: " + std::to_string(cash)); + activeDinos.push_back(false); + dinosDex.push_back(baseDinoDex); + } + i++; + } + for (DinoInt baseDinoInt : baseDinosInt) { + if (baseDinoInt.sprite().getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y) && + cash >= baseDinoInt.getCost()) { + cash -= baseDinoInt.getCost(); + cashText_.setString("Your cash: " + std::to_string(cash)); + activeDinos.push_back(false); + dinosInt.push_back(baseDinoInt); + } + i++; + } + save(dinosStr, dinosDex, dinosInt, cash); + } + } + + else { + if (event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left && + backButtonSprite.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) { + wind = START; + } + } + } + + if (wind == START) { + window.clear(sf::Color::Cyan); + for (int i = 0; i < 4; i++) { + window.draw(menuButtonSprites[i]); + } + window.display(); + } + + if (wind == BUY) { + window.clear(sf::Color::Cyan); + window.draw(cashText_); + int i = 0; + for (DinoStr baseDinoStr : baseDinosStr) { + if (cash >= baseDinoStr.getCost()) { + window.draw(baseDinoStr.sprite()); + window.draw(*buyDinoTexts[i]); + } + i++; + } + for (DinoDex baseDinoDex : baseDinosDex) { + if (cash >= baseDinoDex.getCost()) { + window.draw(baseDinoDex.sprite()); + window.draw(*buyDinoTexts[i]); + } + i++; + } + for (DinoInt baseDinoInt : baseDinosInt) { + if (cash >= baseDinoInt.getCost()) { + window.draw(baseDinoInt.sprite()); + window.draw(*buyDinoTexts[i]); + } + i++; + } + + window.draw(backButtonSprite); + window.display(); + } + + if (wind == FIGHT) { + if (dinosStr.size() + dinosDex.size() + dinosInt.size() < 3) { + wind = START; + } + else if (activeCount == 3) { + int j_ = 0; + for (int i = 0; i < dinosStr.size() + dinosDex.size() + dinosInt.size(); i++) { + if (activeDinos[i]) { + activeDinosIndexes[j_] = i; + j_++; + } + activeDinos[i] = false; + } + int dino1 = activeDinosIndexes[0] + 1; + int dino2 = activeDinosIndexes[1] + 1; + int dino3 = activeDinosIndexes[2] + 1; + auto& firstDino = chooseDino(dinosStr, dinosDex, dinosInt, dino1); + auto& secondDino = chooseDino(dinosStr, dinosDex, dinosInt, dino2); + auto& thirdDino = chooseDino(dinosStr, dinosDex, dinosInt, dino3); + + DinoStr brachio("Brachiosaurus", brachioTexture2, 4 * window.getSize().x / 5, 4 * window.getSize().y / 5); + DinoStr tirex("Tyrannosaurus", tirexTexture2, 4 * window.getSize().x / 5, 4 * window.getSize().y / 5); + dinosStr1.push_back(brachio); + dinosStr1.push_back(tirex); + + DinoDex stego("Stegosaurus", stegoTexture2, 4 * window.getSize().x / 5, 4 * window.getSize().y / 5); + DinoDex tricera("Triceratops", triceraTexture2, 4 * window.getSize().x / 5, 4 * window.getSize().y / 5); + dinosDex1.push_back(stego); + dinosDex1.push_back(tricera); + + DinoInt diplo("Diplodocus", diploTexture2, 4 * window.getSize().x / 5, 4 * window.getSize().y / 5); + dinosInt1.push_back(diplo); + + int enemyDino1 = rand() % 5 + 1; + auto& firstEnemyDino = chooseEnemyDino(dinosStr1, dinosDex1, dinosInt1, enemyDino1); + + int enemyDino2 = rand() % 5 + 1; + while (enemyDino2 == enemyDino1) { + enemyDino2 = rand() % 5 + 1; + } + auto& secondEnemyDino = chooseEnemyDino(dinosStr1, dinosDex1, dinosInt1, enemyDino2); + + int enemyDino3 = rand() % 5 + 1; + while (enemyDino3 == enemyDino1 || enemyDino3 == enemyDino2) { + enemyDino3 = rand() % 5 + 1; + } + auto& thirdEnemyDino = chooseEnemyDino(dinosStr1, dinosDex1, dinosInt1, enemyDino3); + + int i = 0; + int j = 0; + int terr = rand() % 3; + + if (terr == 0) { + terrain = PLAIN; + terrainText.setString("PLAIN"); + } + else if (terr == 1) { + terrain = RIVER; + terrainText.setString("RIVER"); + } + else { + terrain = MOUNTAIN; + terrainText.setString("MOUNTAIN"); + } + window.clear(sf::Color::Cyan); + window.draw(firstDino.sprite()); + fightText.setString("HP: " + std::to_string(firstDino.getHP())); + fightText.setPosition(350, 4 * window.getSize().y / 5); + window.draw(firstEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(firstEnemyDino.getHP())); + fightText.setPosition(4 * window.getSize().x / 5 + 250, 4 * window.getSize().y / 5); + window.display(); + Sleep(1000); + + int damage, enemyDamage; + + while (i < 3 && j < 3) { + if (i == 0) { + damage = firstDino.damage(terrain); + } + + else if (i == 1) { + damage = secondDino.damage(terrain); + } + + else { + damage = thirdDino.damage(terrain); + } + + if (j == 0) { + enemyDamage = firstEnemyDino.damage(terrain); + } + + else if (j == 1) { + enemyDamage = secondEnemyDino.damage(terrain); + } + + else { + enemyDamage = thirdEnemyDino.damage(terrain); + } + + window.clear(sf::Color::Cyan); + fightText.setFillColor(sf::Color::Red); + if (i == 0) { + window.draw(firstDino.sprite()); + fightText.setString("HP: " + std::to_string(firstDino.getHP())); + } + else if (i == 1) { + window.draw(secondDino.sprite()); + fightText.setString("HP: " + std::to_string(secondDino.getHP())); + } + else { + window.draw(thirdDino.sprite()); + fightText.setString("HP: " + std::to_string(thirdDino.getHP())); + } + fightText.setPosition(350, 4 * window.getSize().y / 5); + window.draw(fightText); + + if (i == 0) { + window.draw(firstEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(firstEnemyDino.getHP())); + } + else if (i == 1) { + window.draw(secondEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(secondEnemyDino.getHP())); + } + else { + window.draw(thirdEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(thirdEnemyDino.getHP())); + } + fightText.setPosition(4 * window.getSize().x / 5 + 250, 4 * window.getSize().y / 5); + window.draw(fightText); + window.display(); + Sleep(500); + + window.clear(sf::Color::Cyan); + fightText.setFillColor(sf::Color::Magenta); + if (i == 0) { + window.draw(firstDino.sprite()); + fightText.setString("HP: " + std::to_string(firstDino.getHP())); + } + else if (i == 1) { + window.draw(secondDino.sprite()); + fightText.setString("HP: " + std::to_string(secondDino.getHP())); + } + else { + window.draw(thirdDino.sprite()); + fightText.setString("HP: " + std::to_string(thirdDino.getHP())); + } + fightText.setPosition(350, 4 * window.getSize().y / 5); + window.draw(fightText); + + if (i == 0) { + window.draw(firstEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(firstEnemyDino.getHP())); + } + else if (i == 1) { + window.draw(secondEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(secondEnemyDino.getHP())); + } + else { + window.draw(thirdEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(thirdEnemyDino.getHP())); + } + fightText.setPosition(4 * window.getSize().x / 5 + 250, 4 * window.getSize().y / 5); + window.draw(fightText); + window.display(); + Sleep(500); + + if (i == 0) { + firstDino.takeDamage(enemyDamage); + } + + else if (i == 1) { + secondDino.takeDamage(enemyDamage); + } + + else { + thirdDino.takeDamage(enemyDamage); + } + + if (j == 0) { + firstEnemyDino.takeDamage(damage); + } + + else if (j == 1) { + secondEnemyDino.takeDamage(damage); + } + + else { + thirdEnemyDino.takeDamage(damage); + } + + if (i == 0 && firstDino.getHP() == 0) { + firstDino.changeTexture(tombTexture, 100, 4 * window.getSize().y / 5); + + window.clear(sf::Color::Cyan); + if (i == 0) { + window.draw(firstDino.sprite()); + fightText.setString("HP: " + std::to_string(firstDino.getHP())); + } + else if (i == 1) { + window.draw(secondDino.sprite()); + fightText.setString("HP: " + std::to_string(secondDino.getHP())); + } + else { + window.draw(thirdDino.sprite()); + fightText.setString("HP: " + std::to_string(thirdDino.getHP())); + } + fightText.setPosition(350, 4 * window.getSize().y / 5); + window.draw(fightText); + + if (i == 0) { + window.draw(firstEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(firstEnemyDino.getHP())); + } + else if (i == 1) { + window.draw(secondEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(secondEnemyDino.getHP())); + } + else { + window.draw(thirdEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(thirdEnemyDino.getHP())); + } + fightText.setPosition(4 * window.getSize().x / 5 + 250, 4 * window.getSize().y / 5); + window.draw(fightText); + window.display(); + Sleep(500); + + if (dino1 <= dinosStr.size()) { + dinosStr.erase(dinosStr.begin() + (dino1 - 1)); + } + else if (dino1 <= dinosStr.size() + dinosDex.size()) { + dinosDex.erase(dinosDex.begin() + (dino1 - dinosStr.size() - 1)); + } + else { + dinosInt.erase(dinosInt.begin() + (dino1 - dinosStr.size() - dinosDex.size() - 1)); + } + + if (dino2 > dino1) { + dino2 -= 1; + } + + if (dino3 > dino1) { + dino3 -= 1; + } + + i += 1; + } + + else if (i == 1 && secondDino.getHP() == 0) { + secondDino.changeTexture(tombTexture, 100, 4 * window.getSize().y / 5); + + window.clear(sf::Color::Cyan); + if (i == 0) { + window.draw(firstDino.sprite()); + fightText.setString("HP: " + std::to_string(firstDino.getHP())); + } + else if (i == 1) { + window.draw(secondDino.sprite()); + fightText.setString("HP: " + std::to_string(secondDino.getHP())); + } + else { + window.draw(thirdDino.sprite()); + fightText.setString("HP: " + std::to_string(thirdDino.getHP())); + } + fightText.setPosition(350, 4 * window.getSize().y / 5); + window.draw(fightText); + + if (i == 0) { + window.draw(firstEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(firstEnemyDino.getHP())); + } + else if (i == 1) { + window.draw(secondEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(secondEnemyDino.getHP())); + } + else { + window.draw(thirdEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(thirdEnemyDino.getHP())); + } + fightText.setPosition(4 * window.getSize().x / 5 + 250, 4 * window.getSize().y / 5); + window.draw(fightText); + window.display(); + Sleep(500); + + if (dino2 <= dinosStr.size()) { + dinosStr.erase(dinosStr.begin() + (dino2 - 1)); + } + else if (dino2 <= dinosStr.size() + dinosDex.size()) { + dinosDex.erase(dinosDex.begin() + (dino2 - dinosStr.size() - 1)); + } + else { + dinosInt.erase(dinosInt.begin() + (dino2 - dinosStr.size() - dinosDex.size() - 1)); + } + + if (dino3 > dino2) { + dino3 -= 1; + } + + i += 1; + } + + else if (i == 2 && thirdDino.getHP() == 0) { + thirdDino.changeTexture(tombTexture, 100, 4 * window.getSize().y / 5); + + window.clear(sf::Color::Cyan); + if (i == 0) { + window.draw(firstDino.sprite()); + fightText.setString("HP: " + std::to_string(firstDino.getHP())); + } + else if (i == 1) { + window.draw(secondDino.sprite()); + fightText.setString("HP: " + std::to_string(secondDino.getHP())); + } + else { + window.draw(thirdDino.sprite()); + fightText.setString("HP: " + std::to_string(thirdDino.getHP())); + } + fightText.setPosition(350, 4 * window.getSize().y / 5); + window.draw(fightText); + + if (i == 0) { + window.draw(firstEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(firstEnemyDino.getHP())); + } + else if (i == 1) { + window.draw(secondEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(secondEnemyDino.getHP())); + } + else { + window.draw(thirdEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(thirdEnemyDino.getHP())); + } + fightText.setPosition(4 * window.getSize().x / 5 + 250, 4 * window.getSize().y / 5); + window.draw(fightText); + window.display(); + Sleep(500); + + if (dino3 <= dinosStr.size()) { + dinosStr.erase(dinosStr.begin() + (dino3 - 1)); + } + else if (dino3 <= dinosStr.size() + dinosDex.size()) { + dinosDex.erase(dinosDex.begin() + (dino3 - dinosStr.size() - 1)); + } + else { + dinosInt.erase(dinosInt.begin() + (dino3 - dinosStr.size() - dinosDex.size() - 1)); + } + + i += 1; + } + + if (j == 0 && firstEnemyDino.getHP() == 0) { + firstEnemyDino.changeTexture(tombTexture, 4 * window.getSize().x / 5, 4 * window.getSize().y / 5); + + window.clear(sf::Color::Cyan); + if (i == 0) { + window.draw(firstDino.sprite()); + fightText.setString("HP: " + std::to_string(firstDino.getHP())); + } + else if (i == 1) { + window.draw(secondDino.sprite()); + fightText.setString("HP: " + std::to_string(secondDino.getHP())); + } + else { + window.draw(thirdDino.sprite()); + fightText.setString("HP: " + std::to_string(thirdDino.getHP())); + } + fightText.setPosition(350, 4 * window.getSize().y / 5); + window.draw(fightText); + + if (i == 0) { + window.draw(firstEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(firstEnemyDino.getHP())); + } + else if (i == 1) { + window.draw(secondEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(secondEnemyDino.getHP())); + } + else { + window.draw(thirdEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(thirdEnemyDino.getHP())); + } + fightText.setPosition(4 * window.getSize().x / 5 + 250, 4 * window.getSize().y / 5); + window.draw(fightText); + window.display(); + Sleep(500); + + if (enemyDino1 <= dinosStr1.size()) { + dinosStr1.erase(dinosStr1.begin() + (enemyDino1 - 1)); + } + else if (enemyDino1 <= dinosStr1.size() + dinosDex1.size()) { + dinosDex1.erase(dinosDex1.begin() + (enemyDino1 - dinosStr1.size() - 1)); + } + else { + dinosInt1.erase(dinosInt1.begin() + (enemyDino1 - dinosStr1.size() - dinosDex1.size() - 1)); + } + + if (enemyDino2 > enemyDino1) { + enemyDino2 -= 1; + } + + if (enemyDino3 > enemyDino1) { + enemyDino3 -= 1; + } + + j += 1; + } + + else if (j == 1 && secondEnemyDino.getHP() == 0) { + secondEnemyDino.changeTexture(tombTexture, 4 * window.getSize().x / 5, 4 * window.getSize().y / 5); + + window.clear(sf::Color::Cyan); + if (i == 0) { + window.draw(firstDino.sprite()); + fightText.setString("HP: " + std::to_string(firstDino.getHP())); + } + else if (i == 1) { + window.draw(secondDino.sprite()); + fightText.setString("HP: " + std::to_string(secondDino.getHP())); + } + else { + window.draw(thirdDino.sprite()); + fightText.setString("HP: " + std::to_string(thirdDino.getHP())); + } + fightText.setPosition(350, 4 * window.getSize().y / 5); + window.draw(fightText); + + if (i == 0) { + window.draw(firstEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(firstEnemyDino.getHP())); + } + else if (i == 1) { + window.draw(secondEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(secondEnemyDino.getHP())); + } + else { + window.draw(thirdEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(thirdEnemyDino.getHP())); + } + fightText.setPosition(4 * window.getSize().x / 5 + 250, 4 * window.getSize().y / 5); + window.draw(fightText); + window.display(); + Sleep(500); + + if (enemyDino2 <= dinosStr1.size()) { + dinosStr1.erase(dinosStr1.begin() + (enemyDino2 - 1)); + } + else if (enemyDino2 <= dinosStr1.size() + dinosDex1.size()) { + dinosDex1.erase(dinosDex1.begin() + (enemyDino2 - dinosStr1.size() - 1)); + } + else { + dinosInt1.erase(dinosInt1.begin() + (enemyDino2 - dinosStr1.size() - dinosDex1.size() - 1)); + } + + if (enemyDino3 > enemyDino2) { + enemyDino3 -= 1; + } + + j += 1; + } + + else if (j == 2 && thirdEnemyDino.getHP() == 0) { + thirdEnemyDino.changeTexture(tombTexture, 4 * window.getSize().x / 5, 4 * window.getSize().y / 5); + + window.clear(sf::Color::Cyan); + if (i == 0) { + window.draw(firstDino.sprite()); + fightText.setString("HP: " + std::to_string(firstDino.getHP())); + } + else if (i == 1) { + window.draw(secondDino.sprite()); + fightText.setString("HP: " + std::to_string(secondDino.getHP())); + } + else { + window.draw(thirdDino.sprite()); + fightText.setString("HP: " + std::to_string(thirdDino.getHP())); + } + fightText.setPosition(350, 4 * window.getSize().y / 5); + window.draw(fightText); + + if (i == 0) { + window.draw(firstEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(firstEnemyDino.getHP())); + } + else if (i == 1) { + window.draw(secondEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(secondEnemyDino.getHP())); + } + else { + window.draw(thirdEnemyDino.sprite()); + fightText.setString("HP: " + std::to_string(thirdEnemyDino.getHP())); + } + fightText.setPosition(4 * window.getSize().x / 5 + 250, 4 * window.getSize().y / 5); + window.draw(fightText); + window.display(); + Sleep(500); + + if (enemyDino3 <= dinosStr1.size()) { + dinosStr1.erase(dinosStr1.begin() + (enemyDino3 - 1)); + } + else if (enemyDino3 <= dinosStr1.size() + dinosDex1.size()) { + dinosDex1.erase(dinosDex1.begin() + (enemyDino3 - dinosStr1.size() - 1)); + } + else { + dinosInt1.erase(dinosInt1.begin() + (enemyDino3 - dinosStr1.size() - dinosDex1.size() - 1)); + } + + j += 1; + } + + if (i == 3 && j == 3) { + wind = TIE; + cash += 700; + } + + else if (i == 3) { + wind = LOSE; + cash += 500; + } + + else if (j == 3) { + wind = WIN; + cash += 1000; + } + } + + save(dinosStr, dinosDex, dinosInt, cash); + } + else { + window.clear(sf::Color::Cyan); + if (!dinosStr.empty() || !dinosDex.empty() || !dinosInt.empty()) { + int i = 0; + for (DinoStr dinoStr : dinosStr) { + if (!activeDinos[i]) { + dinoStr.sprite().setPosition(100, 100 + 130 * i); + window.draw(dinoStr.sprite()); + dinoText.setString(dinoStr.dinoInfo()); + dinoText.setPosition(350, 100 + 130 * i); + window.draw(dinoText); + } + i++; + } + for (DinoDex dinoDex : dinosDex) { + if (!activeDinos[i]) { + dinoDex.sprite().setPosition(100, 100 + 130 * i); + window.draw(dinoDex.sprite()); + dinoText.setString(dinoDex.dinoInfo()); + dinoText.setPosition(350, 100 + 130 * i); + window.draw(dinoText); + } + i++; + } + for (DinoInt dinoInt : dinosInt) { + if (!activeDinos[i]) { + dinoInt.sprite().setPosition(100, 100 + 130 * i); + window.draw(dinoInt.sprite()); + dinoText.setString(dinoInt.dinoInfo()); + dinoText.setPosition(350, 100 + 130 * i); + window.draw(dinoText); + } + i++; + } + } + window.draw(backButtonSprite); + window.display(); + } + } + + if (wind == DINOS) { + window.clear(sf::Color::Cyan); + if (!dinosStr.empty() || !dinosDex.empty() || !dinosInt.empty()) { + int i = 0; + for (DinoStr dinoStr : dinosStr) { + dinoStr.sprite().setPosition(100, 100 + 130 * i); + window.draw(dinoStr.sprite()); + dinoText.setString(dinoStr.dinoInfo()); + dinoText.setPosition(350, 100 + 130 * i); + window.draw(dinoText); + i++; + } + for (DinoDex dinoDex : dinosDex) { + dinoDex.sprite().setPosition(100, 100 + 130 * i); + window.draw(dinoDex.sprite()); + dinoText.setString(dinoDex.dinoInfo()); + dinoText.setPosition(350, 100 + 130 * i); + window.draw(dinoText); + i++; + } + for (DinoInt dinoInt : dinosInt) { + dinoInt.sprite().setPosition(100, 100 + 130 * i); + window.draw(dinoInt.sprite()); + dinoText.setString(dinoInt.dinoInfo()); + dinoText.setPosition(350, 100 + 130 * i); + window.draw(dinoText); + i++; + } + } + window.draw(backButtonSprite); + window.display(); + } + + if (wind == WIN) { + window.clear(sf::Color::Cyan); + window.draw(winText); + window.draw(backButtonSprite); + window.display(); + } + + if (wind == LOSE) { + window.clear(sf::Color::Cyan); + window.draw(defeatText); + window.draw(backButtonSprite); + window.display(); + } + + if (wind == TIE) { + window.clear(sf::Color::Cyan); + window.draw(tieText); + window.draw(backButtonSprite); + window.display(); + } + } + inStream.close(); +} \ No newline at end of file