#pragma once
#include "World\TileObject.h"
#include <memory>
#include "World\Dungeon_Floor_1.h"
class Cell
//участок на уровне (базовый тайл (пол, стена итп), на котором лежат предметы и имеет координаты итп)
{private:
unsigned int x_coord, y_coord;
TileObject* _baseTile; //основной тайл клетки - пол, стена, вода итп
public:
Cell(unsigned int x, unsigned int y, const std::string& objectname);
~Cell();
Cell(const Cell &obj);
void draw(sf::RenderTarget & window);
};
/////////////////////////////////////////////////
#include "Cell.h"
Cell::Cell(unsigned int x, unsigned int y, const std::string& objectname): x_coord(x), y_coord(y)
{
if (objectname == "Dungeon_Floor_1") {
_baseTile = new Dungeon_Floor_1();
}
}
Cell::~Cell()
{
delete _baseTile;
}
Cell::Cell(const Cell & obj)
{ x_coord = obj.x_coord;
y_coord = obj.y_coord;
_baseTile = obj._baseTile;}
Вот здесь
if (objectname == "Dungeon_Floor_1") {
_baseTile = new Dungeon_Floor_1();
}
создается объект, отвечающий за определенный объект в игре через полиморфизм базового объекта. Это просто тест, можно ли мне как-нибудь преобразовывать строку "Dungeon_Floor_1"(которая в проверке) в название класса (new Dungeon_Floor_1()), чтобы избавиться от проверок, так как таких разных классов как Dungeon_Floor_1 будет мильон?
Допустим у вас есть классы
class TileObject {...};
class D_F_1 : public TileObject {...};
class D_F_2 : public TileObject {...};
class D_F_3 : public D_F_2 {...};
...
тогда создайте таблицу обьектов с их именами
std::unordered_map<string, TileObject*> table;
table["D_F_1"] = new D_F_1;
table["D_F_2"] = new D_F_2;
table["D_F_3"] = new D_F_3;
...
тогда вы можете записать
_baseTile = table[objectname];
вместо:
if (objectname == "Dungeon_Floor_1") {
_baseTile = new Dungeon_Floor_1();
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Нужно в форму LineEdit ввести текст, который обязательно должен начинаться с заглавной буквы
Есть задача на C++Задачу вроде решил правильно, ответы выводит нужные, но когда загружаю решение пишет ошибку
Отображаю файл в память:
В структуре tcp_info описаны вот такие параметры, описывающие RTT: