From 977a4ed0e75996ee7572977ef3b5b863454f80ce Mon Sep 17 00:00:00 2001 From: DaniilYR Date: Mon, 1 Jun 2020 22:35:22 +0300 Subject: [PATCH] [8303] Rudko Lab2 --- 8303/Rudko_Daniil_lb2/Report_OOP_2.pdf | Bin 0 -> 40692 bytes 8303/Rudko_Daniil_lb2/base.cpp | 33 ++++++++ 8303/Rudko_Daniil_lb2/base.h | 22 +++++ 8303/Rudko_Daniil_lb2/deathcard.h | 25 ++++++ 8303/Rudko_Daniil_lb2/forest.h | 34 ++++++++ 8303/Rudko_Daniil_lb2/gfield.cpp | 92 +++++++++++++++++++++ 8303/Rudko_Daniil_lb2/gfield.h | 33 ++++++++ 8303/Rudko_Daniil_lb2/land.h | 34 ++++++++ 8303/Rudko_Daniil_lb2/landscape.cpp | 6 ++ 8303/Rudko_Daniil_lb2/landscape.h | 14 ++++ 8303/Rudko_Daniil_lb2/main.cpp | 38 +++++++++ 8303/Rudko_Daniil_lb2/negativecard.h | 24 ++++++ 8303/Rudko_Daniil_lb2/neutralobkect.h | 11 +++ 8303/Rudko_Daniil_lb2/positivecard.h | 24 ++++++ 8303/Rudko_Daniil_lb2/swamp.h | 34 ++++++++ 8303/Rudko_Daniil_lb2/transformationcard.h | 24 ++++++ 8303/Rudko_Daniil_lb2/unit.cpp | 66 +++++++++++++++ 8303/Rudko_Daniil_lb2/unit.h | 73 ++++++++++++++++ 18 files changed, 587 insertions(+) create mode 100644 8303/Rudko_Daniil_lb2/Report_OOP_2.pdf create mode 100644 8303/Rudko_Daniil_lb2/base.cpp create mode 100644 8303/Rudko_Daniil_lb2/base.h create mode 100644 8303/Rudko_Daniil_lb2/deathcard.h create mode 100644 8303/Rudko_Daniil_lb2/forest.h create mode 100644 8303/Rudko_Daniil_lb2/gfield.cpp create mode 100644 8303/Rudko_Daniil_lb2/gfield.h create mode 100644 8303/Rudko_Daniil_lb2/land.h create mode 100644 8303/Rudko_Daniil_lb2/landscape.cpp create mode 100644 8303/Rudko_Daniil_lb2/landscape.h create mode 100644 8303/Rudko_Daniil_lb2/main.cpp create mode 100644 8303/Rudko_Daniil_lb2/negativecard.h create mode 100644 8303/Rudko_Daniil_lb2/neutralobkect.h create mode 100644 8303/Rudko_Daniil_lb2/positivecard.h create mode 100644 8303/Rudko_Daniil_lb2/swamp.h create mode 100644 8303/Rudko_Daniil_lb2/transformationcard.h create mode 100644 8303/Rudko_Daniil_lb2/unit.cpp create mode 100644 8303/Rudko_Daniil_lb2/unit.h diff --git a/8303/Rudko_Daniil_lb2/Report_OOP_2.pdf b/8303/Rudko_Daniil_lb2/Report_OOP_2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..40490e71e06384c28aff07472aeaf5756ecc1bc9 GIT binary patch literal 40692 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 literal 0 HcmV?d00001 diff --git a/8303/Rudko_Daniil_lb2/base.cpp b/8303/Rudko_Daniil_lb2/base.cpp new file mode 100644 index 000000000..525cf9154 --- /dev/null +++ b/8303/Rudko_Daniil_lb2/base.cpp @@ -0,0 +1,33 @@ +#include "base.h" + +Base::Base(int x, int y, GField* field){ + this->field = field; + if(field->map1[x][y] == nullptr && !flag_base){ + Unit* BASE = new Unit; + BASE->x = x; + BASE->y = y; + BASE->health = 1000; + BASE->name = "BASE"; + field->map1[x][y] = BASE; + flag_base = 1; + } +} + +void Base::CreatureUnit(int x, int y, std::string Name){ + Unit* unit; + //std::vector> map = field->getMap(); + if(Name == "scorpio") { unit = new Scorpio(); }//num++; } + if(Name == "mammoth") { unit = new Mammoth(); }//num++; } + if(Name == "frog") { unit = new Frog(); }//num++; } + if(Name == "kangaroo"){ unit = new Kangaroo(); }//num++; } + if(Name == "swallow") { unit = new Swallow(); }//num++; } + if(Name == "hawk") { unit = new Hawk(); }//num++; } + if(field->map1[x][y] == nullptr){ + counter++; + field->addUnit(unit, x, y); + } +} + +int Base::getCount(){ + return counter; +} diff --git a/8303/Rudko_Daniil_lb2/base.h b/8303/Rudko_Daniil_lb2/base.h new file mode 100644 index 000000000..0cbe66998 --- /dev/null +++ b/8303/Rudko_Daniil_lb2/base.h @@ -0,0 +1,22 @@ +#ifndef BASE_H +#define BASE_H + +#include "unit.h" +#include "gfield.h" +#include + +class Base +{ +private: + GField* field; + int base_helth; + int counter = 0; + bool flag_base = 0; + +public: + Base(int, int, GField*); + void CreatureUnit(int, int, std::string); + int getCount(); +}; + +#endif // BASE_H diff --git a/8303/Rudko_Daniil_lb2/deathcard.h b/8303/Rudko_Daniil_lb2/deathcard.h new file mode 100644 index 000000000..d2978cce1 --- /dev/null +++ b/8303/Rudko_Daniil_lb2/deathcard.h @@ -0,0 +1,25 @@ +#ifndef DEATHCARD_H +#define DEATHCARD_H + +#include "neutralobkect.h" +#include "gfield.h" + +class DeathCard : public Neutral +{ +private: + std::string name_death; + GField* field; +public: + DeathCard(GField* field){} + std::string name() override{ + name_death = "death_card"; + + } + void operator /(Unit* unit){ + this->field = field; + field->deleteUnite(unit); + } + +}; + +#endif // DEATHCARD_H diff --git a/8303/Rudko_Daniil_lb2/forest.h b/8303/Rudko_Daniil_lb2/forest.h new file mode 100644 index 000000000..28830224c --- /dev/null +++ b/8303/Rudko_Daniil_lb2/forest.h @@ -0,0 +1,34 @@ +#ifndef FOREST_H +#define FOREST_H + +#include "landscape.h" + +class Forest: public Landscape +{ +public: + Forest(){}; + + std::string namelandscape() override{ + return "forest"; + } + + bool isMoved(Unit* unit) override{ + if(unit->type == "MeleeWarrior") + return true; + if(unit->type == "MediumWarrior") + return true; + if(unit->type == "DistanceWarrior") + return true; + } + + bool isDamage(Unit* unit) override{ + if(unit->type == "MeleeWarrior") + return true; + if(unit->type == "MediumWarrior") + return true; + if(unit->type == "DistanceWarrior") + return false; + } +}; + +#endif // FOREST_H diff --git a/8303/Rudko_Daniil_lb2/gfield.cpp b/8303/Rudko_Daniil_lb2/gfield.cpp new file mode 100644 index 000000000..be4ed158d --- /dev/null +++ b/8303/Rudko_Daniil_lb2/gfield.cpp @@ -0,0 +1,92 @@ +#include "gfield.h" + +using namespace std; + +GField::GField(int x, int y) { + x = max(x,y); + this->length = x; + this->width = x; + this->numberUnit = 0; + + //map = new Unit** [this->length]; + map1.resize(this->width); + for (int i = 0; i < this->width; i++) + { + //map[i] = new Unit* [x]; + map1[i].resize(this->length); + for (int j = 0; j < this->length; j++){ + //map[i][j] = nullptr; + map1[i][j] = nullptr; + } + } + + +} + +GField::GField(const GField &gfield) {} + + + +void GField::addUnit(Unit* unite, int x, int y) { + if (x < this->length && y < this->width && this->numberUnit < this->maxnumberUnit) { + //map[unite->x][unite->y] = unite; + map1[x][y] = unite; + this->numberUnit++; + } + else + if(this->numberUnit >= this->maxnumberUnit) + std::cout << "На поле максимальное количество юнитов" << std::endl; + } + +void GField::moveUnite(Unit* unite, int newx, int newy) { + if (map1[newx][newy] == nullptr) { + map1[unite->x][unite->y] = nullptr; + unite->move(newx, newy); + unite->x = newx; + unite->y = newy; + map1[unite->x][unite->y] = unite; + } + else { + std::cout << "Клетка игрового поля занята" << std::endl; + } + } + +void GField::deleteUnite(Unit* unite) { + int x = unite->x; + int y = unite->y; + delete map1[unite->x][unite->y]; + map1[x][y] = nullptr; + + this->numberUnit--; + } + +void GField::printField() { + for (int i = 0; i < this->length; i++) { + for (int j = 0; j < this->width; j++) + if (map1[i][j] != nullptr) { + cout << map1[i][j]->name << " "; + } + else { + cout << "X "; + } + cout << endl; + } +} + +std::vector> GField::getMap(){ + return map1; +} +void GField::setMap(std::vector> map){ + map1 = map; +} +int GField::getMaxUnit(){ + return maxnumberUnit; +} +int GField::getNumUnit(){ + return numberUnit; +} +void GField::setNumUnit(int num){ + numberUnit = num; +} + + diff --git a/8303/Rudko_Daniil_lb2/gfield.h b/8303/Rudko_Daniil_lb2/gfield.h new file mode 100644 index 000000000..9f723cd70 --- /dev/null +++ b/8303/Rudko_Daniil_lb2/gfield.h @@ -0,0 +1,33 @@ +#ifndef GFIELD_H +#define GFIELD_H + +#include "unit.h" +#include + +class GField{ +private: + int length, width; + int numberUnit; + const int maxnumberUnit = 5; + //Unit*** map; + + +public: + + std::vector> map1; + + GField(const GField &gfield); + + GField(int , int ); + void addUnit(Unit*, int, int); + void moveUnite(Unit* , int , int); + void deleteUnite(Unit*); + void printField(); + int getMaxUnit(); + int getNumUnit(); + void setNumUnit(int); + std::vector> getMap(); + void setMap(std::vector>); +}; + +#endif // GFIELD_H diff --git a/8303/Rudko_Daniil_lb2/land.h b/8303/Rudko_Daniil_lb2/land.h new file mode 100644 index 000000000..e08057d53 --- /dev/null +++ b/8303/Rudko_Daniil_lb2/land.h @@ -0,0 +1,34 @@ +#ifndef LAND_H +#define LAND_H + +#include "landscape.h" + +class Land: public Landscape +{ +public: + Land(){}; + + std::string namelandscape() override{ + return "land"; + } + + bool isMoved(Unit* unit) override{ + if(unit->type == "MeleeWarrior") + return true; + if(unit->type == "MediumWarrior") + return true; + if(unit->type == "DistanceWarrior") + return true; + } + + bool isDamage(Unit* unit) override{ + if(unit->type == "MeleeWarrior") + return false; + if(unit->type == "MediumWarrior") + return false; + if(unit->type == "DistanceWarrior") + return false; + } +}; + +#endif // LAND_H diff --git a/8303/Rudko_Daniil_lb2/landscape.cpp b/8303/Rudko_Daniil_lb2/landscape.cpp new file mode 100644 index 000000000..62b18b3d9 --- /dev/null +++ b/8303/Rudko_Daniil_lb2/landscape.cpp @@ -0,0 +1,6 @@ +#include "landscape.h" + +Landscape::Landscape() +{ + +} diff --git a/8303/Rudko_Daniil_lb2/landscape.h b/8303/Rudko_Daniil_lb2/landscape.h new file mode 100644 index 000000000..62bb0919d --- /dev/null +++ b/8303/Rudko_Daniil_lb2/landscape.h @@ -0,0 +1,14 @@ +#ifndef LANDSCAPE_H +#define LANDSCAPE_H + +#include "unit.h" + +class Landscape +{ +public: + virtual bool isMoved(Unit* ) = 0; + virtual bool isDamage(Unit* ) = 0; + virtual std::string namelandscape() = 0; +}; + +#endif // LANDSCAPE_H diff --git a/8303/Rudko_Daniil_lb2/main.cpp b/8303/Rudko_Daniil_lb2/main.cpp new file mode 100644 index 000000000..5fc5527ab --- /dev/null +++ b/8303/Rudko_Daniil_lb2/main.cpp @@ -0,0 +1,38 @@ +#include +#include "unit.h" +#include "gfield.h" +#include "base.h" + +using namespace std; + +int main(){ + cout << "Введите размеры поля" << endl; + int a, b, c, d; + cin >> a >> b; + GField* field = new GField(a, b); + field->printField(); + cout << "Введите координаты базы" << endl; + cin >> a >> b; + Base* base = new Base(a-1, b-1, field); + field->printField(); + cout << "Начальное число юнитов на поле" << endl; + cin >> a; + cout << "Имена юнитов:\n" + "\t\t scorpio\n" + "\t\t mammoth\n" + "\t\t frog\n" + "\t\t kangaroo\n" + "\t\t swallow\n" + "\t\t hawk" << endl; + for(int i = 0; i < a; i++){ + int x,y; + string name; + cout << "Введите имя юнита и его координаты" << endl; + cin >> name >> x >> y; + base->CreatureUnit(x-1, y-1, name); + } + field->printField(); + + return 0; +} + diff --git a/8303/Rudko_Daniil_lb2/negativecard.h b/8303/Rudko_Daniil_lb2/negativecard.h new file mode 100644 index 000000000..1b44f7a46 --- /dev/null +++ b/8303/Rudko_Daniil_lb2/negativecard.h @@ -0,0 +1,24 @@ +#ifndef NEGATIVECARD_H +#define NEGATIVECARD_H + +#include "neutralobkect.h" + +class NegativeCard : public Neutral +{ +private: + std::string name_minus; +public: + NegativeCard(){} + std::string name() override{ + name_minus = "negative_card"; + + } + void operator -(Unit* unit){ + unit->health -= 10; + unit->armor -= 10; + unit->attack -=10; + } + +}; + +#endif // NEGATIVECARD_H diff --git a/8303/Rudko_Daniil_lb2/neutralobkect.h b/8303/Rudko_Daniil_lb2/neutralobkect.h new file mode 100644 index 000000000..6e5e147b1 --- /dev/null +++ b/8303/Rudko_Daniil_lb2/neutralobkect.h @@ -0,0 +1,11 @@ +#ifndef NEUTRALOBKECT_H +#define NEUTRALOBKECT_H + +#include "unit.h" + +class Neutral{ +public: + virtual std::string name() = 0; +}; + +#endif // NEUTRALOBKECT_H diff --git a/8303/Rudko_Daniil_lb2/positivecard.h b/8303/Rudko_Daniil_lb2/positivecard.h new file mode 100644 index 000000000..ac0c77845 --- /dev/null +++ b/8303/Rudko_Daniil_lb2/positivecard.h @@ -0,0 +1,24 @@ +#ifndef HELTHCARD_H +#define HELTHCARD_H + +#include "neutralobkect.h" + +class PositiveCard : public Neutral +{ +private: + std::string name_plus; +public: + PositiveCard(){} + std::string name() override{ + name_plus = "positive_card"; + + } + void operator +(Unit* unit){ + unit->health += 10; + unit->armor += 10; + unit->attack +=10; + } + +}; + +#endif // HELTHCARD_H diff --git a/8303/Rudko_Daniil_lb2/swamp.h b/8303/Rudko_Daniil_lb2/swamp.h new file mode 100644 index 000000000..6d111cca4 --- /dev/null +++ b/8303/Rudko_Daniil_lb2/swamp.h @@ -0,0 +1,34 @@ +#ifndef SWAMP_H +#define SWAMP_H + +#include "landscape.h" + +class Swamp: public Landscape +{ +public: + Swamp(){}; + + std::string namelandscape() override{ + return "swamp"; + } + + bool isMoved(Unit* unit) override{ + if(unit->type == "MeleeWarrior") + return false; + if(unit->type == "MediumWarrior") + return false; + if(unit->type == "DistanceWarrior") + return true; + } + + bool isDamage(Unit* unit) override{ + if(unit->type == "MeleeWarrior") + return true; + if(unit->type == "MediumWarrior") + return true; + if(unit->type == "DistanceWarrior") + return false; + } +}; + +#endif // SWAMP_H diff --git a/8303/Rudko_Daniil_lb2/transformationcard.h b/8303/Rudko_Daniil_lb2/transformationcard.h new file mode 100644 index 000000000..1146ffa06 --- /dev/null +++ b/8303/Rudko_Daniil_lb2/transformationcard.h @@ -0,0 +1,24 @@ +#ifndef TRANSFORMATIONCARD_H +#define TRANSFORMATIONCARD_H + +#include "neutralobkect.h" + +class TransformationCard : public Neutral +{ +private: + std::string name_transform; +public: + TransformationCard() {} + std::string name() override{ + name_transform = "transformation_card"; + + } + + void operator*(Unit* unit){ + unit->attack += 20; + unit->armor -= 10; + } + +}; + +#endif // TRANSFORMATIONCARD_H diff --git a/8303/Rudko_Daniil_lb2/unit.cpp b/8303/Rudko_Daniil_lb2/unit.cpp new file mode 100644 index 000000000..0f4f71988 --- /dev/null +++ b/8303/Rudko_Daniil_lb2/unit.cpp @@ -0,0 +1,66 @@ +#include "unit.h" + +void Unit::move(int x, int y) { + this->x = x - 1; + this->y = y - 1; +} + +Scorpio::Scorpio() { + //this->x = x; + //this->y = y; + this->type = "MeleeWarrior"; + this->name = "scorpio"; + this->health = 100; + this->armor = 50; + this->attack = 30; +} + +Mammoth::Mammoth() { + //this->x = x; + //this->y = y; + this->type = "MeleeWarrior"; + this->name = "mammoth"; + this->health = 200; + this->armor = 70; + this->attack = 50; +} + +Frog::Frog() { + //this->x = x; + //this->y = y; + this->type = "MediumWarrior"; + this->name = "frog"; + this->health = 100; + this->armor = 50; + this->attack = 10; +} + +Kangaroo::Kangaroo() { + //this->x = x; + //this->y = y; + this->type = "MediumWarrior"; + this->name = "kangaroo"; + this->health = 100; + this->armor = 5; + this->attack = 67; +} + +Swallow::Swallow() { + //this->x = x; + //this->y = y; + this->type = "DistanceWarrior"; + this->name = "swallow"; + this->health = 100; + this->armor = 50; + this->attack = 30; +} + +Hawk::Hawk() { + //this->x = x; + //this->y = y; + this->type = "DistanceWarrior"; + this->name = "hawk"; + this->health = 100; + this->armor = 50; + this->attack = 30; +} diff --git a/8303/Rudko_Daniil_lb2/unit.h b/8303/Rudko_Daniil_lb2/unit.h new file mode 100644 index 000000000..3fe1b30ee --- /dev/null +++ b/8303/Rudko_Daniil_lb2/unit.h @@ -0,0 +1,73 @@ +#ifndef UNIT_H +#define UNIT_H + +#include +#include + +class Unit { +public: + int x, y; + int health; + int armor; + int attack; + std::string type; + std::string name; + void move(int, int); +}; + +class MeleeWarrior + :public Unit { +protected: + int melee_r; +}; + +class MediumWarrior + :public Unit { +protected: + int medium_r; +}; + +class DistanceWarrior + :public Unit { +protected: + int distance_r; +}; + +class Scorpio + :public MeleeWarrior { //класс воинов "скорпион", ближний бой +public: + Scorpio(); +}; + +class Mammoth + :public MeleeWarrior { //класс воинов "мамонт", ближний бой +public: + Mammoth(); +}; + +class Frog + :public MediumWarrior { //класс воинов "лягушка", бой на средней дистанции +public: + Frog(); +}; + +class Kangaroo + :public MediumWarrior { //класс воинов "кенгуру", бой на средней дистанции +public: + Kangaroo(); +}; + +class Swallow + :public DistanceWarrior { //класс воинов "ласточка", дальний бой +public: + Swallow(); +}; + +class Hawk + :public DistanceWarrior { //класс воинов "ястреб", дальний бой +public: + Hawk(); +}; + + +#endif // UNIT_H