From 3f6fb068ba07147a24c8f699c130d61363bf77d9 Mon Sep 17 00:00:00 2001 From: BoikoMaximAlexeevych <147051218+BoikoMaximAlexeevych@users.noreply.github.com> Date: Fri, 6 Oct 2023 18:57:34 +0300 Subject: [PATCH 01/10] =?UTF-8?q?=D0=94=D0=97=201=20=D0=B8=20=D0=94=D0=97?= =?UTF-8?q?=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Task1 (2).cpp" | 18 +++++++++ .../Task2(2).cpp" | 9 +++++ .../task1.cpp" | 9 +++++ .../task2.cpp" | 39 +++++++++++++++++++ 4 files changed, 75 insertions(+) create mode 100644 "J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/Task1 (2).cpp" create mode 100644 "J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/Task2(2).cpp" create mode 100644 "J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task1.cpp" create mode 100644 "J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" diff --git "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/Task1 (2).cpp" "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/Task1 (2).cpp" new file mode 100644 index 00000000..ed3ae465 --- /dev/null +++ "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/Task1 (2).cpp" @@ -0,0 +1,18 @@ +#include + +int main() +{ + int N, a, b, c; + a=0; + b=1; + c = a+b; + std::cin >> N; + std::cout << a << " " << b << " " << c << " "; + while(N-3>0) { + N--; + a = b; + b = c; + c = a+b; + std::cout << c << " "; + } +} diff --git "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/Task2(2).cpp" "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/Task2(2).cpp" new file mode 100644 index 00000000..a4f6ac68 --- /dev/null +++ "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/Task2(2).cpp" @@ -0,0 +1,9 @@ +#include +int main() { + int num; + std::cin >> num; + while(num > 0){ + std::cout << num % 10; + num = num/10; + } +} \ No newline at end of file diff --git "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task1.cpp" "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task1.cpp" new file mode 100644 index 00000000..e375d2ef --- /dev/null +++ "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task1.cpp" @@ -0,0 +1,9 @@ +// Задание 1 (?) +#include +using namespace std; +int main(){ +char character = 257; +std::cout << character + 1; + +return 0; +} diff --git "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" new file mode 100644 index 00000000..62814d61 --- /dev/null +++ "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" @@ -0,0 +1,39 @@ +#include +using namespace std; +int main(){ +int number; +std::cin >> number; +switch (number) +{ +case 1: +std::cout << 'o'; +break; +case 2: +std::cout << 't'; +break; +case 3: +std::cout << 't'; +break; +case 4: +std::cout << 'f'; +break; +case 5: +std::cout << 'f'; +break; +case 6: +std::cout << 's'; +break; +case 7: +std::cout << 's'; +break; +case 8: +std::cout << 'e'; +break; +case 9: +std::cout << 'n'; +break; +default: +std::cout << "Not a single-digit number"; +} +return 0; +} \ No newline at end of file From be9173c65199712a26c7eca12143131458675147 Mon Sep 17 00:00:00 2001 From: BoikoMaximAlexeevych <147051218+BoikoMaximAlexeevych@users.noreply.github.com> Date: Wed, 11 Oct 2023 22:06:28 +0300 Subject: [PATCH 02/10] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BE=D1=82=D1=81=D1=82=D1=83=D0=BF=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Действительно добавил. И еще ноль в одно из заданий вписал. --- .../task1.cpp" | 6 +- .../task2.cpp" | 58 ++++++++++--------- 2 files changed, 33 insertions(+), 31 deletions(-) diff --git "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task1.cpp" "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task1.cpp" index e375d2ef..e585dbba 100644 --- "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task1.cpp" +++ "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task1.cpp" @@ -2,8 +2,8 @@ #include using namespace std; int main(){ -char character = 257; -std::cout << character + 1; + char character = 257; + std::cout << character + 1; -return 0; + return 0; } diff --git "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" index 62814d61..266533a0 100644 --- "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" +++ "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" @@ -5,34 +5,36 @@ int number; std::cin >> number; switch (number) { -case 1: -std::cout << 'o'; -break; -case 2: -std::cout << 't'; -break; -case 3: -std::cout << 't'; -break; -case 4: -std::cout << 'f'; -break; -case 5: -std::cout << 'f'; -break; -case 6: -std::cout << 's'; -break; -case 7: -std::cout << 's'; -break; -case 8: -std::cout << 'e'; -break; -case 9: -std::cout << 'n'; -break; -default: + case 0: + std::cout << 'z'; + case 1: + std::cout << 'o'; + break; + case 2: + std::cout << 't'; + break; + case 3: + std::cout << 't'; + break; + case 4: + std::cout << 'f'; + break; + case 5: + std::cout << 'f'; + break; + case 6: + std::cout << 's'; + break; + case 7: + std::cout << 's'; + break; + case 8: + std::cout << 'e'; + break; + case 9: + std::cout << 'n'; + break; + default: std::cout << "Not a single-digit number"; } return 0; From 8a945e1afce7ae43240e28876c2961b734bc0b8d Mon Sep 17 00:00:00 2001 From: BoikoMaximAlexeevych <147051218+BoikoMaximAlexeevych@users.noreply.github.com> Date: Fri, 13 Oct 2023 22:56:15 +0300 Subject: [PATCH 03/10] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B5=D1=89=D0=B5=20=D0=BE=D1=82=D1=81=D1=82=D1=83?= =?UTF-8?q?=D0=BF=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Теперь я как будто на питоне это написал, ей-богу)) --- .../task2.cpp" | 72 +++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" index 266533a0..eecf05b3 100644 --- "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" +++ "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" @@ -1,41 +1,41 @@ #include using namespace std; int main(){ -int number; -std::cin >> number; -switch (number) -{ - case 0: - std::cout << 'z'; - case 1: - std::cout << 'o'; - break; - case 2: - std::cout << 't'; - break; - case 3: - std::cout << 't'; - break; - case 4: - std::cout << 'f'; - break; - case 5: - std::cout << 'f'; - break; - case 6: - std::cout << 's'; - break; - case 7: - std::cout << 's'; - break; - case 8: - std::cout << 'e'; - break; - case 9: - std::cout << 'n'; - break; - default: -std::cout << "Not a single-digit number"; -} + int number; + std::cin >> number; + switch (number) + { + case 0: + std::cout << 'z'; + case 1: + std::cout << 'o'; + break; + case 2: + std::cout << 't'; + break; + case 3: + std::cout << 't'; + break; + case 4: + std::cout << 'f'; + break; + case 5: + std::cout << 'f'; + break; + case 6: + std::cout << 's'; + break; + case 7: + std::cout << 's'; + break; + case 8: + std::cout << 'e'; + break; + case 9: + std::cout << 'n'; + break; + default: + std::cout << "Not a single-digit number"; + } return 0; } \ No newline at end of file From 24c677dafe74a55f2b9b28f670346bb8b38a20de Mon Sep 17 00:00:00 2001 From: BoikoMaximAlexeevych <147051218+BoikoMaximAlexeevych@users.noreply.github.com> Date: Sat, 14 Oct 2023 12:20:27 +0300 Subject: [PATCH 04/10] =?UTF-8?q?=D0=91=D0=BE=D0=BB=D1=8C=D1=88=D0=B5=20?= =?UTF-8?q?=D0=BE=D1=82=D1=81=D1=82=D1=83=D0=BF=D0=BE=D0=B2=20=D0=B1=D0=BE?= =?UTF-8?q?=D0=B3=D1=83=20=D0=BE=D1=82=D1=81=D1=82=D1=83=D0=BF=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit И меньше using namespace std. --- .../task1.cpp" | 2 +- .../task2.cpp" | 45 ++++++++++--------- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task1.cpp" "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task1.cpp" index e585dbba..19842b2c 100644 --- "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task1.cpp" +++ "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task1.cpp" @@ -1,6 +1,6 @@ // Задание 1 (?) #include -using namespace std; + int main(){ char character = 257; std::cout << character + 1; diff --git "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" index eecf05b3..7c344172 100644 --- "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" +++ "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" @@ -1,41 +1,42 @@ #include -using namespace std; + int main(){ int number; std::cin >> number; switch (number) { case 0: - std::cout << 'z'; + std::cout << 'z'; + break; case 1: - std::cout << 'o'; - break; + std::cout << 'o'; + break; case 2: - std::cout << 't'; - break; + std::cout << 't'; + break; case 3: - std::cout << 't'; - break; + std::cout << 't'; + break; case 4: - std::cout << 'f'; - break; + std::cout << 'f'; + break; case 5: - std::cout << 'f'; - break; + std::cout << 'f'; + break; case 6: - std::cout << 's'; - break; + std::cout << 's'; + break; case 7: - std::cout << 's'; - break; + std::cout << 's'; + break; case 8: - std::cout << 'e'; - break; + std::cout << 'e'; + break; case 9: - std::cout << 'n'; - break; + std::cout << 'n'; + break; default: - std::cout << "Not a single-digit number"; + std::cout << "Not a single-digit number"; } -return 0; + return 0; } \ No newline at end of file From 15d0d6a3914428deb0174a2d2f85bc2eda3c050e Mon Sep 17 00:00:00 2001 From: BoikoMaximAlexeevych <147051218+BoikoMaximAlexeevych@users.noreply.github.com> Date: Wed, 28 Feb 2024 17:33:26 +0300 Subject: [PATCH 05/10] =?UTF-8?q?=D0=9C=D0=B8=D0=BD=D0=B8-=D0=B4=D0=BE?= =?UTF-8?q?=D0=BC=D0=B0=D1=88=D0=BA=D0=B0=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Определяем количество строк, начинающихся с определенного символа, с помощью лямбда-выражения. --- sem2/Boiko MA/minihomework1.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 sem2/Boiko MA/minihomework1.cpp diff --git a/sem2/Boiko MA/minihomework1.cpp b/sem2/Boiko MA/minihomework1.cpp new file mode 100644 index 00000000..f192a7e0 --- /dev/null +++ b/sem2/Boiko MA/minihomework1.cpp @@ -0,0 +1,27 @@ +#include +#include +#include +#include +#include + +int main() +{ + + std::vector vecForCheck; + + for (int a = 0; a <= 200; a++) + { + vecForCheck.push_back(std::to_string(rand()%1000 + 50 - 20)); + } + + char lookFor; + std::cout << "What are you looking for today?" << std::endl << "Type in a digit, as we are looking through a vector of numbers" << std::endl << "(if you don't want to get a zero :3)" << std::endl; + std::cin >> lookFor; + + int howMany = count_if(vecForCheck.begin(), vecForCheck.end(), [lookFor] (std::string _n) { + return _n[0] == lookFor; + }); + + std::cout << howMany << " strings in our vector start with " << lookFor << std::endl; + +} From 0c3e70395cd7ec33cb583f8552d5c50864e953c4 Mon Sep 17 00:00:00 2001 From: BoikoMaximAlexeevych <147051218+BoikoMaximAlexeevych@users.noreply.github.com> Date: Thu, 29 Feb 2024 16:42:22 +0300 Subject: [PATCH 06/10] =?UTF-8?q?=D0=9C=D0=B8=D0=BD=D0=B8-=D0=B4=D0=BE?= =?UTF-8?q?=D0=BC=D0=B0=D1=88=D0=BA=D0=B0=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В первый раз случайно залил ее в заброшенный пулреквест --- sem2/Boiko MA/minihomework1.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/sem2/Boiko MA/minihomework1.cpp b/sem2/Boiko MA/minihomework1.cpp index f192a7e0..a4fdb2d2 100644 --- a/sem2/Boiko MA/minihomework1.cpp +++ b/sem2/Boiko MA/minihomework1.cpp @@ -6,7 +6,6 @@ int main() { - std::vector vecForCheck; for (int a = 0; a <= 200; a++) @@ -23,5 +22,4 @@ int main() }); std::cout << howMany << " strings in our vector start with " << lookFor << std::endl; - } From 92ad7a7afb4286e0987b8e759c3ba520384ceeac Mon Sep 17 00:00:00 2001 From: BoikoMaximAlexeevych <147051218+BoikoMaximAlexeevych@users.noreply.github.com> Date: Thu, 29 Feb 2024 16:47:15 +0300 Subject: [PATCH 07/10] =?UTF-8?q?=D0=9C=D0=B8=D0=BD=D0=B8-=D0=B4=D0=BE?= =?UTF-8?q?=D0=BC=D0=B0=D1=88=D0=BA=D0=B0=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Отчаянно пытаюсь сделать пулреквест --- sem2/BoikoMA/minihomework1.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 sem2/BoikoMA/minihomework1.cpp diff --git a/sem2/BoikoMA/minihomework1.cpp b/sem2/BoikoMA/minihomework1.cpp new file mode 100644 index 00000000..b6dd4b83 --- /dev/null +++ b/sem2/BoikoMA/minihomework1.cpp @@ -0,0 +1,27 @@ +#include +#include +#include +#include +#include + +int main() +{ + + std::vector vecForCheck; + + for (int a = 0; a <= 200; a++) + { + vecForCheck.push_back(std::to_string(rand()%1000 + 50 - 20)); + } + + char lookFor; + std::cout << "What are you looking for today?" << std::endl << "Type in a digit, as we are looking through a vector of numbers" << std::endl << "(if you don't want to get a zero :3)" << std::endl; + std::cin >> lookFor; + + int howMany = count_if(vecForCheck.begin(), vecForCheck.end(), [lookFor] (std::string _n) { + return _n[0] == lookFor; + }); + + std::cout << howMany << " strings in our vector start with " << lookFor << std::endl; + +} \ No newline at end of file From 49c77286e211d3805cd40f9a04b70539dd732402 Mon Sep 17 00:00:00 2001 From: BoikoMaximAlexeevych <147051218+BoikoMaximAlexeevych@users.noreply.github.com> Date: Thu, 29 Feb 2024 16:53:41 +0300 Subject: [PATCH 08/10] =?UTF-8?q?=D0=BB=D0=B8=D1=88=D0=BD=D0=B5=D0=B5=20?= =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit да --- sem2/BoikoMA/minihomework1.cpp | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 sem2/BoikoMA/minihomework1.cpp diff --git a/sem2/BoikoMA/minihomework1.cpp b/sem2/BoikoMA/minihomework1.cpp deleted file mode 100644 index b6dd4b83..00000000 --- a/sem2/BoikoMA/minihomework1.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include -#include -#include -#include - -int main() -{ - - std::vector vecForCheck; - - for (int a = 0; a <= 200; a++) - { - vecForCheck.push_back(std::to_string(rand()%1000 + 50 - 20)); - } - - char lookFor; - std::cout << "What are you looking for today?" << std::endl << "Type in a digit, as we are looking through a vector of numbers" << std::endl << "(if you don't want to get a zero :3)" << std::endl; - std::cin >> lookFor; - - int howMany = count_if(vecForCheck.begin(), vecForCheck.end(), [lookFor] (std::string _n) { - return _n[0] == lookFor; - }); - - std::cout << howMany << " strings in our vector start with " << lookFor << std::endl; - -} \ No newline at end of file From f3bc7b36c0b324202da55954a4e62083e615fc5e Mon Sep 17 00:00:00 2001 From: BoikoMaximAlexeevych <147051218+BoikoMaximAlexeevych@users.noreply.github.com> Date: Thu, 29 Feb 2024 16:59:21 +0300 Subject: [PATCH 09/10] =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B2=D1=8B=D0=B5=20=D0=94=D0=97=20=D0=B8?= =?UTF-8?q?=D0=B7=20=D1=81=D0=B2=D0=BE=D0=B5=D0=B9=20=D0=B2=D0=B5=D1=82?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Теперь их нет --- .../Task1 (2).cpp" | 18 -------- .../Task2(2).cpp" | 9 ---- .../task1.cpp" | 9 ---- .../task2.cpp" | 42 ------------------- 4 files changed, 78 deletions(-) delete mode 100644 "J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/Task1 (2).cpp" delete mode 100644 "J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/Task2(2).cpp" delete mode 100644 "J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task1.cpp" delete mode 100644 "J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" diff --git "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/Task1 (2).cpp" "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/Task1 (2).cpp" deleted file mode 100644 index ed3ae465..00000000 --- "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/Task1 (2).cpp" +++ /dev/null @@ -1,18 +0,0 @@ -#include - -int main() -{ - int N, a, b, c; - a=0; - b=1; - c = a+b; - std::cin >> N; - std::cout << a << " " << b << " " << c << " "; - while(N-3>0) { - N--; - a = b; - b = c; - c = a+b; - std::cout << c << " "; - } -} diff --git "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/Task2(2).cpp" "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/Task2(2).cpp" deleted file mode 100644 index a4f6ac68..00000000 --- "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/Task2(2).cpp" +++ /dev/null @@ -1,9 +0,0 @@ -#include -int main() { - int num; - std::cin >> num; - while(num > 0){ - std::cout << num % 10; - num = num/10; - } -} \ No newline at end of file diff --git "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task1.cpp" "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task1.cpp" deleted file mode 100644 index 19842b2c..00000000 --- "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task1.cpp" +++ /dev/null @@ -1,9 +0,0 @@ -// Задание 1 (?) -#include - -int main(){ - char character = 257; - std::cout << character + 1; - - return 0; -} diff --git "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" "b/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" deleted file mode 100644 index 7c344172..00000000 --- "a/J3100 \320\221\320\276\320\271\320\272\320\276 \320\234/task2.cpp" +++ /dev/null @@ -1,42 +0,0 @@ -#include - -int main(){ - int number; - std::cin >> number; - switch (number) - { - case 0: - std::cout << 'z'; - break; - case 1: - std::cout << 'o'; - break; - case 2: - std::cout << 't'; - break; - case 3: - std::cout << 't'; - break; - case 4: - std::cout << 'f'; - break; - case 5: - std::cout << 'f'; - break; - case 6: - std::cout << 's'; - break; - case 7: - std::cout << 's'; - break; - case 8: - std::cout << 'e'; - break; - case 9: - std::cout << 'n'; - break; - default: - std::cout << "Not a single-digit number"; - } - return 0; -} \ No newline at end of file From 67b5d3f563340419652b362bd167abfabe5fffd9 Mon Sep 17 00:00:00 2001 From: BoikoMaximAlexeevych <147051218+BoikoMaximAlexeevych@users.noreply.github.com> Date: Sun, 16 Jun 2024 16:32:40 +0300 Subject: [PATCH 10/10] Practics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Бойко М.А, J3100 - Практическое задание (код) --- sem2/Practics - DinoWars 1.5/classes/Dino.cpp | 167 +++ sem2/Practics - DinoWars 1.5/classes/Dino.h | 48 + .../classes/Player.cpp | 64 + sem2/Practics - DinoWars 1.5/classes/Player.h | 26 + .../classes/SaveLoader.cpp | 64 + .../classes/SaveLoader.h | 16 + .../classes/includes.h | 6 + .../classes/sfml_stuff.h | 6 + sem2/Practics - DinoWars 1.5/main/main.cpp | 1041 +++++++++++++++++ sem2/Practics - DinoWars 1.5/main/main.h | 1 + 10 files changed, 1439 insertions(+) create mode 100644 sem2/Practics - DinoWars 1.5/classes/Dino.cpp create mode 100644 sem2/Practics - DinoWars 1.5/classes/Dino.h create mode 100644 sem2/Practics - DinoWars 1.5/classes/Player.cpp create mode 100644 sem2/Practics - DinoWars 1.5/classes/Player.h create mode 100644 sem2/Practics - DinoWars 1.5/classes/SaveLoader.cpp create mode 100644 sem2/Practics - DinoWars 1.5/classes/SaveLoader.h create mode 100644 sem2/Practics - DinoWars 1.5/classes/includes.h create mode 100644 sem2/Practics - DinoWars 1.5/classes/sfml_stuff.h create mode 100644 sem2/Practics - DinoWars 1.5/main/main.cpp create mode 100644 sem2/Practics - DinoWars 1.5/main/main.h diff --git a/sem2/Practics - DinoWars 1.5/classes/Dino.cpp b/sem2/Practics - DinoWars 1.5/classes/Dino.cpp new file mode 100644 index 00000000..bb30795e --- /dev/null +++ b/sem2/Practics - DinoWars 1.5/classes/Dino.cpp @@ -0,0 +1,167 @@ +#include "Dino.h" + +std::map speciesMap = { + {Tiranosaurus, "Tiranosaurus"}, + {Brachiozaurus, "Brachiozaurus"}, + {Diplodocus, "Diplodocus"}, + {Triceratops, "Triceratops"}, + {Stegozaurus, "Stegozaurus"} +}; + +std::map texture_map +{ + {Tiranosaurus, "res/dino_textures/Tirano.png"}, + {Brachiozaurus, "res/dino_textures/Brachio.png"}, + {Diplodocus, "res/dino_textures/Diplo.png"}, + {Triceratops, "res/dino_textures/Tricer.png"}, + {Stegozaurus, "res/dino_textures/Stegoz.png"} +}; + + +species get_random_species() +{ + int a = rand() % 5; + switch (a) + { + case 0: return Tiranosaurus; + case 1: return Brachiozaurus; + case 2: return Diplodocus; + case 3: return Triceratops; + case 4: return Stegozaurus; + } +} + +terrain get_random_terrain() +{ + int a = rand() % 3; + switch (a) + { + case 0: return River; + case 1: return Plains; + case 2: return Mountain; + } +} + +int Dino::damage(terrain cur_ter) +{ + int raw_dmg = cur_ter == Mountain ? MIND : cur_ter == Plains ? STR : AGIL; + if (cur_ter == pref_terrain) + { + raw_dmg = raw_dmg * 2; + } + return raw_dmg; +} + +Dino::Dino(int input_hp, int input_str, int input_mind, int input_agil) +{ + HP = input_hp; + INITHP = HP; + STR = input_str; + MIND = input_mind; + AGIL = input_agil; + is_alive = true; + is_chosen = false; + cost = 50; + + +} + +Dino::Dino() +{ + TYPE = get_random_species(); + pref_terrain = get_random_terrain(); + + HP = rand() % 70 + 30; + INITHP = HP; + STR = rand() % 10 + 20; + MIND = rand() % 10 + 20; + AGIL = rand() % 10 + 20; + is_alive = true; + is_chosen = false; + cost = rand() % 30 + 10; + + texture.loadFromFile(texture_map[TYPE]); + sprite.setTexture(texture); +} + +int Dino::get_hp() +{ + return this->HP; +} + +int Dino::getCost() +{ + return cost; +} + +terrain Dino::getPrefter() +{ + return pref_terrain; +} + +std::string Dino::dino_info() +{ + return speciesMap[TYPE] + " " + std::to_string(HP) + "H " + std::to_string(STR) + "S " + std::to_string(MIND) + "M " + std::to_string(AGIL) + "A"; +} + +void Dino::set_params(sf::Vector2f pos, sf::Vector2f scale) +{ + sprite.setPosition(pos); + sprite.setScale(scale); +} + +void Dino::set_hp(int i_hp) +{ + HP-=i_hp; + if (HP <= 0) + { + is_alive = false; + } +} +void Dino::draw(sf::RenderWindow& window) +{ + window.draw(sprite); +} + +void Dino::set_typeandter(species s, terrain t) +{ + TYPE = s; + pref_terrain = t; + + texture.loadFromFile(texture_map[TYPE]); + sprite.setTexture(texture); +} + +void Dino::set_chosen(bool a) +{ + is_chosen = a; +} + +bool Dino::is_dino_chosen() +{ + return is_chosen; +} + +float Dino::get_hp_float() +{ + return float(HP) / float(INITHP); +} +std::string Dino::getDinoData() +{ + return std::to_string(TYPE) + " " + std::to_string(pref_terrain) + " " + std::to_string(STR) + " " + std::to_string(AGIL) + " " + std::to_string(MIND) + " " + std::to_string(HP); +} +void Dino::set_flip() +{ + sprite.scale(-1.f, 1.f); + sprite.move(sprite.getGlobalBounds().width, 0.f); +} +void Dino::reset() +{ + is_alive = true; + is_chosen = false; + HP = INITHP; +} +bool Dino::is_available(int a) +{ + return a >= cost; +} \ No newline at end of file diff --git a/sem2/Practics - DinoWars 1.5/classes/Dino.h b/sem2/Practics - DinoWars 1.5/classes/Dino.h new file mode 100644 index 00000000..f3c4bfc4 --- /dev/null +++ b/sem2/Practics - DinoWars 1.5/classes/Dino.h @@ -0,0 +1,48 @@ +#pragma once +#include "sfml_stuff.h" +#include + +enum species { Tiranosaurus, Brachiozaurus, Diplodocus, Triceratops, Stegozaurus }; +enum terrain { Mountain, River, Plains }; + +class Dino +{ +private: + sf::Texture texture; + sf::Sprite sprite; + species TYPE; + terrain pref_terrain; + int INITHP; + int HP; + int STR; + int MIND; + int AGIL; + int cost; + + bool is_chosen; +public: + Dino(int input_hp, int input_str, int input_mind, int input_agil); + Dino(); + int damage(terrain cur_ter); + + int getCost(); + terrain getPrefter(); + bool is_dino_chosen(); + float get_hp_float(); + int get_hp(); + bool is_alive; + + bool is_available(int a); + std::string dino_info(); + + void set_params(sf::Vector2f pos, sf::Vector2f scale); + void set_typeandter(species s, terrain t); + void set_chosen(bool a); + void set_hp(int i_hp); + + void draw(sf::RenderWindow& window); + void set_flip(); + + void reset(); + std::string getDinoData(); +}; \ No newline at end of file diff --git a/sem2/Practics - DinoWars 1.5/classes/Player.cpp b/sem2/Practics - DinoWars 1.5/classes/Player.cpp new file mode 100644 index 00000000..3ca806f6 --- /dev/null +++ b/sem2/Practics - DinoWars 1.5/classes/Player.cpp @@ -0,0 +1,64 @@ +#include "Player.h" + +Player::Player(int i_coins) +{ + coins = i_coins; + + chosen_dinos.push_back(nullptr); + chosen_dinos.push_back(nullptr); + chosen_dinos.push_back(nullptr); +} +bool Player::any_dino_alive() +{ + for (auto a : chosen_dinos) + { + if (a!= nullptr && a->is_alive) + { + return true; + } + } + return false; +} +int Player::getCoins() +{ + return coins; +} +void Player::buy_dino(Dino* newDino) +{ + if (coins >= newDino->getCost()) + { + coins -= newDino->getCost(); + dinos_owned.push_back(newDino); + // std::cout << "DINO BOUGHT. COINS: " << coins << std::endl; + } + else + { + // std::cout << "TOO POOR" << std::endl; + } +} +void Player::generate_dinos() +{ + for (int k = 0; k < 3; k++) + { + this->chosen_dinos[k] = new Dino(); + } +} +void Player::giveCoins(int a) +{ + coins += a; +} +void Player::setCoins(int a) +{ + coins = a; +} +void Player::reset_dinos() +{ + for (auto d : dinos_owned) + { + d->reset(); + } +} +bool Player::has_dinos() +{ + return (!dinos_owned.empty()); +} \ No newline at end of file diff --git a/sem2/Practics - DinoWars 1.5/classes/Player.h b/sem2/Practics - DinoWars 1.5/classes/Player.h new file mode 100644 index 00000000..e0ca3f8c --- /dev/null +++ b/sem2/Practics - DinoWars 1.5/classes/Player.h @@ -0,0 +1,26 @@ +#pragma once +#include "sfml_stuff.h" +#include +#include +#include "Dino.h" + +class Player +{ +private: + int coins; +public: + std::vector dinos_owned; + std::vector chosen_dinos; + + Player(int i_coins); + int getCoins(); + bool any_dino_alive(); + void giveCoins(int a); + void setCoins(int a); + void buy_dino(Dino* newDino); + void reset_dinos(); + bool has_dinos(); + // + void generate_dinos(); +}; + diff --git a/sem2/Practics - DinoWars 1.5/classes/SaveLoader.cpp b/sem2/Practics - DinoWars 1.5/classes/SaveLoader.cpp new file mode 100644 index 00000000..3a14b487 --- /dev/null +++ b/sem2/Practics - DinoWars 1.5/classes/SaveLoader.cpp @@ -0,0 +1,64 @@ +#include "SaveLoader.h" + +SaveLoader::SaveLoader(std::string i_filename) +{ + filename = i_filename; +} +void SaveLoader::save(Player& player) +{ + std::ofstream outFile(filename); + + if (outFile.is_open()) { + outFile << player.getCoins() << "\n"; + + for (const auto& dino : player.dinos_owned) { + outFile << dino->getDinoData(); + outFile << std::endl; + } + + outFile.close(); + // std::cout << "SAVED.\n"; + } + else { + // std::cerr << "UNABLE TO SAVE.\n"; + } +} + +void SaveLoader::load(Player& player) +{ + std::ifstream inFile(filename); + int type, prefTer, stren, agil, mana, def; + char colon; + std::string semicolon; + + if (inFile.is_open()) { + // + std::string line; + std::getline(inFile, line); + if (!line.empty()) + { + player.setCoins(std::stoi(line)); + } + player.dinos_owned.clear(); + // , + while (std::getline(inFile, line)) { + std::stringstream ss(line); + + // + ss >> type >> prefTer >> stren >> agil >> mana >> def; + + Dino* newDino = new Dino(def, stren, mana, agil); + newDino->set_typeandter(static_cast(type), static_cast(prefTer)); + + + // + player.dinos_owned.push_back(newDino); + } + + inFile.close(); + // std::cout << "LOADED.\n"; + } + else { + // std::cerr << "UNABLE TO LOAD.\n"; + } +} diff --git a/sem2/Practics - DinoWars 1.5/classes/SaveLoader.h b/sem2/Practics - DinoWars 1.5/classes/SaveLoader.h new file mode 100644 index 00000000..79ce8609 --- /dev/null +++ b/sem2/Practics - DinoWars 1.5/classes/SaveLoader.h @@ -0,0 +1,16 @@ +#pragma once +#include +#include +#include +#include "Player.h" + +class SaveLoader +{ +private: + std::string filename; +public: + SaveLoader(std::string i_filename); + void save(Player& player); + void load(Player& player); +}; + diff --git a/sem2/Practics - DinoWars 1.5/classes/includes.h b/sem2/Practics - DinoWars 1.5/classes/includes.h new file mode 100644 index 00000000..3301e833 --- /dev/null +++ b/sem2/Practics - DinoWars 1.5/classes/includes.h @@ -0,0 +1,6 @@ +#pragma once +#include +#include "sfml_stuff.h" +#include "Dino.h" +#include "Player.h" +#include "SaveLoader.h" \ No newline at end of file diff --git a/sem2/Practics - DinoWars 1.5/classes/sfml_stuff.h b/sem2/Practics - DinoWars 1.5/classes/sfml_stuff.h new file mode 100644 index 00000000..22fc0651 --- /dev/null +++ b/sem2/Practics - DinoWars 1.5/classes/sfml_stuff.h @@ -0,0 +1,6 @@ +#pragma once + +#include "SFML\Graphics.hpp" +#include "SFML\Window.hpp" +#include "SFML\System.hpp" +#include "SFML\Audio.hpp" \ No newline at end of file diff --git a/sem2/Practics - DinoWars 1.5/main/main.cpp b/sem2/Practics - DinoWars 1.5/main/main.cpp new file mode 100644 index 00000000..f3c00d8a --- /dev/null +++ b/sem2/Practics - DinoWars 1.5/main/main.cpp @@ -0,0 +1,1041 @@ +#include "includes.h" +#include "windows.h" + +enum Scene {MainMenu, Buffer, Shop, Choosing, Battle, WinScreen, LooseScreen}; + +void get_rid_of_the_corpses(Player& player) +{ + for (auto it_dino{ player.dinos_owned.begin() }; it_dino != player.dinos_owned.end();) + { + Dino* cur_d = *it_dino; + if (!cur_d->is_alive) + { + it_dino = player.dinos_owned.erase(it_dino); + } + else + { + ++it_dino; + } + } +} +std::map ter_colors = +{ + {Mountain, sf::Color(176, 58, 41)}, + {River, sf::Color(41, 176, 148)}, + {Plains, sf::Color(123, 176, 41)} +}; + +std::map ter_texts = +{ + {River, "res/backgr_images/River.png"}, + {Plains, "res/backgr_images/Plains.png"}, + {Mountain, "res/backgr_images/Mountains.png"} +}; + +terrain rand_ter() +{ + int a = rand() % 3; + switch (a) + { + case 0: return River; + case 1: return Plains; + case 2: return Mountain; + } +} + +void make_MainMenu(sf::RenderWindow& window, Scene& cs, sf::Font& font) +{ + + sf::Event ev; + + sf::RectangleShape go_shop; + go_shop.setPosition(sf::Vector2f(300.f, 250.f)); + go_shop.setSize(sf::Vector2f(400.f, 200.f)); + go_shop.setFillColor(sf::Color::Cyan); + + sf::Text START; + START.setPosition(360.f, 280.f); + START.setFont(font); + START.setString("START"); + START.setCharacterSize(100); + START.setFillColor(sf::Color::Black); + + sf::RectangleShape exit; + exit.setPosition(930.f, 15.f); + exit.setSize(sf::Vector2f(50.f, 50.f)); + exit.setFillColor(sf::Color::Red); + exit.setOutlineThickness(3.f); + exit.setOutlineColor(sf::Color::White); + + while (window.isOpen()) + { + while (window.pollEvent(ev)) + { + //START + if (go_shop.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y) && ev.type == sf::Event::MouseButtonPressed) + { + //std::cout << "hover" << std::endl; + if (ev.key.code == sf::Mouse::Left) + { + cs = Buffer; + return; + } + } + + //EXIT + if (exit.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y) && ev.type == sf::Event::MouseButtonPressed) + { + //std::cout << "EXIT" << std::endl; + if (ev.key.code == sf::Mouse::Left) + { + window.close(); + return; + } + } + + window.clear(sf::Color(162, 239, 235)); + window.draw(go_shop); + window.draw(exit); + window.draw(START); + window.display(); + } + + } +} + +void make_Buffer(sf::RenderWindow& window, Scene& cs, sf::Font& font, Player& player) +{ + player.reset_dinos(); + sf::Event ev; + SaveLoader SL("Dino_save.txt"); + + // + sf::RectangleShape playerWindow; + sf::CircleShape coin_icon(30.f); + sf::Text coins_count; + std::string coin_message = "You have " + std::to_string(player.getCoins()) + " coins"; + { + playerWindow.setPosition(40.f, 50.f); + playerWindow.setSize(sf::Vector2f(440.f, 580.f)); + playerWindow.setFillColor(sf::Color(199, 253, 250)); + coin_icon.setPosition(sf::Vector2f(60.f, 120.f)); + coin_icon.setFillColor(sf::Color::Yellow); + coins_count.setFont(font); + coins_count.setFillColor(sf::Color::Black); + coins_count.setPosition(125.f, 130.f); + coins_count.setString(coin_message); + coins_count.setCharacterSize(30); + } + + // + sf::Text column_names; + std::vector dinos_info; + + int c = 0; + // + { + column_names.setFont(font); + column_names.setFillColor(sf::Color::Black); + column_names.setPosition(50.f, 210.f); + column_names.setString("YOUR LOVELY DINOS:"); + column_names.setCharacterSize(30); + + + for (int k = 0; k < player.dinos_owned.size(); k++) // + { + sf::Text c_text; + + c_text.setFont(font); + c_text.setFillColor(ter_colors[player.dinos_owned[k]->getPrefter()]); + c_text.setPosition(50.f, 250.f + 35 * k); + c_text.setString(player.dinos_owned[k]->dino_info()); + c_text.setCharacterSize(30); + + dinos_info.push_back(c_text); + } + + } + + // + sf::RectangleShape option_battle; + sf::Text BATTLE; + { + option_battle.setPosition(sf::Vector2f(500.f, 50.f)); + option_battle.setSize(sf::Vector2f(280.f, 80.f)); + option_battle.setFillColor(sf::Color(162, 239, 235)); + BATTLE.setPosition(530.f, 50.f); + BATTLE.setFont(font); + BATTLE.setString("BATTLE"); + BATTLE.setCharacterSize(60); + BATTLE.setFillColor(sf::Color::Red); + } + + // + sf::RectangleShape option_shop; + sf::Text SHOP; + { + option_shop.setPosition(sf::Vector2f(500.f, 150.f)); + option_shop.setSize(sf::Vector2f(280.f, 80.f)); + option_shop.setFillColor(sf::Color(162, 239, 235)); + SHOP.setPosition(560.f, 150.f); + SHOP.setFont(font); + SHOP.setString("SHOP"); + SHOP.setCharacterSize(60); + SHOP.setFillColor(sf::Color::Black); + } + + // + sf::RectangleShape option_display; + sf::Text DISPLAY; + { + option_display.setPosition(sf::Vector2f(500.f, 250.f)); + option_display.setSize(sf::Vector2f(280.f, 80.f)); + option_display.setFillColor(sf::Color(162, 239, 235)); + DISPLAY.setPosition(560.f, 250.f); + DISPLAY.setFont(font); + DISPLAY.setString("MENU"); + DISPLAY.setCharacterSize(60); + DISPLAY.setFillColor(sf::Color::Black); + } + + // + sf::RectangleShape option_save; + sf::Text SAVE; + { + option_save.setPosition(sf::Vector2f(500.f, 350.f)); + option_save.setSize(sf::Vector2f(280.f, 80.f)); + option_save.setFillColor(sf::Color(162, 239, 235)); + SAVE.setPosition(560.f, 350.f); + SAVE.setFont(font); + SAVE.setString("SAVE"); + SAVE.setCharacterSize(60); + SAVE.setFillColor(sf::Color::Black); + } + + // + sf::RectangleShape option_load; + sf::Text LOAD; + { + option_load.setPosition(sf::Vector2f(500.f, 450.f)); + option_load.setSize(sf::Vector2f(280.f, 80.f)); + option_load.setFillColor(sf::Color(162, 239, 235)); + LOAD.setPosition(560.f, 450.f); + LOAD.setFont(font); + LOAD.setString("LOAD"); + LOAD.setCharacterSize(60); + LOAD.setFillColor(sf::Color::Black); + } + + + while (window.isOpen()) + { + + while (window.pollEvent(ev)) + { + + option_load.setFillColor(sf::Color(162, 239, 235)); + option_save.setFillColor(sf::Color(162, 239, 235)); + option_shop.setFillColor(sf::Color(162, 239, 235)); + option_battle.setFillColor(sf::Color(162, 239, 235)); + option_display.setFillColor(sf::Color(162, 239, 235)); + + + //GOTO BATTLE + if (player.has_dinos() && option_battle.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) + { + option_battle.setFillColor(sf::Color(199, 253, 250)); + + if (ev.type == sf::Event::MouseButtonPressed && ev.key.code == sf::Mouse::Left) + { + // std::cout << "GO BATTLE" << std::endl; + cs = Choosing; + return; + } + } + //GOTO SHOP + if (option_shop.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) + { + option_shop.setFillColor(sf::Color(199, 253, 250)); + + if (ev.type == sf::Event::MouseButtonPressed && ev.key.code == sf::Mouse::Left) + { + // std::cout << "GO SHOP" << std::endl; + cs = Shop; + return; + } + } + //GOTO DISPLAY + if (option_display.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) + { + option_display.setFillColor(sf::Color(199, 253, 250)); + + if (ev.type == sf::Event::MouseButtonPressed && ev.key.code == sf::Mouse::Left) + { + //std::cout << "GO DISPLAY" << std::endl; + cs = MainMenu; + return; + } + } + //SAVE + if (option_save.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) + { + option_save.setFillColor(sf::Color(199, 253, 250)); + + if (ev.type == sf::Event::MouseButtonPressed && ev.key.code == sf::Mouse::Left) + { + SL.save(player); + // std::cout << "SAVE" << std::endl; + + return; + } + } + //LOAD + if (option_load.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) + { + option_load.setFillColor(sf::Color(199, 253, 250)); + + if (ev.type == sf::Event::MouseButtonPressed && ev.key.code == sf::Mouse::Left) + { + SL.load(player); + // std::cout << "LOAD" << std::endl; + + return; + } + } + } + + //RENDER + window.clear(sf::Color(162, 239, 235)); + window.draw(playerWindow); + window.draw(option_battle); + window.draw(BATTLE); + window.draw(option_shop); + window.draw(SHOP); + window.draw(option_display); + window.draw(DISPLAY); + window.draw(option_save); + window.draw(SAVE); + window.draw(option_load); + window.draw(LOAD); + + window.draw(coin_icon); + window.draw(coins_count); + + window.draw(column_names); + for (auto t : dinos_info) + { + window.draw(t); + } + + window.display(); + } + +} + +void make_Shop(sf::RenderWindow& window, Scene& cs, sf::Font& font, Player& player) +{ + sf::Event ev; + Dino* current_dino = new Dino(); + current_dino->set_params(sf::Vector2f(140.f, 100.f), sf::Vector2f(0.3f, 0.3f)); + sf::Text curdino_info, curdino_price; + { + curdino_info.setFont(font); + curdino_info.setFillColor(sf::Color::Black); + curdino_info.setCharacterSize(30); + curdino_info.setPosition(sf::Vector2f(100.f, 450.f)); + + curdino_price.setFont(font); + curdino_price.setFillColor(sf::Color::Yellow); + curdino_price.setCharacterSize(60); + curdino_price.setPosition(sf::Vector2f(400.f, 350.f)); + } + + // + sf::CircleShape coin_icon(30.f); + sf::Text coins_count; + std::string coin_message = "You have " + std::to_string(player.getCoins()) + " coins"; + { + coin_icon.setPosition(sf::Vector2f(140.f, 20.f)); + coin_icon.setFillColor(sf::Color::Yellow); + coins_count.setFont(font); + coins_count.setFillColor(sf::Color::Black); + coins_count.setPosition(205.f, 30.f); + coins_count.setString(coin_message); + coins_count.setCharacterSize(30); + } + + // + sf::RectangleShape return_buffer; + sf::Text FINISH; + { + return_buffer.setPosition(sf::Vector2f(580.f, 250.f)); + return_buffer.setSize(sf::Vector2f(300.f, 100.f)); + return_buffer.setFillColor(sf::Color(162, 239, 235)); + FINISH.setFont(font); + FINISH.setString("FINISH"); + FINISH.setFillColor(sf::Color::Black); + FINISH.setCharacterSize(80); + FINISH.setPosition(sf::Vector2f(610.f, 245.f)); + } + + // + sf::RectangleShape dino_window; + dino_window.setPosition(sf::Vector2f(100.f, 100.f)); + dino_window.setSize(sf::Vector2f(400.f, 400.f)); + dino_window.setFillColor(sf::Color(199, 253, 250)); + + // + sf::RectangleShape buy_button; + sf::Text BUY; + { + buy_button.setPosition(sf::Vector2f(100.f, 510.f)); + buy_button.setSize(sf::Vector2f(220.f, 70.f)); + buy_button.setFillColor(sf::Color(199, 253, 250)); + BUY.setFont(font); + BUY.setString("TAKE MY MONEY"); + BUY.setFillColor(sf::Color::Black); + BUY.setCharacterSize(30); + BUY.setPosition(sf::Vector2f(100.f, 525.f)); + } + + // + sf::RectangleShape newDino_button; + sf::Text NEW; + { + newDino_button.setPosition(sf::Vector2f(340.f, 510.f)); + newDino_button.setSize(sf::Vector2f(160.f, 70.f)); + newDino_button.setFillColor(sf::Color(199, 253, 250)); + NEW.setFont(font); + NEW.setString("NEW"); + NEW.setFillColor(sf::Color::Black); + NEW.setCharacterSize(40); + NEW.setPosition(sf::Vector2f(375.f, 520.f)); + } + + while (window.isOpen()) + { + curdino_info.setString(current_dino->dino_info()); + curdino_info.setFillColor(ter_colors[current_dino->getPrefter()]); + + while (window.pollEvent(ev)) + { + //current_dino->set_params(sf::Vector2f(140.f, 100.f), sf::Vector2f(0.3f, 0.3f)); + + + curdino_price.setString(std::to_string(current_dino->getCost())); + + coins_count.setString("You have " + std::to_string(player.getCoins()) + " coins"); + + return_buffer.setFillColor(sf::Color(162, 239, 235)); + buy_button.setFillColor(sf::Color(162, 239, 235)); + newDino_button.setFillColor(sf::Color(162, 239, 235)); + + //RETURN BUFFER + if (return_buffer.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) + { + return_buffer.setFillColor(sf::Color(199, 253, 250)); + + if (ev.type == sf::Event::MouseButtonPressed && ev.key.code == sf::Mouse::Left) + { + //std::cout << "RETURN BUFFER" << std::endl; + cs = Buffer; + return; + } + } + + //BUY DINO + if (current_dino->is_available(player.getCoins()) && buy_button.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) + { + buy_button.setFillColor(sf::Color(199, 253, 250)); + + if (ev.type == sf::Event::MouseButtonPressed && ev.key.code == sf::Mouse::Left) + { + //std::cout << "BUY" << std::endl; + Dino* dino_toBuy = current_dino; + player.buy_dino(dino_toBuy); + + + // + //delete current_dino; + current_dino = new Dino(); + current_dino->set_params(sf::Vector2f(140.f, 100.f), sf::Vector2f(0.3f, 0.3f)); + } + } + + //NEW DINO + if (newDino_button.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) + { + newDino_button.setFillColor(sf::Color(199, 253, 250)); + + if (ev.type == sf::Event::MouseButtonPressed && ev.key.code == sf::Mouse::Left) + { + //std::cout << "NEW DINO" << std::endl; + delete current_dino; + current_dino = new Dino(); + current_dino->set_params(sf::Vector2f(140.f, 100.f), sf::Vector2f(0.3f, 0.3f)); + } + } + } + + window.clear(sf::Color(162, 239, 235)); + window.draw(return_buffer); + window.draw(dino_window); + window.draw(buy_button); + window.draw(newDino_button); + window.draw(FINISH); + window.draw(BUY); + window.draw(NEW); + window.draw(coin_icon); + window.draw(coins_count); + + current_dino->draw(window); + window.draw(curdino_info); + window.draw(curdino_price); + window.display(); + } +} + +void make_Choosing(sf::RenderWindow& window, Scene& cs, sf::Font& font, Player& player) +{ + sf::Event ev; + int count = 0; + int dinos_num = player.dinos_owned.size(); + int dino_ptr = 0; // + Dino* current_dino = nullptr; // + + + + // + sf::RectangleShape curdino_window; + sf::Text curdino_info; + { + curdino_window.setPosition(sf::Vector2f(200.f, 100.f)); + curdino_window.setSize(sf::Vector2f(400.f, 400.f)); + curdino_window.setFillColor(sf::Color(199, 253, 250)); + + curdino_info.setFont(font); + curdino_info.setFillColor(sf::Color::Black); + curdino_info.setCharacterSize(30); + curdino_info.setPosition(sf::Vector2f(200.f, 60.f)); + } + + // + sf::RectangleShape prev_dino; + sf::Text left_arrow; + { + prev_dino.setPosition(sf::Vector2f(120.f, 260.f)); + prev_dino.setSize(sf::Vector2f(70.f, 70.f)); + prev_dino.setFillColor(sf::Color(199, 253, 250)); + + left_arrow.setFont(font); + left_arrow.setString("<"); + left_arrow.setFillColor(sf::Color::Black); + left_arrow.setCharacterSize(80); + left_arrow.setPosition(sf::Vector2f(130.f, 240.f)); + } + + // + sf::RectangleShape next_dino; + sf::Text right_arrow; + { + next_dino.setPosition(sf::Vector2f(610.f, 260.f)); + next_dino.setSize(sf::Vector2f(70.f, 70.f)); + next_dino.setFillColor(sf::Color(199, 253, 250)); + + right_arrow.setFont(font); + right_arrow.setString(">"); + right_arrow.setFillColor(sf::Color::Black); + right_arrow.setCharacterSize(80); + right_arrow.setPosition(sf::Vector2f(620.f, 240.f)); + } + + // + sf::RectangleShape choose_current; + sf::Text CHOOSE; + { + choose_current.setPosition(sf::Vector2f(200.f, 510.f)); + choose_current.setSize(sf::Vector2f(400.f, 70.f)); + choose_current.setFillColor(sf::Color(199, 253, 250)); + + CHOOSE.setFont(font); + CHOOSE.setString("I CHOOSE YOU"); + CHOOSE.setFillColor(sf::Color::Black); + CHOOSE.setCharacterSize(60); + CHOOSE.setPosition(sf::Vector2f(215.f, 510.f)); + } + + // + sf::RectangleShape go_anyways; + sf::Text LETSGO; + { + go_anyways.setPosition(sf::Vector2f(630.f, 350.f)); + go_anyways.setSize(sf::Vector2f(300.f, 100.f)); + go_anyways.setFillColor(sf::Color(199, 253, 250)); + + LETSGO.setFont(font); + LETSGO.setString("LET'S GO!"); + LETSGO.setFillColor(sf::Color::Black); + LETSGO.setCharacterSize(70); + LETSGO.setPosition(sf::Vector2f(630.f, 350.f)); + } + + while (window.isOpen()) + { + + if (count < 3) + { + current_dino = player.dinos_owned[dino_ptr]; + current_dino->set_params(sf::Vector2f(200.f, 100.f), sf::Vector2f(0.4f, 0.4f)); + curdino_info.setString(current_dino->dino_info()); + curdino_info.setFillColor(ter_colors[current_dino->getPrefter()]); + + while (window.pollEvent(ev)) + { + + prev_dino.setFillColor(sf::Color(162, 239, 235)); + next_dino.setFillColor(sf::Color(162, 239, 235)); + go_anyways.setFillColor(sf::Color(162, 239, 235)); + choose_current.setFillColor(sf::Color(162, 239, 235)); + + // + if (dino_ptr < dinos_num - 1 && next_dino.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) + { + next_dino.setFillColor(sf::Color(199, 253, 250)); + if (ev.type == sf::Event::MouseButtonPressed && ev.key.code == sf::Mouse::Left) + { + //std::cout << "NEXT " << dino_ptr << std::endl; + dino_ptr++; + } + } + // + if (dino_ptr > 0 && prev_dino.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) + { + prev_dino.setFillColor(sf::Color(199, 253, 250)); + if (ev.type == sf::Event::MouseButtonPressed && ev.key.code == sf::Mouse::Left) + { + // std::cout << "PREVIOUS " << dino_ptr << std::endl; + dino_ptr--; + } + } + // + if (!current_dino->is_dino_chosen() && choose_current.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) + { + choose_current.setFillColor(sf::Color(199, 253, 250)); + if (ev.type == sf::Event::MouseButtonPressed && ev.key.code == sf::Mouse::Left) + { + // std::cout << "CHOOSE" << std::endl; + player.chosen_dinos[count] = current_dino; + current_dino->set_chosen(true); + count++; + } + } + + // + if (count >=1 && go_anyways.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) + { + go_anyways.setFillColor(sf::Color(199, 253, 250)); + if (ev.type == sf::Event::MouseButtonPressed && ev.key.code == sf::Mouse::Left) + { + //std::cout << "GO ANYWAYS" << std::endl; + cs = Battle; + return; + } + } + } + } + else + { + cs = Battle; + return; + } + + window.clear(sf::Color(162, 239, 235)); + + window.draw(curdino_window); + window.draw(next_dino); + window.draw(prev_dino); + window.draw(choose_current); + window.draw(go_anyways); + + window.draw(left_arrow); + window.draw(right_arrow); + window.draw(CHOOSE); + window.draw(curdino_info); + window.draw(LETSGO); + + current_dino->draw(window); + window.display(); + } +} + +void make_Battle(sf::RenderWindow& window, Scene& cs, sf::Font& font, Player& player) +{ + terrain current_terrain = rand_ter(); + sf::Texture ter_text; + sf::Sprite ter_backgr; + ter_text.loadFromFile(ter_texts[current_terrain]); + ter_backgr.setTexture(ter_text); + + sf::Event ev; + Player enemy(1); // , + enemy.generate_dinos(); // + + int my_ptr = 0; + int enemy_ptr = 0; + bool just_attack = false; + Dino* my_current_dino = player.chosen_dinos[0]; + Dino* enemy_current_dino = enemy.chosen_dinos[0]; + sf::Text my_cnt; + sf::Text en_cnt; + { + my_cnt.setFont(font); + my_cnt.setCharacterSize(48); + my_cnt.setFillColor(sf::Color::White); + my_cnt.setOutlineThickness(4); + my_cnt.setOutlineColor(sf::Color::Green); + + my_cnt.setPosition(100.f, 140.f); + + en_cnt.setFont(font); + en_cnt.setCharacterSize(48); + en_cnt.setFillColor(sf::Color::White); + en_cnt.setOutlineThickness(4); + en_cnt.setOutlineColor(sf::Color::Red); + + en_cnt.setPosition(600.f, 140.f); + } + + // + sf::RectangleShape turn; + turn.setPosition(sf::Vector2f(820.f, 600.f)); + turn.setSize(sf::Vector2f(140.f, 50.f)); + turn.setFillColor(sf::Color::Blue); + + // + sf::RectangleShape our_hpb; + sf::RectangleShape en_hpb; + sf::RectangleShape our_outline; + sf::RectangleShape en_outline; + + sf::Text our_hp; + sf::Text enemy_hp; + + { + our_hpb.setPosition(sf::Vector2f(100.f, 500.f)); + our_hpb.setFillColor(sf::Color::Green); + our_hpb.setSize(sf::Vector2f(300.f, 40.f)); + our_outline.setOutlineColor(sf::Color::White); + our_outline.setOutlineThickness(5.f); + our_outline.setPosition(sf::Vector2f(100.f, 500.f)); + our_outline.setSize(sf::Vector2f(300.f, 40.f)); + + en_hpb.setPosition(sf::Vector2f(600.f, 500.f)); + en_hpb.setFillColor(sf::Color::Red); + en_hpb.setSize(sf::Vector2f(300.f, 40.f)); + en_outline.setOutlineColor(sf::Color::White); + en_outline.setOutlineThickness(5.f); + en_outline.setPosition(sf::Vector2f(600.f, 500.f)); + en_outline.setSize(sf::Vector2f(300.f, 40.f)); + + our_hp.setFont(font); + our_hp.setPosition(40.f, 500.f); + our_hp.setFillColor(sf::Color::Green); + our_hp.setCharacterSize(30); + + enemy_hp.setFont(font); + enemy_hp.setPosition(540.f, 500.f); + enemy_hp.setFillColor(sf::Color::Red); + enemy_hp.setCharacterSize(30); + + } + + while (window.isOpen()) + { + en_cnt.setString(std::to_string(enemy_ptr + 1)); + my_cnt.setString(std::to_string(my_ptr + 1)); + while (window.pollEvent(ev)) + { + my_current_dino = player.chosen_dinos[my_ptr]; + enemy_current_dino = enemy.chosen_dinos[enemy_ptr]; + my_current_dino->set_params(sf::Vector2f(100.f, 200.f), sf::Vector2f(0.3f, 0.3f)); + my_current_dino->set_flip(); + enemy_current_dino->set_params(sf::Vector2f(600.f, 200.f), sf::Vector2f(0.3f, 0.3f)); + + our_hp.setString(std::to_string(my_current_dino->get_hp())); + enemy_hp.setString(std::to_string(enemy_current_dino->get_hp())); + + + + if (turn.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y) && ev.type == sf::Event::MouseButtonPressed) + { + if (ev.key.code == sf::Mouse::Left) + { + //std::cout << "NEW TURN" << std::endl; + + // ... + enemy_current_dino->set_hp(my_current_dino->damage(current_terrain)); + + // ???? + if (!enemy_current_dino->is_alive && enemy_ptr < 2) + { + + enemy_ptr++; + enemy_current_dino = enemy.chosen_dinos[enemy_ptr]; + enemy_current_dino->set_params(sf::Vector2f(600.f, 200.f), sf::Vector2f(0.3f, 0.3f)); + //std::cout << "NEW DINO ENEMY" << std::endl; + } + + // + if (!enemy.any_dino_alive()) + { + // std::cout << "YOU WIN" << std::endl; + player.giveCoins(1000); + cs = WinScreen; + get_rid_of_the_corpses(player); + return; + } + + en_hpb.setScale(sf::Vector2f(enemy_current_dino->get_hp_float(), 1.f)); + just_attack = true; + + my_current_dino->set_hp(enemy_current_dino->damage(current_terrain)); + + // ??? + if (!my_current_dino->is_alive && my_ptr < 2) + { + my_ptr++; + if (player.chosen_dinos[my_ptr] != nullptr) + { + my_current_dino = player.chosen_dinos[my_ptr]; + my_current_dino->set_params(sf::Vector2f(100.f, 200.f), sf::Vector2f(0.3f, 0.3f)); + //std::cout << "NEW DINO YOU" << std::endl; + } + } + + // + if (!player.any_dino_alive()) + { + //std::cout << "YOU LOSE" << std::endl; + cs = LooseScreen; + get_rid_of_the_corpses(player); + return; + } + + + //our_hpb.setScale(sf::Vector2f(my_current_dino->get_hp_float(), 1.f)); + + } + } + } + if (just_attack) + { + window.clear(sf::Color(162, 239, 235)); + window.draw(ter_backgr); + window.draw(turn); + window.draw(our_outline); + window.draw(en_outline); + window.draw(our_hp); + window.draw(en_hpb); + window.draw(our_hpb); + window.draw(enemy_hp); + window.draw(my_cnt); + window.draw(en_cnt); + + my_current_dino->draw(window); + enemy_current_dino->draw(window); + just_attack = false; + + + window.display(); + } + else + { + our_hpb.setScale(sf::Vector2f(my_current_dino->get_hp_float(), 1.f)); + window.clear(sf::Color(162, 239, 235)); + window.draw(ter_backgr); + window.draw(turn); + window.draw(our_outline); + window.draw(en_outline); + window.draw(our_hp); + window.draw(en_hpb); + window.draw(our_hpb); + window.draw(enemy_hp); + window.draw(my_cnt); + window.draw(en_cnt); + + my_current_dino->draw(window); + enemy_current_dino->draw(window); + + Sleep(500); + + window.display(); + } + } +} + +void make_WinScreen(sf::RenderWindow& window, Scene& cs, sf::Font& font) +{ + sf::Event ev; + + sf::Text YOUWIN; + YOUWIN.setCharacterSize(120); + YOUWIN.setFillColor(sf::Color::Green); + YOUWIN.setFont(font); + YOUWIN.setString("YOU WIN"); + YOUWIN.setPosition(200.f, 200.f); + + sf::RectangleShape contb; + sf::Text CONT; + sf::Text win_mes; + { + contb.setPosition(300.f, 500.f); + contb.setFillColor(sf::Color(162, 239, 235)); + contb.setSize(sf::Vector2f(300.f, 70.f)); + CONT.setCharacterSize(60); + CONT.setFillColor(sf::Color::Black); + CONT.setFont(font); + CONT.setString("CONTINUE"); + CONT.setPosition(310.f, 500.f); + + win_mes.setCharacterSize(30); + win_mes.setFillColor(sf::Color::Black); + win_mes.setFont(font); + win_mes.setString("It seems that luck is on your side \n Take you 1000 coins and get out."); + win_mes.setPosition(240.f, 350.f); + } + + + while (window.isOpen()) + { + while (window.pollEvent(ev)) + { + contb.setFillColor(sf::Color(162, 239, 235)); + //GOTO BUFFER + if (contb.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) + { + contb.setFillColor(sf::Color(199, 253, 250)); + + if (ev.type == sf::Event::MouseButtonPressed && ev.key.code == sf::Mouse::Left) + { + //std::cout << "CONTINUE" << std::endl; + cs = Buffer; + return; + } + } + } + + window.clear(sf::Color(162, 239, 235)); + + window.draw(YOUWIN); + window.draw(contb); + window.draw(win_mes); + window.draw(CONT); + + window.display(); + } +} + +void make_LooseScreen(sf::RenderWindow& window, Scene& cs, sf::Font& font) +{ + sf::Event ev; + + sf::Text YOUWIN; + YOUWIN.setCharacterSize(120); + YOUWIN.setFillColor(sf::Color::Red); + YOUWIN.setFont(font); + YOUWIN.setString("YOU LOOSE"); + YOUWIN.setPosition(200.f, 200.f); + + sf::RectangleShape contb; + sf::Text CONT; + contb.setPosition(300.f, 500.f); + contb.setFillColor(sf::Color(162, 239, 235)); + contb.setSize(sf::Vector2f(300.f, 70.f)); + CONT.setCharacterSize(60); + CONT.setFillColor(sf::Color::Black); + CONT.setFont(font); + CONT.setString("CONTINUE"); + CONT.setPosition(310.f, 500.f); + + while (window.isOpen()) + { + while (window.pollEvent(ev)) + { + contb.setFillColor(sf::Color(162, 239, 235)); + //GOTO BUFFER + if (contb.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)) + { + contb.setFillColor(sf::Color(199, 253, 250)); + + if (ev.type == sf::Event::MouseButtonPressed && ev.key.code == sf::Mouse::Left) + { + // std::cout << "CONTINUE" << std::endl; + cs = Buffer; + return; + } + } + } + + window.clear(sf::Color(162, 239, 235)); + + window.draw(YOUWIN); + window.draw(contb); + window.draw(CONT); + + window.display(); + } +} + + +int main() +{ + sf::Font Barlow_R; + Barlow_R.loadFromFile("res/Barlow-Regular.ttf"); + + // + sf::RenderWindow gameWindow(sf::VideoMode(1000, 700), "DINO WARS 1.5", sf::Style::Titlebar | sf::Style::Close); + gameWindow.setFramerateLimit(30); + Scene current_scene = MainMenu; + + Player player(300); + + + for (auto d : player.dinos_owned) + { + std::cout << d->dino_info() << std::endl; + } + + // () + while (true) + { + + + switch (current_scene) + { + case MainMenu: + make_MainMenu(gameWindow, current_scene, Barlow_R); + break; + case Buffer: + make_Buffer(gameWindow, current_scene, Barlow_R, player); + break; + case Shop: + make_Shop(gameWindow, current_scene, Barlow_R, player); + break; + case Choosing: + make_Choosing(gameWindow, current_scene, Barlow_R, player); + break; + case Battle: + make_Battle(gameWindow, current_scene, Barlow_R, player); + break; + case WinScreen: + make_WinScreen(gameWindow, current_scene, Barlow_R); + break; + case LooseScreen: + make_LooseScreen(gameWindow, current_scene, Barlow_R); + break; + } + + } + + return 0; +} diff --git a/sem2/Practics - DinoWars 1.5/main/main.h b/sem2/Practics - DinoWars 1.5/main/main.h new file mode 100644 index 00000000..6f70f09b --- /dev/null +++ b/sem2/Practics - DinoWars 1.5/main/main.h @@ -0,0 +1 @@ +#pragma once