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